Upload
sqalab
View
127
Download
5
Embed Size (px)
Citation preview
Software quality assurance days20 Международная конференция по вопросам качества ПОsqadays.com
Минск. 24–26 ноября 2016
Батищев ЕвгенийАркадия. Санкт-Петербург, Россия
Нагрузочное тестирование. Дёшево и сердито.
Нагрузочное тестирование. Дёшево и сердито.
Немного о себеБатищев Евгений
Программист, Аркадия.
• Разработка.• Разработка очень быстро.• Разработка очень качественно.• “Сделайте так, чтобы работало, пожалуйста”.
Нагрузочное тестирование. Дёшево и сердито.
Продукты и задачи• Есть портал с посещаемостью в 40 тысяч человек в день.
• На портале расположено огромное множество новостных рубрик.
• Присутствует работа с личным кабинетом, оплата подписки и прочие милые фишки.
Нагрузочное тестирование. Дёшево и сердито.
Задачи портала• Каждый день доносить до пользователей свежую и объективную
информацию.
• Развивать продукт и совершенствовать способы подачи новостей пользователям.
Нагрузочное тестирование. Дёшево и сердито.
Как следствие• Производительность продукта была крайне важна.
Нагрузочное тестирование. Дёшево и сердито.
Задачи разработчиков• Поддерживать продукт.
• Развивать дополнительные возможности продукта, опираясь на требования заказчика.
Нагрузочное тестирование. Дёшево и сердито.
ОсознаниеСредняя статистика в основных браузерах:
• Загрузка главной страницы – 19+ секунд.
• Подгрузка статей – 10+ секунд.
• Подгрузка фотографий – 10+ секунд.
• Седые волосы начальника – 15 минут после осознания того, что сайт окончательно перестал открываться.
Нагрузочное тестирование. Дёшево и сердито.
Организация нагрузочного тестирования
• Со стороны заказчика – никакого.
• С нашей стороны – надежда и вера в свои силы.
Нагрузочное тестирование. Дёшево и сердито.
Нюансы
• Нагрузочное тестирование на стороне заказчика.Частая, в последнее время, практика, которую не очень хочется поддерживать.
Нагрузочное тестирование. Дёшево и сердито.
Основные минусы и плюсы подобного подхода
Минусы:•Время. Тестировщик на стороне заказчика тратит много времени на разбор стороннего кода, вместо того, чтобы “Быстро-решительно” начать свою работу.•Коммуникации. Не всегда на стороне заказчика может сидеть очень уж грамотный тестировщик, который и логи нужные скинет, и сможет пояснить за проблему.Плюсы:•Беззаботность. Нет нужды заниматься утомительным тестированием, в котором ничего не понимаешь.•Экономия. Не приходится платить тестировщику-дармоеду, который только и делает, что находит проблемы в нашем идеально работающем коде.
Нагрузочное тестирование. Дёшево и сердито.
Новые грабли – лучше старых двух, или сказ о том, как мы нагрузочное тестирование автоматизировали
Нагрузочное тестирование. Дёшево и сердито.
Проблема
• Лень.• Время.• Трудозатраты. • Тестировщики недовольны.
Нагрузочное тестирование. Дёшево и сердито.
Что было решено сделать
• Автоматизация тестирования только нескольких самых важных элементов функционала.
• Выделить отдельный сервер под нагрузочное тестирование. • Распространить подобные практики на остальные проекты.
Нагрузочное тестирование. Дёшево и сердито.
Что нам удалось сделать
• Автоматизировать тестирование нескольких самых важных элементов функционала.
Нагрузочное тестирование. Дёшево и сердито.
Почему не удалось всё остальное?
Нагрузочное тестирование. Дёшево и сердито.
Что мы сделали?
• В код был добавлен служебный api, через который можно было бы дёргать большую часть “тяжёлого” функционала
• Была написана утилита, позволяющая генерировать запросы к нужным нам участкам функциональности через служебный api
• Эта же утилита начинала отправлять дикое количество запросов через api и собирать данные об ошибках в системе, о состоянии памяти, загруженности процессора и тд. и тп.
• Как настоящие лентяи, мы всё это запускали на нашем тестовом сервере и оставляли на ночь.
Нагрузочное тестирование. Дёшево и сердито.
Результаты подобного подхода
• Мы действительно начали выделять узкие места и за три месяца подобной практики сумели исправить множество старых огрехов и улучшить работоспособность продукта.
• Разработчики стали больше времени уделять тестированию – пришлось поддерживать служебный api в актуальном состоянии, чтобы не было рассинхрона с основной функциональностью.
Нагрузочное тестирование. Дёшево и сердито.
Основные плюсы, извлечённые из нашего подхода
• Создание служебного api, которым стали пользоваться наши тестировщики для выявления новых проблем в старой функциональности.
• Автоматизация нагрузочного тестирования трудоёмких кусков продукта.
• Автогенерация отчётов о ночных сборках с возможностью включать и отключать нагрузочное тестирование после прогона основных Uts.
• Сохранение нервов разработчиков и тестировщиков.
Нагрузочное тестирование. Дёшево и сердито.
Посыл
• Хотя всё и начиналось, как попытка просто организовать какое-то, самое минимальное нагрузочное тестирование, проект вылился в совместный внутренний продукт, который проектировали и тестировщики, и программисты.
• Программист всегда может чуточку облегчить жизнь тестировщикам.
• Облегчая жизнь тестировщикам – программист облегчает жизнь себе.
Нагрузочное тестирование. Дёшево и сердито.
Вопросы