IT Systems Integration Consultant
Locust je open-source nástroj na záťažové testovanie napísaný v Pythone. Scenáre píšeš ako bežný Python kód, inštalácia trvá pár minút a výsledky sleduješ v reálnom čase v prehľadnom webovom rozhraní. Od prvého príkazu po prvé výsledky uplynie menej ako 30 minút.

V článku sa dozvieš:
Locust je open-source framework na záťažové testovanie (load testing) napísaný v Pythone. Umožňuje simulovať tisíce používateľov naraz a sledovať, ako server zvláda záťaž. Výsledkom testu je jasná odpoveď na otázku: zvládne tvoja aplikácia reálnu záťaž, alebo začne pri určitom počte súčasných požiadaviek zlyhávať?
Na rozdiel od nástrojov ako JMeter či Gatling používa Locust čisté Python skripty namiesto XML konfigurácií alebo grafického rozhrania. Môžeš tak využiť všetky štandardné Python knižnice, cykly aj logiku, ktoré poznáš z unit testov alebo API testovania. Pre testerov a vývojárov, ktorí už automatizujú v Pythone, je práca s nástrojom Locust prirodzeným rozšírením existujúcich zručností.
Projekt vznikol v roku 2011 a má aktívnu komunitu. Rovnaký skript môže bežať lokálne pre 10 používateľov aj distribuovane pre 100 000 bez potreby úprav v kóde. Práve kombinácia nízkej vstupnej bariéry a vysokej škálovateľnosti robí z Locust obľúbenú voľbu pre tímy pracujúce s Pythonom.
Základnou jednotkou v Locust je virtuálny používateľ (virtual user). Každý inštanciovaný objekt triedy HttpUser predstavuje jedného simulovaného používateľa, ktorý vykonáva HTTP požiadavky podľa definovaného scenára. Locust ich nazýva lokusty (locusts), odtiaľ pochádza názov nástroja. Pri spustení testu Locust vytvára nastavený počet virtuálnych používateľov postupne podľa zadaného tempa (spawn rate).
Každý virtuálny používateľ vyberá úlohy (@task metódy) náhodne podľa ich váhy a medzi úlohami čaká náhodný čas definovaný parametrom wait_time. Toto správanie realisticky napodobňuje skutočných používateľov, lebo ľudia neklikajú v pravidelných intervaloch. Výsledkom je organická záťaž, ktorá odhalí úzke miesta, ktoré by syntetická, pravidelná záťaž minula.
Locust priebežne meria tri základné metriky výkonnostného testovania (performance testing):
Všetky tieto hodnoty sú viditeľné v reálnom čase v prehľadnom webovom dashboarde na porte 8089.
Pre väčšie testy Locust podporuje master-worker architektúru, ktorá rozdeľuje role medzi dva typy uzlov:
Stačí pridať ďalší worker node a záťaž sa automaticky rozdelí medzi všetky workery. Celý distribuovaný test ovládaš z jedného webového UI na master node. Workery môžu bežať na rôznych fyzických serveroch alebo v kontajneroch (Docker, Kubernetes) a komunikujú cez jednoduchý socket protokol, čo minimalizuje overhead distribuovanej koordinácie.
Ak sa pýtaš, ako nainštalovať Locust, postup je jednoduchý. Prerekvizity sú minimálne: potrebuješ Python 3.9 alebo novší a nástroj pip. Locust nainštaluješ jedným príkazom, bez sťahovania archívov či manuálnej konfigurácie prostredia. Odporúča sa použiť virtuálne prostredie (venv), aby sa predišlo konfliktom medzi knižnicami a projekt zostal izolovaný.
Nainštaluj Locust cez pip:
pip install locust
Over inštaláciu. Mala by sa zobraziť aktuálna verzia:
locust --version
# Výstup: locust 2.x.x
Vytvor súbor locustfile.py a vlož do neho tento jednoduchý funkčný príklad:
from locust import HttpUser, task, between
class ApiUser(HttpUser):
wait_time = between(1, 3) # náhodné čakanie medzi požiadavkami (sekundy)
@task
def get_homepage(self):
self.client.get("/")
@task(3) # spustí sa 3x častejšie ako get_homepage
def get_api_status(self):
self.client.get("/api/status")
Čo znamenajú kľúčové časti tohto skriptu:
Ak chceš testovať endpoint s autentifikáciou, pridaj metódu on_start(), ktorá sa vykoná raz pri inicializácii každého virtuálneho používateľa. Je to ideálne miesto na login alebo získanie JWT tokenu. Podobne môžeš použiť on_stop() na cleanup po skončení testu, napríklad odhlásenie používateľa.
Locust automaticky sleduje HTTP stavové kódy a požiadavky s kódmi 4xx a 5xx označuje ako zlyhania (failures). Ak potrebuješ vlastnú logiku vyhodnocovania, môžeš explicitne označiť požiadavku ako úspešnú alebo neúspešnú pomocou response.success() a response.failure() priamo v tele testovacieho scenára. Je to užitočné napríklad pri testovaní endpointov, kde HTTP 200 ešte neznamená správny obsah odpovede, takže validácia dát je integrálnou súčasťou záťažového testu.
Predstav si konkrétny scenár: testuješ verejné REST API na staging prostredí. Chceš zistiť, ako server zvláda záťaž pri 100 súčasných používateľoch. Spustenie trvá dve minúty a výsledky uvidíš v reálnom čase.
záťažové testy sa spúšťajú na staging alebo lokálnom prostredí a nikdy nie na produkcii bez predchádzajúceho súhlasu a vopred naplánovaného okna? Záťažový test generuje stovky až tisíce požiadaviek za sekundu a produkčná databáza to pocíti.
Spusti Locust v termináli z adresára, kde sa nachádza locustfile.py:
locust -f locustfile.py
# Terminál vypíše niečo takéto:
# INFO/locust.main: Starting web interface at http://0.0.0.0:8089
# INFO/locust.main: Starting Locust 2.x.x
Locust teraz beží a čaká na tvoje inštrukcie cez webové rozhranie. Terminál zostáva aktívny, tak ho nezatváraj. Otvor prehliadač na http://localhost:8089.

