Руководство по тестированию производительности: с чего начать проверки и о чем нужно помнить |
11.07.2019 00:00 | ||||||||
Опыт подготовки и проведения тестирования производительности показывает, что неправильно построенный процесс может привести к неточным результатам и трудностям в поиске решения для улучшения производительности ПО. В данной статье мы вместе с перфоманс-командой a1qa пройдем все обязательные этапы такой проверки и рассмотрим их особенности, опираясь на реальные кейсы. Проанализировать систему и подготовить требованияПроцесс тестирования производительности начинается с проведения функциональной проверки и анализа системы. Такой анализ состоит из изучения особенностей программного продукта и проводится, чтобы найти потенциальные слабые места в его работе, воспроизвести паттерны поведения пользователей, создать профиль нагрузки, определить способы мониторинга приложения. Следующий шаг – подготовить требования (критерии), которые впоследствии будут сопоставляться с результатами тестирования для оценки поведения ПО. К этим критериям относятся измеряемые показатели производительности (метрики): время отклика, а также количество пользователей, процессор, оперативная память, жесткий диск, процент ошибок и т. д. Создать стратегиюНа некоторых проектах анализ и подбор требований проводится на протяжении всех фаз и стадий жизненного цикла. Если система уже в эксплуатации, то с помощью инструментов для сбора статистики (например, Яндекс.Метрика и Google Analytics) можно наблюдать за поведением пользователей, а также проводить анализ выполненных операций и создаваемой нагрузки, что в дальнейшем позволит разработать более реалистичные тестовые сценарии и профиль нагрузки (модель поведения пользователей). Стратегия учитывает взаимосвязи между частями системы, сценарии ее реального использования, требования к производительности. Стратегия – это документ, который создается на основе подробного анализа. Чтобы стратегия была максимально полной, в нее включается вся информация о программном продукте, требования к нему и зачем выполняется тестирование. На итоги проверок влияют и иные факторы: профиль и модель нагрузки, конфигурации тестового стенда, выбранный инструмент, мониторинг и др. Поэтому они также входят в стратегию. Настроить генератор нагрузкиИнструменты тестирования нужно устанавливать на генератор нагрузки (load generator). Такой подход помогает значительно снизить искажения при подаче нагрузки и удостовериться, что время отклика соответствует реальной производительности приложения.Провести мониторинг серверов и генератора нагрузкиИзмеряемые показатели производительности используются, чтобы оценить параметры производительности программного продукта и найти те области, которые создают слабые места. Для проведения мониторинга используются такие программы, как Nmon, Zabbix и др. Для сбора конкретных характеристик работы программы проводится профилирование. Профилирование БД помогает найти, что замедляет работу, быстро исправлять ошибки и не искать их. Профилирование веб-серверов позволяет понять, где есть «узкое» место в системе. Подготовить тестовые данные Самый верный способ подготовки определяется на этапе анализа характеристик системы, когда с Dev-командой проходит обсуждение данных. Данные можно подготовить с помощью кода, SQL- и API-запросов, а также интерфейса
Это наиболее ресурсоемкий этап. Разработать нагрузочные скрипты На данном этапе тест-кейсы создаются с использованием определенного инструмента. Первый шаг в процессе разработки скриптов включает изучение подготовленных сценариев вручную: нужно определить, что каждый из них делает и каким образом. После этого можно приступать ко второму шагу – созданию тест-кейсов. Для этого нужно записать шаблон для каждого из сценариев. Учитывая, что в нем нет параметризации, через Fiddler или иной прокси-сервер проверяется совпадение всех запросов в шаблоне с запросами в Fiddler. Динамические параметры и запросы необходимо параметризировать, чтобы убедиться: один и тот же сценарий отрабатывает правильно для разных пользователей. Последний шаг – проверить запуск каждого сценария по Х-итерациям для разных пользователей. Этот этап завершается, когда каждый сценарий отрабатывает верно. Предварительно запустить тесты и провести тестирование Предварительные тесты запускаются, чтобы проверить корректность работы подготовленных скриптов и найти оптимальную модель нагрузки. В рамках тестирования производительности проводятся:
Проанализировать результатыПо итогам проведенных тестов создаётся документ, который описывает, какие ключевые элементы выполнены, какие проблемы найдены и что мешает системе работать качественно. По сути, в отчете указывается, как выполнялся каждый этап. Такой документ содержит всю важную информацию о проведенном тестировании. Он должен быть исчерпывающим по содержанию, понятным и прозрачным для клиента, а также хорошо визуализированным. В отчет включается множество данных: цели проведения проверок, статистика по ключевым параметрам производительности, выводы об «узких» местах и о производительности системы в целом, рекомендации по улучшению производительности программного продукта и т. д. Понимая, в какой последовательности проходят этапы данного тестирования и что они из себя представляют, можно получить верное представление о производительности решения и понять, как можно улучшить его качество. |