k6 nebo JMeter: čím provádět zátěžové testy
k6 i JMeter jsou nástroje pro zátěžové testování. Dokážou vytvářet souběžnou zátěž a měřit, jak se systém chová pod tlakem; praktický rozsah testu však závisí na scénáři, konfiguraci a výkonu použitých generátorů zátěže. Nástroje se liší především způsobem tvorby scénářů, podporovanými protokoly a zapojením do vývoje. Správná volba proto závisí na tom, co a v jakém prostředí testujete.
V čem je problém
JMeter má vyspělý ekosystém a podporuje několik protokolů. Testovací plán lze připravit v grafickém rozhraní a uložit ve formátu JMX. U rozsáhlejších sad však může být kontrola změn a údržba méně přehledná než u scénářů psaných přímo v kódu. JMeter lze spouštět také v CI/CD, vyžaduje však vhodnou konfiguraci a způsob vyhodnocování výsledků.
k6 používá přístup založený na kódu: scénáře mohou žít v repozitáři vedle aplikace a běžet v pipeline. To usnadňuje kontrolu změn a spolupráci ve vývojovém týmu. Ani tento přístup však není automaticky nejlepší pro každý systém, zejména pokud potřebujete protokol, který k6 nepodporuje, nebo již máte hodnotnou sadu v jiném nástroji.
Jak se rozhodujeme
k6 je naší častou volbou pro HTTP a webová API. Scénáře se píší v JavaScriptu nebo TypeScriptu, lze je verzovat s kódem a spouštět v CI. Jeho lokální runner je open source; praktický počet virtuálních uživatelů a délku testu omezují především dostupné prostředky infrastruktury. Grafana zároveň nabízí placenou cloudovou službu, kterou pro lokální běh nepotřebujete.
JMeter zvolíme tam, kde má výhodu. Použijeme ho u starších protokolů mimo HTTP (JDBC, JMS, SOAP, FTP) nebo tehdy, když již máte stávající sadu v JMeteru, kterou má smysl využít namísto psaní nové. V takovém případě je ověřenou volbou a dobře plní svůj účel.
Praktický příklad, ve kterém byl JMeter součástí řešení navrženého od začátku a výsledky pomohly klientovi najít konkrétní úzké hrdlo, popisuje projekt automatizace webových a výkonnostních testů.
Locust je třetí možnost – zátěžové scénáře jako čistý kód v Pythonu, pokud chcete mít testování výkonu ve stejném jazyce jako zbytek sady.
Nástroj je prostředkem, nikoli cílem. Podstatné je, aby scénáře odpovídaly skutečnému chování vašich uživatelů a abyste z výsledku dokázali vyčíst, kde systém naráží na své hranice – to platí bez ohledu na to, zda běží k6, nebo JMeter.
Co z toho máte
- Nástroj vybraný podle toho, co testujete, nikoli podle popularity.
- Způsob správy scénářů, který odpovídá dovednostem týmu a zapadá do jeho vývojového procesu.
- Možnost provozovat jádro testů na open-source nástrojích a samostatně se rozhodovat o případných cloudových službách.
Další krok
Sepište si protokoly, stávající testy, jazyk týmu, způsob spouštění v CI/CD a očekávanou velikost zátěže. Teprve potom porovnejte nástroje podle toho, zda pokrývají vaše požadavky a zda je tým dokáže dlouhodobě udržovat.