Ответ
Проведение нагрузочного тестирования — это зона ответственности нескольких ролей:
- Performance Test Engineer / QA Performance — ключевой специалист. Отвечает за планирование, выполнение тестов, анализ результатов и поиск узких мест.
- DevOps-инженер — помогает с развертыванием и настройкой тестового окружения, интеграцией тестов в CI/CD, сбором метрик инфраструктуры (CPU, память, сеть).
- Разработчик — участвует в анализе результатов, особенно для поиска и устранения узких мест в коде (например, неоптимальных запросов к БД).
Пример сценария нагрузочного теста на k6:
import http from 'k6/http';
import { check, sleep } from 'k6';
import { Rate } from 'k6/metrics';
const errorRate = new Rate('errors');
export const options = {
stages: [
{ duration: '2m', target: 100 }, // Наращивание нагрузки до 100 VU
{ duration: '5m', target: 100 }, // Стабильная нагрузка
{ duration: '1m', target: 0 }, // Снижение нагрузки
],
thresholds: {
http_req_duration: ['p(95)<500'], // 95% запросов должны быть быстрее 500мс
'errors': ['rate<0.01'] // Частота ошибок менее 1%
}
};
export default function () {
const res = http.get('https://api.example.com/items');
const success = check(res, {
'status is 200': (r) => r.status === 200,
});
errorRate.add(!success);
sleep(1);
}
Необходимые навыки для performance-инженера: знание инструментов (JMeter, Gatling, k6), понимание метрик (RPS, latency, throughput, перцентили), умение анализировать логи и данные мониторинга (Grafana, APM-инструменты), базовые знания сетей и инфраструктуры.