Testy obciążenia, stresu i benchmarków
Twoje API obsługuje 500 zapytań na sekundę na stagingu i wszyscy świętują. Potem przychodzi Black Friday, ruch skacze do 3000 rps, a pula połączeń z bazą danych wyczerpuje się w ciągu minut. Wykres czasu odpowiedzi wygląda jak kij hokejowy, a Twój CEO obserwuje dashboard uptime. Testowanie wydajności nie jest opcjonalne dla systemów produkcyjnych — a AI sprawia, że budowanie kompleksowych zestawów testów wydajnościowych jest dramatycznie łatwiejsze.
Czego się nauczysz
Dział zatytułowany „Czego się nauczysz”- Generowanie testów obciążenia k6 i Artillery z promptów AI
- Wzorce testów stresu znajdujących punkt załamania Twojego systemu w bezpieczny sposób
- Ciągły benchmarking w CI wyłapujący regresje wydajności
- Analizę wąskich gardeł wydajności wspomaganą AI na podstawie wyników testów
- Realistyczną symulację wzorców ruchu dla Twojego konkretnego przypadku użycia
Generowanie testów obciążenia
Dział zatytułowany „Generowanie testów obciążenia”Generate a k6 load test for our checkout API:
Scenario: Simulate a flash sale with ramping traffic- Ramp from 0 to 100 virtual users over 2 minutes- Hold at 100 VUs for 5 minutes (steady state)- Spike to 500 VUs for 1 minute (flash sale moment)- Return to 100 VUs for 2 minutes (recovery)- Ramp down to 0 over 1 minute
API calls per virtual user iteration:1. POST /api/auth/login (use test credentials from env)2. GET /api/products?category=sale (browse sale items)3. POST /api/cart/items (add random product)4. POST /api/checkout (complete purchase with test payment)
Thresholds:- p95 response time < 500ms during steady state- p99 response time < 2000ms during spike- Error rate < 1% at all times- Checkout success rate > 99%
Save to /tests/performance/checkout-load.k6.jsclaude "Create a comprehensive k6 performance test suite:
1. /tests/performance/checkout-load.k6.js - Checkout flow load test - Ramping traffic pattern: 0 -> 100 -> 500 -> 100 -> 0 VUs - Realistic user journey (login, browse, cart, checkout) - SLA thresholds for response time and error rate
2. /tests/performance/api-stress.k6.js - API endpoint stress test - Test each critical endpoint individually - Find the breaking point (ramp until errors > 5%) - Report max throughput per endpoint
3. /tests/performance/helpers/auth.js - Shared auth helper - Login and cache tokens - Token refresh handling
4. package.json scripts: - test:perf:load - Run load tests - test:perf:stress - Run stress tests - test:perf:smoke - Quick 30-second smoke test
Include realistic test data generation for each scenario."Create a performance testing suite for this project:1. Analyze the API routes to identify critical endpoints2. Generate k6 load tests for the top 5 most important flows3. Create stress tests that find breaking points4. Add performance smoke tests for CI integration5. Create a PR with the test suite and documentation
Include realistic traffic patterns based on typical SaaS usage.Testy stresu: znajdowanie punktu załamania
Dział zatytułowany „Testy stresu: znajdowanie punktu załamania”Ciągły benchmarking w CI
Dział zatytułowany „Ciągły benchmarking w CI”Automatyczne wykrywanie regresji wydajności
Dział zatytułowany „Automatyczne wykrywanie regresji wydajności”Analiza wyników wydajności z AI
Dział zatytułowany „Analiza wyników wydajności z AI”Po uruchomieniu testów obciążenia narzędzia AI mogą pomóc zinterpretować wyniki.
Testowanie wydajności bazy danych
Dział zatytułowany „Testowanie wydajności bazy danych”Gdy coś się zepsuje
Dział zatytułowany „Gdy coś się zepsuje”“Testy obciążenia przechodzą lokalnie, ale system produkcyjny jest wolniejszy.” Twoje lokalne środowisko nie odpowiada produkcji. Uruchamiaj testy wydajności na środowisku stagingowym odzwierciedlającym infrastrukturę produkcyjną (ten sam rozmiar bazy danych, to samo opóźnienie sieciowe, te same limity połączeń). Nigdy nie używaj lokalnych baz danych do testów obciążenia.
“Testy dają niespójne wyniki między uruchomieniami.” Testy wydajności są z natury szumne. Uruchom każdy scenariusz trzy razy i użyj mediany. Ustal akceptowalne pasma wariancji (plus minus 15%). Failuj tylko gdy mediana przekracza próg, nie poszczególne uruchomienia.
“Nie możemy uruchamiać testów obciążenia w CI, bo trwają zbyt długo.” Użyj podejścia warstwowego: smoke testy (30 sekund) na każdym PR, testy obciążenia (10 minut) w nocy, pełne testy stresu co tydzień. Smoke test łapie oczywiste regresje; dłuższe testy łapią subtelne.
“AI wygenerowało testy obciążenia nieodpowiadające prawdziwym wzorcom ruchu.” Daj AI Twoje faktyczne dane o ruchu. Wyeksportuj próbkę z analityk: “Our traffic peaks at 2pm EST, 60% of requests are GET /api/products, and the average user session makes 12 API calls over 8 minutes.”