AI-asistované performance testing v Locuste
Klasické záťažové testy majú problém: simulujú naivného používateľa. Jeden login za sekundu, jeden click, jeden POST. Realita je iná — používatelia otvoria 5 tabov, opustia checkout na 3 minúty, vrátia sa, skúsia 2 platby. AI vie toto správanie modelovať realistickejšie než ručne napísaný Locust script.
Tento článok ukazuje, ako postaviť AI-powered Locust setup s realistickým user behaviour modelom.
Čo je Locust a prečo nie JMeter
Locust je Python-based framework pre distribuované záťažové testovanie. Oproti JMeter:
- Testy píšeš v Pythone (nie v clickaním v UI).
- Jednoduchšie distribuuje medzi workers.
- Natívna podpora pre complex user behaviour (task sets, weights).
- Live web UI s real-time metrikami.
Pre AI-integrované scenáre je Locust jednoznačne lepšia voľba — Python stack, flexibilita.
Tradičný Locust script vs. realistický
Klasika — all users robia to isté:
from locust import HttpUser, task, between
class WebsiteUser(HttpUser):
wait_time = between(1, 3)
@task
def browse(self):
self.client.get("/")
self.client.get("/products")
self.client.get("/products/42")
Realitou je, že 60 % používateľov sú „window shoppers", 25 % rozmýšľajú o kúpe a 15 % reálne kúpia. AI-modelovaná verzia:
from locust import HttpUser, TaskSet, task, between
import random
class WindowShopper(TaskSet):
@task(10)
def browse_homepage(self): self.client.get("/")
@task(8)
def view_category(self): self.client.get(f"/category/{random.randint(1,20)}")
@task(3)
def view_product(self): self.client.get(f"/products/{random.randint(1,500)}")
@task(1)
def abandon(self): self.interrupt()
class ActiveBuyer(TaskSet):
@task(5)
def add_to_cart(self):
self.client.post("/cart/add", json={"product_id": random.randint(1,500)})
@task(3)
def view_cart(self): self.client.get("/cart")
@task(2)
def checkout(self):
self.client.post("/checkout", json={"payment_method": "card"})
class RealisticUser(HttpUser):
wait_time = between(2, 8)
tasks = {WindowShopper: 60, ActiveBuyer: 15, FreshBrowser: 25}
Weights {60, 15, 25} reflektujú reálny conversion funnel.
Kde AI prichádza do hry
Tieto dáta získaš nie z vlastnej hlavy, ale z Google Analytics / Mixpanel eventu. AI to spracuje a vygeneruje Locust script:
> Stiahni posledných 7 dní eventu z cypress/data/ga-exports/. Analyzuj user flows a vygeneruj Locust script, ktorý simuluje realistické správanie s weights podľa skutočnej frekvencie eventu. Zohľadni session duration distribúciu.
Claude prečíta CSV export z GA, spočíta prechody medzi stránkami a vygeneruje TaskSet-y s správnymi weights.
Detekcia anomálií v behu
Pri každom beh máte time-series RPS, p95 latency, error rate. AI anomaly detector (napr. Prophet alebo jednoduchý Isolation Forest) upozorní:
import pandas as pd
from sklearn.ensemble import IsolationForest
# Načítaj metriky z Locust stats CSV
df = pd.read_csv('locust_stats_history.csv')
features = df[['num_requests', 'avg_response_time', 'fail_ratio']]
model = IsolationForest(contamination=0.05)
df['anomaly'] = model.fit_predict(features)
anomalies = df[df['anomaly'] == -1]
if not anomalies.empty:
print(f"⚠ Detected {len(anomalies)} anomalies:")
print(anomalies[['timestamp', 'avg_response_time', 'fail_ratio']])
Anomálie sa zvyčajne zhodujú s deployment eventmi alebo DB locking issues — čo by ti bez AI trvalo hodiny grep-ovaním logov.
Integrácia do CI
# Jenkinsfile stage
stage('Performance test') {
steps {
sh 'locust --headless -u 500 -r 20 -t 10m --html report.html'
sh 'python3 analyze_anomalies.py'
}
post {
always {
archiveArtifacts 'report.html'
slackSend(
channel: '#perf-alerts',
message: "Performance test: ${currentBuild.result}"
)
}
}
}
Reálny use-case: školský zápisový portál
Klient z odvetvia školstva má portál, kde sa v septembri prihlasujú 50 000 rodičov naraz. Klasický záťažový test s 500 stabilnými userami by úspech nezachytil. AI-modelovaný scenár:
- Burst simulation — všetci naraz v 07:00
- 70 % prvý login (cold cache), 30 % session restart
- Reálne thinking time (rodičia čítajú formuláre 2–5 min)
- Retry behaviour pri 5xx odpovedi
Výsledok: odhalili sme connection pool limit, ktorý by v produkcii zavinil pád o 5 minút po spustení. Oprava pred go-live.
Keď AI k Locustu nepotrebujete
- Jednoduchý baseline test „servor zvládne 100 RPS?" — tradičný Locust bez AI.
- Malá aplikácia s jednoduchým flow (prihlás + jedna operácia).
- Keď nemáte dáta o reálnom správaní — musíš začať od analytiky.
Chcete rovnaký prístup u vás? Napíšte nám — dohodneme 30-minútový discovery call.