От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
Нагрузочное тестирование быстро и сердито
1. Software quality assurance days
20 Международная конференция
по вопросам качества ПО
sqadays.com
Минск. 24–26 ноября 2016
Батищев Евгений
Аркадия. Санкт-Петербург, Россия
Нагрузочное тестирование. Дёшево и сердито.
2. Нагрузочное тестирование. Дёшево и сердито.
Немного о себе
Батищев Евгений
Программист, Аркадия.
• Разработка.
• Разработка очень быстро.
• Разработка очень качественно.
• “Сделайте так, чтобы работало,
пожалуйста”.
Batonrain@gmail.com
3. Нагрузочное тестирование. Дёшево и сердито.
Продукты и задачи
• Есть портал с посещаемостью в 40 тысяч человек в день.
• На портале расположено огромное множество новостных рубрик.
• Присутствует работа с личным кабинетом, оплата подписки и
прочие милые фишки.
4. Нагрузочное тестирование. Дёшево и сердито.
Задачи портала
• Каждый день доносить до пользователей свежую и объективную
информацию.
• Развивать продукт и совершенствовать способы подачи новостей
пользователям.
6. Нагрузочное тестирование. Дёшево и сердито.
Задачи разработчиков
• Поддерживать продукт.
• Развивать дополнительные возможности продукта, опираясь на
требования заказчика.
7. Нагрузочное тестирование. Дёшево и сердито.
Осознание
Средняя статистика в основных браузерах:
• Загрузка главной страницы – 19+ секунд.
• Подгрузка статей – 10+ секунд.
• Подгрузка фотографий – 10+ секунд.
• Седые волосы начальника – 15 минут после осознания того,
что сайт окончательно перестал открываться.
8. Нагрузочное тестирование. Дёшево и сердито.
Организация нагрузочного
тестирования
• Со стороны заказчика – никакого.
• С нашей стороны – надежда и вера в свои силы.
9. Нагрузочное тестирование. Дёшево и сердито.
Нюансы
• Нагрузочное тестирование на стороне заказчика.
Частая, в последнее время, практика, которую не очень
хочется поддерживать.
10. Нагрузочное тестирование. Дёшево и сердито.
Основные минусы и плюсы
подобного подхода
Минусы:
•Время. Тестировщик на стороне заказчика тратит много времени
на разбор стороннего кода, вместо того, чтобы “Быстро-решительно”
начать свою работу.
•Коммуникации. Не всегда на стороне заказчика может сидеть
очень уж грамотный тестировщик, который и логи нужные скинет, и
сможет пояснить за проблему.
Плюсы:
•Беззаботность. Нет нужды заниматься утомительным
тестированием, в котором ничего не понимаешь.
•Экономия. Не приходится платить тестировщику-дармоеду,
который только и делает, что находит проблемы в нашем идеально
работающем коде.
11. Нагрузочное тестирование. Дёшево и сердито.
Новые грабли – лучше старых двух,
или сказ о том, как мы нагрузочное
тестирование автоматизировали
13. Нагрузочное тестирование. Дёшево и сердито.
Что было решено сделать
• Автоматизация тестирования только нескольких самых важных
элементов функционала.
• Выделить отдельный сервер под нагрузочное тестирование.
• Распространить подобные практики на остальные проекты.
14. Нагрузочное тестирование. Дёшево и сердито.
Что нам удалось сделать
• Автоматизировать тестирование нескольких самых важных
элементов функционала.
16. Нагрузочное тестирование. Дёшево и сердито.
Что мы сделали?
• В код был добавлен служебный api, через который можно было
бы дёргать большую часть “тяжёлого” функционала
• Была написана утилита, позволяющая генерировать запросы к
нужным нам участкам функциональности через служебный api
• Эта же утилита начинала отправлять дикое количество запросов
через api и собирать данные об ошибках в системе, о состоянии
памяти, загруженности процессора и тд. и тп.
• Как настоящие лентяи, мы всё это запускали на нашем тестовом
сервере и оставляли на ночь.
17. Нагрузочное тестирование. Дёшево и сердито.
Результаты подобного подхода
• Мы действительно начали выделять узкие места и за три месяца
подобной практики сумели исправить множество старых огрехов и
улучшить работоспособность продукта.
• Разработчики стали больше времени уделять тестированию –
пришлось поддерживать служебный api в актуальном состоянии,
чтобы не было рассинхрона с основной функциональностью.
18. Нагрузочное тестирование. Дёшево и сердито.
Основные плюсы, извлечённые из
нашего подхода
• Создание служебного api, которым стали пользоваться наши
тестировщики для выявления новых проблем в старой
функциональности.
• Автоматизация нагрузочного тестирования трудоёмких кусков
продукта.
• Автогенерация отчётов о ночных сборках с возможностью
включать и отключать нагрузочное тестирование после прогона
основных Uts.
• Сохранение нервов разработчиков и тестировщиков.
19. Нагрузочное тестирование. Дёшево и сердито.
Посыл
• Хотя всё и начиналось, как попытка просто организовать какое-то,
самое минимальное нагрузочное тестирование, проект вылился в
совместный внутренний продукт, который проектировали и
тестировщики, и программисты.
• Программист всегда может чуточку облегчить жизнь
тестировщикам.
• Облегчая жизнь тестировщикам – программист облегчает жизнь
себе.