Приложения и сайты работают в непрерывном режиме (без перезагрузки серверов) на протяжении многих недель и месяцев. В очень крупных (глобальных) проектах количество одновременных пользователей может быть очень большим практически все время, при этом доступ к сайтам/приложениям должен быть гарантирован всегда, что заставляет владельцев таких проектов проводить тестирование стабильности (надежности, устойчивости).
QA-команды, проводящие такое тестирование, фокусируются на недопущении:
- внезапных сбоев сервиса из-за недоступности инфраструктуры
- замедления скорости и ухудшения качества сервиса
- и других последствий длительной непрерывной работы «на высоких оборотах».
Важность
Итак, тестирование стабильности — это проверка стабильности приложения/сайта, работающего длительное время в условиях большой нагрузки. Оно помогает разработчикам и архитекторам совершенствовать систему, делая ее более гибкой, устойчивой к стабильно большой нагрузке, и измерить пределы выносливости. Будет ли система гарантированно стабильной? Что можно сделать превентивно? Какое количество одновременных пользователей/запросов на протяжении месяца система готова отработать без выведения в режим обслуживания? Когда проявятся утечки памяти?
Проблемы
Проблемы, которые возникают или накапливаются в системах на протяжении долгого периода непрерывной работы:
- Постепенное замедление системы, потеря «отзывчивости» на каких-то уровнях
- Потеря части функциональности
- Неправильное/некорректное функционирование
- Со временем возможен полный отказ системы
Этапы
Стандартные этапы тестирования стабильности/надежности/устойчивости системы:
- Описать цели и масштабы тестирования, и выделить время
- Распределить ресурсы и ответственность по задачам. Написание тест-плана, включающего описание общей стратегии, этапов проведения, и мониторинг
- Подготовка команды с соответствующим уровнем навыков тестирования производительности
- Непосредственно проведение тестирования
- В качестве подготовительного/дополнительного этапа желательно проведение нагрузочного тестирования
- Репорты и их анализ
Метрики
Проводится мониторинг системы и сбор тестовых метрик, а далее их анализ. Метрики:
- Время обработки транзакции — как параметр, страдающий в первую очередь
- Количество обработанных запросов к серверу в секунду
- Пропускная способность (Throughput)
- Параметры CPU, памяти и дисков
Инструменты
Инструменты для тестирования стабильности/надежности/выносливости/износостойкости системы — стандартные нагрузочные, по ссылке.
***