523просмотров
28 июля 2025 г.
stats📷 ФотоScore: 575
Шпаргалка по k6 k6 - это мощный, лёгкий инструмент для нагрузочного тестирования написанный на golang. Ключевые понятия VUs (Virtual Users) - виртуальные пользователи, имитирующие реальных юзеров.
Iterations - сколько раз каждый VU выполнит сценарий.
Stages - ступени нагрузки (рост → пик → спад).
Thresholds - пороги для успешности теста (например, 95% запросов < 500мс).
Checks - проверки ответов (статус 200, наличие текста). Не ломают тест, но помогают анализировать.
RPS (Requests Per Second) - количество запросов в секунду. Можно ограничить.
Duration - длительность теста (например, 1m). Базовый скрипт import http from 'k6/http';
import { check } from 'k6'; export default function () { const url = 'https://invest-cat.ru'; const payload = JSON.stringify({ username: 'test', password: '123456', }); const headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer token123', }; const cookies = { session_id: 'abc123', }; const res = http.post(url, payload, { headers: headers, cookies: cookies, }); check(res, { 'Status 200': (r) => r.status === 200, 'Has session cookie': (r) => r.cookies.session_id[0] !== '', });
} Режимы нагрузки 1) Постоянная: export const options = { vus: 20, duration: '1m',
}; 2) Ступенчатая: export const options = { stages: [ { duration: '30s', target: 20 }, // рост до 20 VUs { duration: '1m', target: 20 }, // удержание 20 VUs { duration: '30s', target: 0 }, // спад до 0 VUs ],
}; 3) Ограничение по RPS: export const options = { rps: 100, // не более 100 запросов в секунду
}; Проверки (не завершают тест при провале, но фиксируют ошибки): check(res, { 'status 200': (r) => r.status === 200, 'has data': (r) => r.body.includes('data'),
}); Пороги (если не выполняются - тест считается проваленным): thresholds: { http_req_duration: ['p(95)<500'], // 95% запросов быстрее 500мс http_req_failed: ['rate<0.01'], // ошибок <1%
} Основные метрики http_req_duration — общее время запроса.
http_req_waiting - время до первого байта (TTFB).
http_req_failed - процент неудачных запросов (ошибки/таймауты).
data_received - объём полученных данных.
vus — текущее количество активных пользователей. Команды запуска # Простой запуск
k6 run script.js # Запуск с увеличением лимита VUs (по умолчанию max=256)
k6 run --vus 100 --duration 1m script.js # Запуск с выводом JSON-отчёта
k6 run --out json=report.json script.js # Генерация HTML-отчёта
k6 run script.js -o json=report.json && k6 convert report.json -O report.html #load_testing