Testy Wydajnościowe z K6 – web dashboard

K6

Loading

Testy wydajnościowe coraz częściej przestają być “opcjonalnym dodatkiem” do projektu, a stają się jednym z kluczowych elementów zapewnienia jakości aplikacji. Problemy wydajnościowe bardzo rzadko kończą się wyłącznie problemem technicznym — najczęściej wpływają bezpośrednio na biznes, użytkowników oraz stabilność systemów.

W świecie nowoczesnych aplikacji liczy się nie tylko to, czy system działa, ale również:

  • jak szybko odpowiada,
  • jak zachowuje się pod obciążeniem,
  • jak reaguje na większy ruch,
  • oraz kiedy zaczyna się degradacja wydajności.

Jednym z narzędzi, które w ostatnich latach mocno zyskało na popularności w obszarze performance testów, jest k6. Szczególnie ciekawym dodatkiem jest wbudowany web dashboard, który pozwala analizować wyniki testów praktycznie w czasie rzeczywistym — bez konieczności budowania całego środowiska observability. 

Czym jest K6

k6 to nowoczesne narzędzie do testów wydajnościowych rozwijane przez Grafana Labs.

Narzędzie pozwala tworzyć scenariusze testowe w JavaScript, dzięki czemu wejście w świat performance testów jest znacznie prostsze niż w przypadku wielu starszych rozwiązań.

K6 bardzo mocno wyróżnia się:

  • prostotą uruchamiania,
  • integracją z CI/CD,
  • nowoczesnym podejściem do definiowania scenariuszy,
  • możliwością uruchamiania testów lokalnie, w Dockerze lub chmurze,
  • bardzo dobrą integracją z ekosystemem Grafany,
  • możliwością budowy rozbudowanych dashboardów i analizy metryk.

Przykładowy prosty test może wyglądać tak:

 
import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
vus: 1,
duration: '30s',
};

export default function () {
http.get('https://example.com');
sleep(1);
}

W praktyce jednak K6 pozwala budować znacznie bardziej zaawansowane scenariusze:

  • testy obciążeniowe,
  • Stress testy
  • testy endurance,
  • spike testy,
  • i wiele wiele innych

Web Dashboard w K6

Jednym z ciekawszych elementów K6 jest wbudowany web dashboard.

Jeszcze jakiś czas temu, aby analizować wyniki “na żywo”, często trzeba było budować cały stack:

  • Prometheus,
  • Grafana,
  • InfluxDB,
  • dodatkowe eksportery,
  • własne dashboardy.

Dziś w wielu przypadkach można rozpocząć dużo szybciej.

Uruchomienie dashboardu jest bardzo proste:

k6 run script.js --out web-dashboard
 
Po uruchomieniu testu K6 wystawia lokalny dashboard dostępny pod adresem:
 
http://127.0.0.1:5665

Dashboard działa praktycznie od razu i pozwala obserwować:

  • liczbę requestów,
  • response time,
  • percentyle,
  • ilość błędów,
  • aktywnych użytkowników,
  • iteration duration,
  • throughput,
  • thresholdy,
  • status testu w czasie rzeczywistym.

To bardzo wygodne rozwiązanie szczególnie podczas:

  • debugowania testów
  • szybkiej analizy środowiska,
  • pierwszych kroków z performance testingiem,
  • developmentu scenariuszy testowych.

Dlaczego taki dashboard jest przydatny?

Jednym z częstych problemów podczas nauki testów wydajnościowych jest brak “widoczności” tego, co dzieje się w trakcie testu.

Sama konsola bardzo często nie daje pełnego obrazu sytuacji.

Web dashboard pozwala dużo szybciej zauważyć:

  • nagłe wzrosty response time,
  • zwiększającą się liczbę błędów,
  • problemy z konkretnymi endpointami,
  • degradację wydajności,
  • niestabilność środowiska,
  • problemy z konfiguracją testów.

W praktyce bardzo często już kilka minut obserwacji wykresów pozwala wychwycić problemy, które później mogłyby doprowadzić do:

  • spadku konwersji,
  • przeciążenia systemu,
  • timeoutów,
  • problemów użytkowników,
  • a finalnie — realnych strat biznesowych.

Rozwinięcie — kiedy sam web dashboard przestaje wystarczać?

Wbudowany dashboard jest bardzo wygodny, ale warto pamiętać, że ma swoje ograniczenia.

Przy większych projektach organizacje często przechodzą na bardziej rozbudowane rozwiązania:

  • Prometheus + Grafana,
  • Grafana Cloud,
  • Loki,
  • własne dashboardy biznesowe,
  • rozwiązania oparte o ELK

Pozwala to:

  • przechowywać historię testów,
  • porównywać runy,
  • budować alerting,
  • analizować trendy,
  • łączyć dane aplikacyjne z infrastrukturą,
  • analizować korelacje między backendem, bazami danych i wydajnością aplikacji.

W wielu organizacjach performance testing zaczyna być dziś elementem szeroko rozumianego observability oraz reliability engineering.

Podsumowanie

k6 to jedno z najciekawszych narzędzi do nowoczesnych testów wydajnościowych dostępnych obecnie na rynku. Szczególnie w czasach AI – gdzie możemy tworzyć rozwiązania „z kodu”.

Wbudowany web dashboard sprawia, że rozpoczęcie pracy z performance testingiem jest znacznie prostsze niż jeszcze kilka lat temu. Bez budowania rozbudowanego środowiska można bardzo szybko:

  • uruchomić test,
  • obserwować metryki,
  • analizować zachowanie aplikacji,
  • wychwytywać potencjalne problemy wydajnościowe.

To świetny punkt wejścia zarówno dla osób rozpoczynających przygodę z testami wydajnościowymi, jak i dla bardziej zaawansowanych zespołów QA, które chcą szybciej analizować swoje środowiska i aplikacje.