Wyślij zapytanie Dołącz do Sii

Narzędzia do testów wydajnościowych stanowią niezastąpione wsparcie dla programistów, pozwalając na badanie wydajności i skalowalności aplikacji podczas rosnącego obciążenia. Warto jednak zaznaczyć, że nie wszystkie funkcjonalności są dostępne w każdym narzędziu, szczególnie w przypadku rozwiązań open-source.

W przypadku pracy z nowymi, mniej popularnymi narzędziami, często potrzebujemy sięgnąć po niestandardowe rozwiązania. W takich momentach rozszerzenia odgrywają kluczową rolę, umożliwiając programistom dodawanie niestandardowych funkcji do narzędzi do testów wydajnościowych. Dzięki nim możliwe jest zwielokrotnienie potencjału narzędzi oraz dostosowanie ich do konkretnych wymagań projektu, niezależnie od tego, czy chodzi o symulację rzeczywistego obciążenia, integrację z innymi narzędziami, czy monitorowanie dodatkowych metryk.

Rozszerzenia stanowią zatem kluczowy element, łączący dostępne funkcjonalności narzędzi z indywidualnymi potrzebami projektu.

xk6

W k6 istnieje możliwość tworzenia własnych rozszerzeń dzięki narzędziu xk6. Umożliwia ono programistom rozwijanie rozszerzeń i pluginów, znacząco zwiększających możliwości k6. Dzięki tej elastyczności, społeczność deweloperów może łatwo tworzyć niestandardowe narzędzia, które doskonale spełniają specyficzne wymagania projektów testowych. Część z dostępnych rozszerzeń można znaleźć w dokumentacji k6.

Instalacja narzędzia jest prosta i wygląda następująco:

Instalacja xk6
Ryc. 1 Instalacja xk6

Po pomyślnej instalacji jesteśmy gotowi do użycia xk6. Zanim jednak do tego przystąpimy, przejdźmy do napisania pierwszego rozszerzenia.

Implementacja pierwszego rozszerzenia

Na początek wybierzmy funkcjonalność, którą będziemy chcieli pokryć protokół smtp. SMTP (ang. Simple Mail Transfer Protocol) to protokół komunikacyjny używany do przesyłania wiadomości e-mail pomiędzy serwerami pocztowymi przez sieć internetową.

Kolejnym krokiem jest napisanie prostego szablonu, który następnie będziemy rozbudowywać o dodatkowe części.

Napisanie szablonu
Ryc. 2 Napisanie szablonu

Skrypt rejestruje moduł o nazwie „k6/x/smtp” za pomocą funkcji modules.Register. Rejestracja umożliwia późniejsze używanie tego modułu w skryptach testowych napisanych w języku JavaScript. Kolejnym etapem jest inicjalizacja modułu go. Użyjemy do tego poniższego polecenia.

Inicjalizacja modułu GO
Ryc. 3 Inicjalizacja modułu GO

Załóżmy, że będziemy chcieli zdefiniować w teście jedną funkcję odpowiedzialną za równocześnie uwierzytelnienie jak i przesłanie emaila. Na podstawie dostępnej dokumentacji smtp zaimplementujmy funkcjonalność, abyśmy mogli wykorzystać je jako rozszerzenie.

Implementacja funkcjonalności
Ryc. 4 Implementacja funkcjonalności

W zaimplementowanej logice zawierają się następujące elementy:

  • Struktura options – definiowana jest struktura o nazwie options, która zawiera pola: Subject, Message oraz UDW. Są to opcjonalne parametry, które mogą być przekazywane podczas wysyłania e-maila.
  • Funkcja plainAuth – jest to pomocnicza funkcja, która tworzy obiekt smtp.Auth przy użyciu autentykacji PlainAuth. Autentykacja ta wymaga podania hosta, hasła i nadawcy.
  • Funkcja SendMail – główna funkcja, która realizuje wysyłanie e-maila. Przyjmuje ona jako parametry: host, port, nadawcę, hasło, odbiorcę oraz opcje (strukturę options). Na podstawie tych parametrów tworzona jest wiadomość e-mail, a następnie jest ona wysyłana za pomocą smtp.SendMail.

