Нагрузочное тестирование позволяет обеспечить стабильное функционирование IT-продуктов: эффективно использовать аппаратные мощности и инфраструктуру, а также сделать ее отказоустойчивой.
Мы проверили десятки сервисов под нагрузкой, обобщили полученный опыт и подготовили несколько советов, которые помогут вам оценить производительность и работоспособность системы.
1. Планируйте нагрузочное тестирование на этапе подготовки архитектуры будущего сервиса и проводите после функциональных тестов, когда исправлены все недочеты системы.
2. Определите цели, которые вы ставите перед нагрузкой. От этого будут зависеть способы проверки и тестируемые показатели.
Примеры целей:
– Выявить максимальную производительность системы на существующей конфигурации.
– Проверить надежность сервиса: возможные утечки памяти и влияние сторонних регулярных задач на его работу. Например, при создании резервной копии базы данных.
– Выявить потенциально «узкие» места.
3. Во время составления ТЗ сформулируйте нефункциональные требования к вашему продукту.
Пример требований: Система должна обрабатывать не менее N операций в секунду, при этом время ответа не превышает X секунд.
Пользователи по-разному нагружают сервис и работают с разной интенсивностью. Поэтому измерение данных в «пользователях» всегда сводится к усреднению модели поведения и является своего рода допущением. В то время как частота выполнения операций/запросов в секунду – однозначный показатель производительности.
4. Необходимо выявить, что именно в вашей системе следует проверить под нагрузкой. Нет нужды тестировать весь функционал, сделайте упор на самые массовые и «тяжелые» операции. Это позволит охватить критические точки отказа системы и сократить время на разработку тестов.
5. Нагрузочное тестирование важно проводить на стенде, который по своим характеристикам максимально приближен к продуктовому. Полученные таким образом результаты будут достоверными и однозначными. В противном случае показатели можно оценить только качественно, например: «В реальных условиях производительность будет лучше». Однако нельзя сделать вывод, что она удвоится, если продуктовый стенд в 2 раза производительнее тестового.
6. Улучшить поиск «узких» мест, которые ограничивают производительность, можно с помощью таких инструментов, как мониторинг стендов и настройка логирования всех служб и сервисов вашей системы. Они значительно упростят работу и ускорят процесс анализа полученных в ходе тестирования данных.
В этом посте мы рассмотрели основные моменты, на которые важно обратить внимание перед запуском нагрузочного тестирования. Подробнее рассказываем здесь.