# k6 нагрузочные тесты Сценарии нагрузочного тестирования API food-market через [k6](https://k6.io/). ## Подготовка ```bash # k6 standalone (Linux) wget -O- https://github.com/grafana/k6/releases/download/v0.55.0/k6-v0.55.0-linux-amd64.tar.gz | tar xz mv k6-*-linux-amd64/k6 ~/bin/ # проверить k6 version ``` ## Сценарии | Файл | Что меряет | |---|---| | `signup-burst.js` | 100 signup'ов за минуту — bootstrap новых tenant'ов под нагрузкой | | `retail-sales-parallel.js` | 1000 проведённых чеков параллельно за 5 минут (один tenant) | | `sales-report-heavy.js` | Чтение отчёта `/api/reports/sales` при 10 000 уже-существующих продажах | ## Запуск против stage ```bash BASE_URL=https://test.admin.food-market.kz \ k6 run signup-burst.js BASE_URL=https://test.admin.food-market.kz \ k6 run retail-sales-parallel.js BASE_URL=https://test.admin.food-market.kz \ k6 run sales-report-heavy.js ``` Результаты сводятся в `docs/performance-baseline.md`. ## Что k6 печатает ``` checks_total....: 100.00% 1000/1000 http_req_duration: p(50)=82ms p(95)=312ms p(99)=580ms http_req_failed.: 0.00% 0/1000 iteration_duration: avg=512ms ``` Это «человеческие» метрики. Тонкое — через `--out json=summary.json` или `--out csv=...` (k6 не имеет своего хранилища, только stdout/file).