Кто проводит нагрузочное тестирование?

«Кто проводит нагрузочное тестирование?» — вопрос из категории Тестирование производительности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Проведение нагрузочного тестирования — это зона ответственности нескольких ролей:

  1. Performance Test Engineer / QA Performance — ключевой специалист. Отвечает за планирование, выполнение тестов, анализ результатов и поиск узких мест.
  2. DevOps-инженер — помогает с развертыванием и настройкой тестового окружения, интеграцией тестов в CI/CD, сбором метрик инфраструктуры (CPU, память, сеть).
  3. Разработчик — участвует в анализе результатов, особенно для поиска и устранения узких мест в коде (например, неоптимальных запросов к БД).

Пример сценария нагрузочного теста на 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-инструменты), базовые знания сетей и инфраструктуры.