Какую модель тестирования мы применяем?
Мы применяем V-Model. Тестирование планируется и проводится параллельно всем этапам ЖЦ ПО.
V-Модель является одной из практик разработки, и предполагает систематическое тестирование
продукта во время разработки, а также участие тестировщиков во всех этапах ЖЦ проекта, начиная
с этапа сбора требований и оценки.
Как мы организуем тестовые стенды?
Тестовый стенд представляет из себя серверы для backend, frontend
и СУБД, объединенные в кластер. По требованию заказчиков может быть дополнительный стенд для
тестирования заказчиком. Туда выкладываются релизы по мере готовности функционала с описанием
состава релиза. Тестировщики на этом стенде проводят только регрессию, смок-тестирование и
подтверждающее тестирование. Хотфиксы не загружаются. Отдельно сервер для системы Непрерывной
интеграции и автоматизированного тестирования. Отдельно сервер(ы) для проведения нагрузочного тестирования.
Как мы проводим нагрузочное тестирование?
Нагрузочное тестирование производится в несколько этапов:
-
стабильность (плавное повышение и понижение нагрузки
с сохранением среднего уровня нагрузки в пределах ожидаемой величины в течении нескольких
дней). На этом этапе тестирование проводится по сценариям эмуляции поведения пользователей.
-
ступенчатое (резкое повышение нагрузки большими ступеньками
для определения критического порогового значения, несколько часов). На этом этапе тестирование
проводится как по пользовательским сценариям, так и по прямым серверным запросам.
-
Стресс-тестирование (резкое повышение нагрузки до пороговых значений и плавное её снижение
для определения оптимальной нагрузки и времени стабилизации системы). На этом этапе сценарии
составляются из запросов напрямую к серверу.
На всех этапах нагрузочного тестирования производятся замеры откликов системы.
Вся информация логируется, по ней строятся графики и отчет - подробный или нет (по желанию
заказчика, на написание подробного отчёта уходит больше времени, зато в нем подробный анализ
графиков).
Какие методы мы применяем:
-
ручное тестирование методом “черного ящика” (UI+API)
с применением плагинов и расширений браузеров для отладки отслеживания передаваемой информации,
инструментов масштабирования, других инструментов для взаимодействия с сервером по протоколам
с синтаксисом URL, например cURL;
- автоматизированное тестирование методом “черного ящика” (UI +API);
- введение системы Непрерывной Интеграции (Continuous Integration);
-
тестирование методом “белого ящика” - unit self тесты и кодревью внутри команды разработчиков;
-
нагрузочное тестирование для определения производительности
и отказоустойчивости системы, выявления узких мест и соответствия ожидаемой нагрузке.
Что требуется для проведения нагрузочного тестирования?
Нам потребуется:
-
список наиболее популярных запросов к сервису (берется из логов серверов, мы можем составить
и сами);
- среднее (или ожидаемое) количество пользователей на какую-то единицу времени;
- исключение IP-адреса, с которого будет производиться нагрузка,
из бан-листа (согласование с DevOps и безопасностью клиента);
-
человек на стороне клиента, который сможет быстро "оживить" систему после снятия нагрузки.
-
Если заказчик посчитает возможным - можно провести ступенчатое и стресс- тестирование
на боевых серверах. Как это проводится: нагрузка подается ступенчато. Высота ступеньки
определяется, исходя из первоначальных данных и хода тестирования. На этом этапе выясняется,
как система справляется с резким повышением нагрузки и как долго происходит разбор запросов
после каждой ступеньки. Последняя ступенька - это когда система станет недоступна;
-
если нужно, ожидаемое время отклика по запросам (иначе время просто измеряется и передается в отчетах).
Далее идет стресс тестирование: нагрузка подается в виде минус 1 ступенька с предыдущего этапа.
Что это даст клиенту: станет ясна динамика падения системы и сколько времени система будет еще
доступна, это время на принятие срочных мер по "оживлению" сервиса.