Разделы портала

Онлайн-тренинги

.
Руководство по тестированию производительности: с чего начать проверки и о чем нужно помнить
11.07.2019 00:00

Опыт подготовки и проведения тестирования производительности показывает, что неправильно построенный процесс может привести к неточным результатам и трудностям в поиске решения для улучшения производительности ПО.

В данной статье мы вместе с перфоманс-командой a1qa пройдем все обязательные этапы такой проверки и рассмотрим их особенности, опираясь на реальные кейсы.


Проанализировать систему и подготовить требования

Процесс тестирования производительности начинается с проведения функциональной проверки и анализа системы.

Такой анализ состоит из изучения особенностей программного продукта и проводится, чтобы найти потенциальные слабые места в его работе, воспроизвести паттерны поведения пользователей, создать профиль нагрузки, определить способы мониторинга приложения.

Следующий шаг – подготовить требования (критерии), которые впоследствии будут сопоставляться с результатами тестирования для оценки поведения ПО.

К этим критериям относятся измеряемые показатели производительности (метрики): время отклика, а также количество пользователей, процессор, оперативная память, жесткий диск, процент ошибок и т. д.

Создать стратегию

На некоторых проектах анализ и подбор требований проводится на протяжении всех фаз и стадий жизненного цикла.

Если система уже в эксплуатации, то с помощью инструментов для сбора статистики (например, Яндекс.Метрика и Google Analytics) можно наблюдать за поведением пользователей, а также проводить анализ выполненных операций и создаваемой нагрузки, что в дальнейшем позволит разработать более реалистичные тестовые сценарии и профиль нагрузки (модель поведения пользователей).

Стратегия учитывает взаимосвязи между частями системы, сценарии ее реального использования, требования к производительности.

Стратегия – это документ, который создается на основе подробного анализа. Чтобы стратегия была максимально полной, в нее включается вся информация о программном продукте, требования к нему и зачем выполняется тестирование.

На итоги проверок влияют и иные факторы: профиль и модель нагрузки, конфигурации тестового стенда, выбранный инструмент, мониторинг и др. Поэтому они также входят в стратегию.

Настроить генератор нагрузки

Инструменты тестирования нужно устанавливать на генератор нагрузки (load generator). Такой подход помогает значительно снизить искажения при подаче нагрузки и удостовериться, что время отклика соответствует реальной производительности приложения.

Провести мониторинг серверов и генератора нагрузки

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

Для проведения мониторинга используются такие программы, как Nmon, Zabbix и др.

Для сбора конкретных характеристик работы программы проводится профилирование.

Профилирование БД помогает найти, что замедляет работу, быстро исправлять ошибки и не искать их.

Профилирование веб-серверов позволяет понять, где есть «узкое» место в системе.

Подготовить тестовые данные

Самый верный способ подготовки определяется на этапе анализа характеристик системы, когда с Dev-командой проходит обсуждение данных.

Данные можно подготовить с помощью кода, SQL- и API-запросов, а также интерфейса

Код


Используя скрипты, создаются пользователи, пароли для пользователей и другие значения. Важно уделить внимание тому, чтобы имена и пароли были уникальными и надежными. Чтобы быстрее найти их в БД, удобно создавать имена пользователей по определенным шаблонам.

SQL-запросы


Как подготовить данные? Как альтернативный способ: создать заполненную базу с полями, идентичными полям в БД на стороне сервера, а после этого сделать dump-файл, который будет содержать запросы на добавление информации в БД.

Запросы к API


Они используются, чтобы наполнить БД информацией о пользователях и т. д. Причем хватит 1-2 запросов для отправки данных на сервер.

Интерфейс


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

Это наиболее ресурсоемкий этап.

Разработать нагрузочные скрипты

На данном этапе тест-кейсы создаются с использованием определенного инструмента. Первый шаг в процессе разработки скриптов включает изучение подготовленных сценариев вручную: нужно определить, что каждый из них делает и каким образом.

После этого можно приступать ко второму шагу – созданию тест-кейсов. Для этого нужно записать шаблон для каждого из сценариев. Учитывая, что в нем нет параметризации, через Fiddler или иной прокси-сервер проверяется совпадение всех запросов в шаблоне с запросами в Fiddler.

Динамические параметры и запросы необходимо параметризировать, чтобы убедиться: один и тот же сценарий отрабатывает правильно для разных пользователей.

Последний шаг – проверить запуск каждого сценария по Х-итерациям для разных пользователей. Этот этап завершается, когда каждый сценарий отрабатывает верно.

Предварительно запустить тесты и провести тестирование

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

В рамках тестирования производительности проводятся:

  • Стесc-тесты (stress tests);
  • Нагрузочное тестирование (load testing);
  • Проверки стабильности (stability/reliability testing);
  • Модульное тестирование (unit testing);
  • Объемное тестирование (volume testing);
  • Проверка масштабируемости (scalability testing);
  • Тесты «часа пик» (rush hour tests);
  • Тестирование конфигурации (configuration testing).

Проанализировать результаты

По итогам проведенных тестов создаётся документ, который описывает, какие ключевые элементы выполнены, какие проблемы найдены и что мешает системе работать качественно. По сути, в отчете указывается, как выполнялся каждый этап.

Такой документ содержит всю важную информацию о проведенном тестировании. Он должен быть исчерпывающим по содержанию, понятным и прозрачным для клиента, а также хорошо визуализированным.

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

Понимая, в какой последовательности проходят этапы данного тестирования и что они из себя представляют, можно получить верное представление о производительности решения и понять, как можно улучшить его качество.

Обсудить в форуме