Nakonfiguruj parametre testu:
Klikni Start a sleduj, ako sa test rozbieha.
V záložke Charts vidíš v prvých sekundách ramp-up fázu: počet aktívnych users plynulo rastie a spolu s ním stúpa RPS (Requests per Second). To je zdravý štart.
V záložke Statistics máš pre každý endpoint živé čísla. Pozri si tri kľúčové signály:

Po 2 až 3 minútach stabilnej záťaže máš dosť dát. Klikni Stop a Locust dobeží aktuálne požiadavky a zastaví generovanie záťaže. Výsledky zostávajú viditeľné v UI, kým neobnovíš stránku alebo nespustíš nový test.
Locust ti povie, kde problém je. Na identifikáciu prečo potrebuješ server-side metriky: pomalé SQL dotazy (EXPLAIN ANALYZE), vyťaženosť CPU a pamäte, alebo APM nástroj ako Datadog či New Relic. Locust je diagnostický štartovací bod, nie kompletný observability stack.
Spusti test dvakrát po sebe a porovnaj p95. Ak sa výrazne líši (napr. 180 ms vs. 450 ms), máš problém s nestabilitou prostredia: cache cold start alebo nespoľahlivý staging. Stabilné výsledky sú predpokladom zmysluplného záťažového testovania.
Pre zaradenie testu do CI/CD pipeline použi headless mode. Locust beží bez webového UI a riadi sa výhradne parametrami príkazového riadku:
locust -f locustfile.py --headless \
--users 100 --spawn-rate 10 \
--run-time 3m \
--host https://staging.api.example.com \
--csv=results \
--exit-code-on-error 1
--exit-code-on-error 1 – ak failure rate presiahne prah, Locust vráti exit kód 1 a pipeline zlyhá.Locust a JMeter sú dnes dve najpopulárnejšie open-source riešenia na záťažové testovanie, no každé slúži inému profilu tímov.
Locust je ideálna voľba, ak píšeš automatizované testy v Pythone. Scenáre sú čistý Python kód, žiadne XML ani GUI klikanie. Onboarding zaberá hodiny, nie dni, škálovanie na master-worker architektúru je jednoduché a nástroj je zdarma aj pre komerčné použitie. Slabina: primárne pokrýva HTTP/HTTPS, pre SOAP, JDBC alebo JMS potrebuješ custom klientov.
JMeter podporuje viac typov protokolov hneď po nainštalovaní a má veľkú komunitu používateľov. Je vhodný, ak tím nemá skúsenosti s Pythonom, testuje staršie systémy s neštandardnými protokolmi alebo potrebuje rozsiahle firemné reporty. Nevýhodou je, že sa ťažšie učí a konfigurácia pre komplexnejšie testy je v XML súboroch náročná na údržbu.
Ak píšeš automation testy v Pythone a testuješ REST API alebo mikroslužby, Locust je prirodzená voľba. Pre Java/JVM tímy stojí za zváženie Gatling (Scala DSL), pre JavaScript prostredie zase k6.
Locust toho zvládne oveľa viac ako spustiť základný HTTP test. Tu je päť funkcií, ktoré oceníš, keď tvoje testy začnú rásť:
Locust nie je obmedzený na HTTP. Vlastného klienta vytvoríš dedením z triedy User a implementáciou metód pre odosielanie požiadaviek a reportovanie výsledkov. Pre MQTT a SocketIO má Locust vlastné triedy a pre gRPC nájdeš vzorového klienta v oficiálnej dokumentácii Locust. Klientov pre WebSocket, Kafka a ďalšie protokoly udržiava komunita v repozitári locust-plugins na GitHub.
Pre generovanie záťaže v tisícoch concurrent users spustíš jeden master (locust --master) a ľubovoľný počet worker procesov (locust –worker –master-host=<IP>). Locust automaticky rozdelí virtuálnych používateľov medzi workery a agreguje výsledky do jedného dashboardu.
V GitHub Actions pridáš Locust ako krok po deploy na staging. Flag --exit-code-on-error 1 spôsobí zlyhanie buildu, ak failure rate presiahne definovaný prah. Threshold môžeš nastaviť aj cez vlastný listener na events.quitting.
Locust generuje CSV súbory so štatistikami (stats, history, failures) po každom behu. Pre real-time vizualizáciu môžeš posielať metriky priamo do kombinácie Prometheus a Grafana cez dostupný community plugin. Je to ideálne pre dlhodobé monitorovanie výkonnostného trendu a porovnávanie výsledkov medzi jednotlivými release verziami aplikácie.
Ak nechceš spravovať vlastnú worker infraštruktúru, Locust Cloud poskytuje managed distributed load testing s integrovanými reportmi, tímovou spoluprácou a historickými výsledkami. Je vhodný pre väčšie tímy, ktoré chcú škálovateľnosť bez DevOps overheadu.
Pri navrhovaní záťažových testov platí základné pravidlo: začni vždy s nízkym počtom virtuálnych používateľov a postupne zvyšuj záťaž v krokoch, takzvaný ramp-up prístup. Tým zistíš, pri akom počte concurrent users začína výkon aplikácie degradovať. Tento zlomový bod (performance baseline) je cennejším výstupom ako samotné číslo maximálneho zaťaženia, pretože definuje hranicu, pri ktorej je nutná optimalizácia kódu alebo infraštruktúry.
Locust je open-source framework na záťažové testovanie (load testing) napísaný v Pythone. Umožňuje definovať správanie virtuálnych používateľov ako Python kód a simulovať tisíce súbežných požiadaviek na server. Nástroj meria kľúčové metriky výkonnostného testovania (performance testing), teda response time, requests per second a failure rate, a zobrazuje ich v reálnom čase v prehľadnom webovom dashboarde.
Pre Python tímy testujúce REST API a mikroslužby áno – Locust ponúka jednoduchší onboarding, čistejší kód scenárov a ľahšie škálovanie. JMeter má širšiu protokolovú podporu (SOAP, JDBC, JMS) a väčšiu komunitu, čo ho robí vhodnejším pre legacy systémy alebo tímy bez Python skúsenosti. Rozhodujúcim faktorom je technologický stack tímu, typ testovaného systému a požiadavky na škálovanie.
Postačuje základná znalosť Pythonu: triedy, metódy, dekorátory a práca s HTTP požiadavkami. Ak vieš napísať jednoduchý Python skript a rozumieš konceptu objektovo-orientovaného programovania, prvý funkčný locustfile.py napíšeš do hodiny. Pokročilejšie funkcie ako custom klienti pre gRPC, distribuované testy alebo integrácia s CI/CD systémami vyžadujú hlbšie znalosti Pythonu a systémovej konfigurácie.
Áno, open-source verzia Locust je zdarma vrátane komerčného použitia – distribuuje sa pod licenciou MIT, ktorá kladie minimálne obmedzenia. Locust Cloud, teda managed hosted verzia s pokročilými reportmi, distribuovanou infraštruktúrou a tímovými funkciami, je komerčná platená služba. Pre väčšinu tímov a testovacích scenárov open-source verzia plne postačuje.
Locust v headless mode spúšťaš priamo z príkazového riadku bez spustenia webového UI. V GitHub Actions alebo Jenkins pipeline pridáš krok s príkazom locust --headless a parametrami --users, --spawn-rate, --run-time a --host. Pre automatické vyhodnotenie nastav --exit-code-on-error 1, čím build zlyhá, ak test zaznamená zlyhania. Výsledky v CSV formáte archivuj ako pipeline artefakt pre historické porovnanie výkonu.
Locust možno nie je najkomplexnejší nástroj na záťažové testovanie na trhu, no pre Python tímy testujúce REST API ponúka presne to podstatné – jednoduchý začiatok, flexibilné scenáre a okamžitý prehľad o výsledkoch. Testy píšeš v jazyku, ktorý už poznáš, a keď potrebuješ simulovať väčšiu záťaž, môžeš ich spustiť na viacerých počítačoch bez úprav kódu. Ak so záťažovým testovaním ešte len začínaš, Locust je výborná voľba.
Najviac sa však naučíš praxou. Vytvor si vlastný locustfile.py, spusti ho v staging prostredí a sleduj, ako sa aplikácia správa s rastúcim počtom virtuálnych používateľov. Keď začne výraznejšie rásť čas odozvy alebo pribúdať chybových požiadaviek, práve v tomto bode zistíš, čo znamená skutočné výkonnostné testovanie.
Súvisiace články