Тестирование производительности
Определить эксперимент
Задай состав операций, размеры и распределение входных данных, интенсивность запросов или параллелизм, длительность, прогрев, состояние кеша, окружение и критерии приёмки. Выбирай обычную, стрессовую, длительную или ограниченную регрессионную проверку под фактический вопрос. Не превращай каждую проверку задержки в тест насыщения.
Обеспечить достоверность измерений
- Различай плановую и достигнутую нагрузку. Фиксированный набор клиентов, каждый из которых ждёт ответа, при замедлении сервиса может отправлять меньше запросов. Это не доказывает, что целевая интенсивность поддерживалась.
- Определи начало и конец измерения задержки, включая учёт очередей, повторов и таймаутов. Показывай ошибки вместе с задержками успешных ответов; быстрые отказы или исключённые медленные запросы не должны придавать неисправному запуску вид исправного.
- Наблюдай генератор нагрузки вместе с целевой системой. CPU генератора, ограничения соединений или конкуренция за тестовые данные могут ограничить нагрузку раньше, чем сервис достигнет своей ёмкости.
- Сохраняй сопоставимость окружений, наборов данных, состояния кеша и нагрузки базового варианта и кандидата. Отделяй прогрев от окна измерения; при различиях сообщай о них, а не приписывай результат изменению кода.
- При трактовке хвостовых задержек сохраняй группы операций и объёмы выборок. Не усредняй перцентили разных экземпляров так, будто это перцентиль всех запросов. При наличии используй совместимые сырые измерения или объединяемые распределения.
- Для проверок с существенным воздействием определи условия остановки и пределы ресурсов. Используй только разрешённое окружение и нагрузку; недоступность тестовой среды — ограничение, а не повод испытывать ёмкость production.
Приёмка и результат
Оценивай заявленные критерии вместе: задержки, ошибки, успешную пропускную способность и существенные ограничения ресурсов. Запуск, ускорившийся только за счёт отклонения работы, не соответствует неизменной цели надёжности. Укажи, если объёма выборки или разброса между запусками недостаточно для заявленного вывода о хвосте распределения или регрессии.
Верни конфигурацию нагрузки, окно измерения, данные базового варианта и кандидата, достигнутую нагрузку, ошибки и решение pass/fail/inconclusive по каждому критерию. Гипотезы об узком месте обозначай отдельно: измеренное насыщение само по себе не показывает причину.
Если запрошен только план, подготовь выполнимый план с нужными сигналами и условиями остановки, не заявляя о проведённом нагрузочном тесте. templates/performance-report.md необязателен и используется при доступном репозитории.
1---2name: performance-testing3description: Спроектировать, выполнить или интерпретировать нагрузочную проверку задержек, ошибок, пропускной способности, ёмкости или регрессий. Применять для достоверности измерений и решений о приёмке; диагностика и оптимизация узкого места относятся к анализу производительности.4---56# Тестирование производительности78## Определить эксперимент910Задай состав операций, размеры и распределение входных данных, интенсивность запросов или параллелизм, длительность, прогрев, состояние кеша, окружение и критерии приёмки. Выбирай обычную, стрессовую, длительную или ограниченную регрессионную проверку под фактический вопрос. Не превращай каждую проверку задержки в тест насыщения.1112## Обеспечить достоверность измерений1314- Различай плановую и достигнутую нагрузку. Фиксированный набор клиентов, каждый из которых ждёт ответа, при замедлении сервиса может отправлять меньше запросов. Это не доказывает, что целевая интенсивность поддерживалась.15- Определи начало и конец измерения задержки, включая учёт очередей, повторов и таймаутов. Показывай ошибки вместе с задержками успешных ответов; быстрые отказы или исключённые медленные запросы не должны придавать неисправному запуску вид исправного.16- Наблюдай генератор нагрузки вместе с целевой системой. CPU генератора, ограничения соединений или конкуренция за тестовые данные могут ограничить нагрузку раньше, чем сервис достигнет своей ёмкости.17- Сохраняй сопоставимость окружений, наборов данных, состояния кеша и нагрузки базового варианта и кандидата. Отделяй прогрев от окна измерения; при различиях сообщай о них, а не приписывай результат изменению кода.18- При трактовке хвостовых задержек сохраняй группы операций и объёмы выборок. Не усредняй перцентили разных экземпляров так, будто это перцентиль всех запросов. При наличии используй совместимые сырые измерения или объединяемые распределения.19- Для проверок с существенным воздействием определи условия остановки и пределы ресурсов. Используй только разрешённое окружение и нагрузку; недоступность тестовой среды — ограничение, а не повод испытывать ёмкость production.2021## Приёмка и результат2223Оценивай заявленные критерии вместе: задержки, ошибки, успешную пропускную способность и существенные ограничения ресурсов. Запуск, ускорившийся только за счёт отклонения работы, не соответствует неизменной цели надёжности. Укажи, если объёма выборки или разброса между запусками недостаточно для заявленного вывода о хвосте распределения или регрессии.2425Верни конфигурацию нагрузки, окно измерения, данные базового варианта и кандидата, достигнутую нагрузку, ошибки и решение pass/fail/inconclusive по каждому критерию. Гипотезы об узком месте обозначай отдельно: измеренное насыщение само по себе не показывает причину.2627Если запрошен только план, подготовь выполнимый план с нужными сигналами и условиями остановки, не заявляя о проведённом нагрузочном тесте. `templates/performance-report.md` необязателен и используется при доступном репозитории.