Definicja #
Apache JMeter to open-source'owe narzędzie do testowania wydajności, obciążenia i stresu aplikacji oraz usług. Oryginalnie zaprojektowane do testowania aplikacji webowych, dziś obsługuje wiele protokołów i rodzajów usług.
Obsługiwane protokoły i typy testów:
- HTTP/HTTPS — testy aplikacji webowych i REST API (najczęstsze zastosowanie)
- SOAP/XML-RPC — testowanie usług webowych
- FTP, LDAP, JDBC — bazy danych, serwery plików, katalogi
- JMS — kolejki komunikatów
- TCP — protokoły niskiego poziomu
Kluczowe koncepcje JMeter:
- Test Plan — główny kontener konfiguracji testu
- Thread Group — definiuje liczbę wirtualnych użytkowników (threads), czas ramp-up i liczbę iteracji
- Samplers — elementy wysyłające żądania: HTTP Request Sampler, JDBC Sampler, JMS Publisher
- Listeners — zbierają i prezentują wyniki: Summary Report, Aggregate Report, Graph Results, Response Time Graph
- Assertions — weryfikacja poprawności odpowiedzi (Response Assertion, JSON Assertion, Duration Assertion)
- Config Elements — HTTP Header Manager, Cookie Manager, CSV Data Set Config (parametryzacja danych)
- Timers — Think Time, Gaussian Timer — symulacja rzeczywistego zachowania użytkownika
Typy testów wydajnościowych realizowanych w JMeter:
- Load testing — weryfikacja zachowania przy oczekiwanym obciążeniu
- Stress testing — znalezienie punktu awarii (breaking point)
- Spike testing — nagłe skoki obciążenia
- Endurance testing — długotrwałe testy stabilności (memory leaks)
Zastosowania #
JMeter stosuje się do:
- Load testowania aplikacji webowych przed wdrożeniem — weryfikacja czy system wytrzyma oczekiwaną liczbę użytkowników
- Testowania REST API pod obciążeniem — sprawdzenie czasu odpowiedzi i stabilności endpointów przy wielu równoczesnych żądaniach
- Identyfikacji wąskich gardeł systemu — baza danych, serwer aplikacji, sieć — przez analizę metryk pod obciążeniem
- Testowania wydajności baz danych przez JDBC Sampler — direct query testing bez warstwy aplikacji
- Integracji z CI/CD pipeline — uruchamianie testów wydajnościowych automatycznie po deploymencie (JMeter CLI + raportowanie)
Ścieżka nauki #
JMeter ma graficzny interfejs GUI i tryb CLI. Zacznij od GUI do tworzenia testów, używaj CLI na CI/CD.
Zacznij od:
- Pobranie i uruchomienie JMeter (Java wymagana):
jmeter.bat(Windows) lubjmeter.sh(Linux/Mac) - Utwórz pierwszy Test Plan: Thread Group (5 użytkowników, ramp-up 10s) → HTTP Request Sampler → View Results Tree Listener
- Nagraj scenariusz testowy przez HTTP(S) Test Script Recorder — proxy przechwytujące ruch przeglądarki
- Uruchom test i przeanalizuj wyniki: throughput (req/s), Average Response Time, Error Rate w Summary Report
Następnie poznaj:
- Parametryzacja — CSV Data Set Config: różne dane logowania dla każdego wirtualnego użytkownika
- Korelacja — wyciąganie dynamicznych tokenów (CSRF, session ID) z odpowiedzi przez Regular Expression Extractor
- Asercje — Duration Assertion, Response Code Assertion, JSON Assertion
- Tryb CLI:
jmeter -n -t test.jmx -l results.jtl -e -o report/— bezgłowy tryb i generowanie raportu HTML - Alternatywy: k6 (skrypty JS, cloud-native, DevOps-friendly), Gatling (Scala DSL)
FAQ #
- Czym różni się JMeter od k6?
- JMeter to dojrzałe narzędzie GUI z szeroką gamą protokołów i pluginów — popularne w QA. k6 to nowoczesne narzędzie CLI z testami w JavaScript, łatwe do integracji z CI/CD i cloud (Grafana k6 Cloud). JMeter wymaga Javy, k6 jest lekki. Dla nowych projektów DevOps k6 jest coraz częściej wybierany.
- Ile wirtualnych użytkowników może symulować JMeter?
- JMeter może symulować tysiące wirtualnych użytkowników (threads) na jednej maszynie, ale liczba zależy od zasobów RAM i CPU. W praktyce 100-500 threads na maszynę to bezpieczny zakres dla stabilnych testów. Dla dużych testów używa się JMeter w trybie rozproszonym (Distributed Testing) — wiele maszyn slave pod kontrolą master.
- Czy JMeter jest darmowy?
- Tak — Apache JMeter jest w pełni open-source i darmowy (licencja Apache 2.0). Nie ma limitów użytkowników ani żądań. Płatne są jedynie usługi chmurowe do uruchamiania testów rozproszonych (np. BlazeMeter, który jest kompatybilny z JMeter).
- Ile zarabia Performance Tester?
- QA Engineer specjalizujący się w testach wydajnościowych zarabia w Polsce od 10 000 do 20 000 zł brutto. Znajomość JMeter lub k6 wraz z analizą metryk (Grafana, Prometheus) i rozumieniem architektury systemu to poszukiwany zestaw kompetencji.