Historycznie wydajność oprogramowania była testowana po głównej części funkcjonalnej — programiści uruchamiali skrypty ręcznie lub zbierali wskaźniki za pomocą narzędzi takich jak JMeter. Przy masowym przejściu na DevOps i CI/CD pojawiła się potrzeba automatyzacji tych procesów i uzyskiwania metryk na każdym etapie dostawy.
Problem komplikuje się tym, że automatyzacja obciążenia — to nie tylko uruchamianie gotowych testów, ale również precyzyjne dostosowanie scenariuszy obciążenia, reprodukcja profilu użytkowników, emulacja rzeczywistych sieci, uwzględnianie latencji, ograniczenia sprzętowe testów.
Nowoczesne rozwiązanie — wdrożenie specjalistycznych narzędzi (np. Gatling, Locust, k6), tworzenie scenariuszy z parametryzacją profilu użytkowników, integracja testowania wydajności w CI, automatyzacja gromadzenia i analizy metryk, alerty przy pogorszeniu wydajności.
Kluczowe cechy:
Czy jest prawdą, że automatyzacja "obciążeniowców" jest dozwolona tylko na produkcji?
Nie. Automatyczne testy wydajności i stresowe można przeprowadzać na dedykowanej aplikacji/stanowisku testowym, aby nie naruszać SLA. Automatyzacja ich jest wręcz preferowana przed wprowadzeniem do produkcji.
Czy jeśli autotesty obciążenia przechodzą, można być pewnym rzeczywistego doświadczenia użytkownika?
Nie — autotesty dają jedynie uśredniony obraz. Zachowanie rzeczywistych użytkowników może się różnić z powodu warunków sieciowych, używanych platform i innych czynników, które ciężko emulować jeden-do-jednego.
Czy warto opierać się tylko na średnich wartościach czasu odpowiedzi (response time)?
Nie. Bardzo ważne jest uwzględnienie percentyla (na przykład 95, 99), ponieważ średnie mogą być zniekształcone przez wartości odstające, a to właśnie wartości ogonowe najczęściej wpływają na UX.
Firma wdrożyła autotesty wydajności tylko na logowanie do systemu: skrypty przetwarzały 1000 logowań, analizowały średni czas odpowiedzi i uznano, że problem został rozwiązany. Przy pierwszym rzeczywistym uruchomieniu wystąpiły masowe time-outy — okazało się, że równoległe „ciężkie” operacje biznesowe nie zostały uwzględnione, API padało pod obciążeniem.
Zalety:
Wady:
W innej drużynie cały profil obciążenia został opracowany na podstawie monitorowania produkcji, oddzielne skrypty emulowały szczytową aktywność z różnych urządzeń i sieci. Wszystkie wyniki były automatycznie porównywane z wzorcem, a odchylenia powyżej 5% wywoływały alerty i wstrzymanie wydania.
Zalety:
Wady: