P
Purple Team Diary's
@purple_team_diary419 подп.
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
523
просмотров
2771
символов
Нет
эмодзи
Да
медиа

Другие посты @purple_team_diary

Все посты канала →
Шпаргалка по k6 k6 - это мощный, лёгкий инструмент для нагру — @purple_team_diary | PostSniper