Нагрузочное и модульное тестирование продукта
Залог успеха программного продукта – бесперебойная работа и удовлетворительная производительность под различными нагрузками. Таких целей можно достичь с помощью нагрузочного тестирования. Это автоматизированный процесс, который имитирует поведение реальных пользователей системы.
Нагрузочное тестирование – процесс многоуровневый и сложный. Он требует умений исследовать и анализировать. Более того, тестирование программы под нагрузкой требует знаний серверов и протоколов, а также навыков программирования. Именно поэтому в подавляющем большинстве случаев под нагрузочное тестирование выделяется отдельная команда специалистов (наряду с функциональным тестированием).
Что тестируем?
Производительность. В этом смысле система анализируется на предмет таких параметров, как время отклика программы в условиях различных нагрузок.
Стабильность. Главной задачей является проверка программного продукта в условиях длительной эксплуатации (нет ли утечек памяти, правильны ли конфигурационные настройки, т.д.).
Регенерация после критической нагрузки. Основная цель – проверить, способна ли система самостоятельно «реабилитироваться» после критических нагрузок. В этом смысле, акцент делается на способность к восстановлению, а не на производительность.
Теперь уделим немного внимания стратегии нагрузочного тестирования. Она выглядит примерно так:
Выделение набора операций;
Производительность операций;
Зависимость производительности операций от времени.
В рамках набора операций важно выделить две категории: те, которые важны с точки зрения бизнеса и те, которые важны для технической составляющей. Для бизнеса важны те операции, которые влияют на производительность процесса, например, количество выполняемых операций за определенный промежуток времени. С технической точки зрения, важность имеют операции, которые задействуют большое количество ресурсов. Например, создание ресурсоемких отчетов в системе, что требует «сложных» запросов в базу данных.
Нагрузочное тестирование – неотъемлемый этап оценки качества продукта. Без него разработчики рискуют отдать ПО с нестабильной производительностью, а заказчик – получить продукт, не удовлетворяющий требованиям пользователей. Наряду с нагрузочным, необходимо уделять внимание и другим критически важным областям, таким как функциональное, тестирование графического интерфейса, интеграционное, удобства пользования, безопасности.