← Назад к вопросам

В чем измеряется объем нагрузки

1.0 Junior🔥 131 комментариев
#Теория тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Измерение объема нагрузки в тестировании производительности

Объем нагрузки в тестировании производительности измеряется комплексно через несколько ключевых метрик, которые можно разделить на две основные категории: пользовательские/операционные метрики и системные/ресурсные метрики.

Основные метрики для измерения объема нагрузки

1. Пользовательские метрики (User Load Metrics)

Эти метрики описывают нагрузку с точки зрения взаимодействия пользователей с системой.

  • Количество одновременных пользователей (Concurrent Users):
    *   **Активные пользователи (Active Users):** Пользователи, выполняющие действия в системе в данный момент (например, отправляющие запросы).
    *   **Пользователи в режиме ожидания (Simultaneous/Logged-in Users):** Пользователи, аутентифицированные в системе, но не обязательно активные.

  • Скорость запросов (Throughput):
    *   **Запросов в секунду (Requests Per Second, RPS) или операций в секунду (Transactions Per Second, TPS):** Прямо измеряет объем работы, которую система должна обрабатывать за единицу времени. Это одна из самых объективных метрик нагрузки.
    *   **Пример для API:** `1000 RPS` означает, что система получает тысячу HTTP-запросов каждую секунду.
    *   **Пример для базы данных:** `500 TPS` означает пять сотен транзакций (например, `INSERT` или `SELECT`) в секунду.

2. Объем данных (Data Volume)

Нагрузка часто зависит не только от количества операций, но и от объема обрабатываемых данных.

  • Размер данных в запросах и ответах: Средний и пиковый размер тела HTTP-запроса (например, JSON в POST /api/order) и HTTP-ответа.
  • Объем данных в хранилищах:
    *   Размер тестовой базы данных (например, `1 млн записей` в таблице `users`).
    *   Количество файлов и их общий объем в файловом хранилище или кэше.
  • Пропускная способность данных (Data Throughput): Измеряется в килобитах в секунду (Kbps), мегабитах в секунду (Mbps) или мегабайтах в секунду (MB/s). Критично для систем, работающих с медиапотоками или крупными файлами.

Как метрики связаны между собой

Объем нагрузки создается виртуальными пользователями (Virtual Users, VUs), которые в скриптах тестирования эмулируют поведение реальных пользователей. Эти VUs генерируют запросы (RPS/TPS), которые обрабатывают определенные объемы данных.

Пример настройки нагрузки в скрипте (на языке k6):

import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  // Этап нагрузки: измеряем объем через количество виртуальных пользователей и длительность
  stages: [
    { duration: '1m', target: 50 },   // Плавный рост до 50 одновременных пользователей за 1 минуту
    { duration: '3m', target: 50 },   // Стабильная нагрузка: 50 пользователей в течение 3 минут
    { duration: '1m', target: 200 },  // Рост до пика в 200 пользователей
    { duration: '2m', target: 200 },  // Пиковая нагрузка: 200 пользователей
    { duration: '1m', target: 0 },    // Плавный сброс до 0 (завершение)
  ],
};

export default function () {
  // Каждый виртуальный пользователь выполняет этот сценарий
  const response = http.get('https://api.example.com/items');
  
  // Проверка успешности запроса (еще одна важная метрика — процент ошибок)
  check(response, { 'status was 200': (r) => r.status === 200 });
  
  // Пауза между итерациями для эмуляции реального поведения пользователя
  sleep(1);
}

В этом примере объем нагрузки измеряется и контролируется через:

  • Цели по количеству VUs (target): 50, затем 200.
  • Длительность каждой фазы: минуты.
  • Результирующую скорость запросов (RPS), которую система api.example.com будет получать, можно увидеть в отчете после запуска теста.

Системные метрики как индикатор воспринимаемой нагрузки

Конечный эффект от приложенной пользовательской нагрузки измеряется на стороне сервера:

  • Использование ЦПУ (%): Показывает, насколько процессор загружен обработкой.
  • Использование памяти (RAM, в МБ/ГБ): Объем занятой оперативной памяти.
  • Использование дискового I/O (операций ввода-вывода в секунду, IOPS) и пропускной способности диска (MB/s).
  • Использование сети (Network Utilization, в Mbps): Загрузка сетевого интерфейса.
  • Утилизация пулов соединений (например, к базе данных).

Критерии выбора метрик

Выбор первичной метрики зависит от цели тестирования:

  • Тестирование на пропускную способность (Throughput Testing): Фокус на RPS/TPS.
  • Нагрузочное тестирование (Load Testing): Фокус на количестве одновременных пользователей при ожидаемой нагрузке.
  • Стресс-тестирование (Stress Testing): Постепенное увеличение нагрузки (пользователей или RPS) до предела и beyond.
  • Тестирование стабильности (Soak/Endurance Testing): Длительная нагрузка (часы, дни) с постоянным объемом (например, 100 пользователей), чтобы выявить утечки памяти.

Таким образом, объем нагрузки — это не одна цифра, а многомерная характеристика. Корректная постановка задачи звучит не как "протестируй под нагрузкой", а как "протестируй при 1000 одновременных пользователей, создающих до 200 RPS к API поиска, с базой данных в 10 млн записей, и измерь время отклика, процент ошибок и потребление ресурсов сервера". Именно совокупность этих измеримых параметров и позволяет объективно оценить, как система справляется с требуемым объемом работы.