Go mod tidy to polecenie, które synchronizuje plik go .mod z rzeczywistymi zależnościami używanymi w naszym kodzie. Zastosujmy je, aby zsynchronizować nasz projekt.

Synchronizacja projektu
Ryc. 5 Synchronizacja projektu

Budowanie scenariusza

Paczki binarne k6 możemy budować za pomocą xk6 na systemie lokalnym bądź w dockerze. Drugie z rozwiązań jest bardziej stabilne, ponieważ niweluje możliwość błędów po stronie używanego systemu bądź dystrybucji. Do tego konieczne jest jednak zbudowanie obrazu. Jego przykład możecie znaleźć w moim repozytorium.

Przejdźmy do budowy obrazu lokalnie.

Budowa obrazu
Ryc. 6 Budowa obrazu

W ten sposób zostanie utworzony plik binarny o nazwie k6. Przykład skryptu, który możemy uruchomić za pomocą rozszerzenia wygląda następująco.

Przykładowy skrypt
Ryc. 7 Przykładowy skrypt

Po uruchomieniu k6 z pomocą pliku binarnego zamiast systemowego polecenia, będziemy mogli skorzystać z biblioteki wewnątrz scenariuszy testowych.

Podsumowanie

W dzisiejszej, ósmej części serii, zgłębiliśmy temat rozszerzeń w k6 i zrozumieliśmy, jak istotną rolę pełnią w rozbudowie funkcjonalności tego narzędzia. Poznaliśmy definicję rozszerzeń jako niestandardowych dodatków, które umożliwiają programistom dostosowanie k6 do specyficznych potrzeb projektu.

W artykule skonstruowaliśmy własne rozszerzenie k6 od podstaw, co pozwoliło nam zrozumieć, jak krok po kroku implementować niestandardowe funkcje w tym narzędziu. Dzięki praktycznym przykładom mieliśmy okazję zobaczyć, jak elastyczny i adaptowalny jest k6 dzięki możliwościom rozszerzeń.

Jest to też ostatni artykuł z serii „Wydajność pod kontrolą z k6”, w którym kończymy poznawanie k6 od zera. Dla wszystkich, którzy wytrwali i śledzili naszą serię od pierwszego artykułu, chciałbym wyrazić szczere podziękowania 😊

Mam nadzieję, że zyskaliście wgląd w możliwości i potencjał, jakie oferuje k6, oraz że zdobyliście cenne umiejętności potrzebne do skutecznego testowania wydajności aplikacji.

***

Jeśli jeszcze nie mieliście okazji zapoznać się z artykułami z serii o narzędziu k6, znajdziecie je tutaj:

Ponadto, zachęcam do zapoznania się z Repozytorium projektu oraz Repozytorium poprzednich części.

5/5 ( głos: 1)
Ocena:
5/5 ( głos: 1)
Autor
Avatar
Grzegorz Piechnik

Performance Test Engineer z udokumentowanym doświadczeniem w branży bankowej, giełdowej i streamingowej. Jego praca skupiona jest głównie na pełnej automatyzacji procesów wydajnościowych oraz zarządzaniu obserwowalnością w systemach. Poza pracą prowadzi bloga dotyczącego CyberSecurity, Devops i wydajności aplikacji oraz zajmuje się rozwojem narzędzi open source. Ponadto edukuje, szkoli i wprowadza nowe osoby do branży IT

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Może Cię również zainteresować

Pokaż więcej artykułów

Bądź na bieżąco

Zasubskrybuj naszego bloga i otrzymuj informacje o najnowszych wpisach.

Otrzymaj ofertę

Jeśli chcesz dowiedzieć się więcej na temat oferty Sii, skontaktuj się z nami.

Wyślij zapytanie Wyślij zapytanie

Natalia Competency Center Director

Get an offer

Dołącz do Sii

Znajdź idealną pracę – zapoznaj się z naszą ofertą rekrutacyjną i aplikuj.

Aplikuj Aplikuj

Paweł Process Owner

Join Sii

ZATWIERDŹ

This content is available only in one language version.
You will be redirected to home page.

Are you sure you want to leave this page?