20
Software quality assurance days 20 Международная конференция по вопросам качества ПО sqadays.com Минск. 24–26 ноября 2016 Батищев Евгений Аркадия. Санкт-Петербург, Россия Нагрузочное тестирование. Дёшево и сердито.

Нагрузочное тестирование быстро и сердито

  • Upload
    sqalab

  • View
    127

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Нагрузочное тестирование быстро и сердито

Software quality assurance days20 Международная конференция по вопросам качества ПОsqadays.com

Минск. 24–26 ноября 2016

Батищев ЕвгенийАркадия. Санкт-Петербург, Россия

Нагрузочное тестирование. Дёшево и сердито.

Page 2: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Немного о себеБатищев Евгений

Программист, Аркадия.

• Разработка.• Разработка очень быстро.• Разработка очень качественно.• “Сделайте так, чтобы работало, пожалуйста”.

[email protected]

Page 3: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Продукты и задачи• Есть портал с посещаемостью в 40 тысяч человек в день.

• На портале расположено огромное множество новостных рубрик.

• Присутствует работа с личным кабинетом, оплата подписки и прочие милые фишки.

Page 4: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Задачи портала• Каждый день доносить до пользователей свежую и объективную

информацию.

• Развивать продукт и совершенствовать способы подачи новостей пользователям.

Page 5: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Как следствие• Производительность продукта была крайне важна.

Page 6: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Задачи разработчиков• Поддерживать продукт.

• Развивать дополнительные возможности продукта, опираясь на требования заказчика.

Page 7: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

ОсознаниеСредняя статистика в основных браузерах:

• Загрузка главной страницы – 19+ секунд.

• Подгрузка статей – 10+ секунд.

• Подгрузка фотографий – 10+ секунд.

• Седые волосы начальника – 15 минут после осознания того, что сайт окончательно перестал открываться.

Page 8: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Организация нагрузочного тестирования

• Со стороны заказчика – никакого.

• С нашей стороны – надежда и вера в свои силы.

Page 9: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Нюансы

• Нагрузочное тестирование на стороне заказчика.Частая, в последнее время, практика, которую не очень хочется поддерживать.

Page 10: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Основные минусы и плюсы подобного подхода

Минусы:•Время. Тестировщик на стороне заказчика тратит много времени на разбор стороннего кода, вместо того, чтобы “Быстро-решительно” начать свою работу.•Коммуникации. Не всегда на стороне заказчика может сидеть очень уж грамотный тестировщик, который и логи нужные скинет, и сможет пояснить за проблему.Плюсы:•Беззаботность. Нет нужды заниматься утомительным тестированием, в котором ничего не понимаешь.•Экономия. Не приходится платить тестировщику-дармоеду, который только и делает, что находит проблемы в нашем идеально работающем коде.

Page 11: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Новые грабли – лучше старых двух, или сказ о том, как мы нагрузочное тестирование автоматизировали

Page 12: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Проблема

• Лень.• Время.• Трудозатраты. • Тестировщики недовольны.

Page 13: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Что было решено сделать

• Автоматизация тестирования только нескольких самых важных элементов функционала.

• Выделить отдельный сервер под нагрузочное тестирование. • Распространить подобные практики на остальные проекты.

Page 14: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Что нам удалось сделать

• Автоматизировать тестирование нескольких самых важных элементов функционала.

Page 15: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Почему не удалось всё остальное?

Page 16: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Что мы сделали?

• В код был добавлен служебный api, через который можно было бы дёргать большую часть “тяжёлого” функционала

• Была написана утилита, позволяющая генерировать запросы к нужным нам участкам функциональности через служебный api

• Эта же утилита начинала отправлять дикое количество запросов через api и собирать данные об ошибках в системе, о состоянии памяти, загруженности процессора и тд. и тп.

• Как настоящие лентяи, мы всё это запускали на нашем тестовом сервере и оставляли на ночь.

Page 17: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Результаты подобного подхода

• Мы действительно начали выделять узкие места и за три месяца подобной практики сумели исправить множество старых огрехов и улучшить работоспособность продукта.

• Разработчики стали больше времени уделять тестированию – пришлось поддерживать служебный api в актуальном состоянии, чтобы не было рассинхрона с основной функциональностью.

Page 18: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Основные плюсы, извлечённые из нашего подхода

• Создание служебного api, которым стали пользоваться наши тестировщики для выявления новых проблем в старой функциональности.

• Автоматизация нагрузочного тестирования трудоёмких кусков продукта.

• Автогенерация отчётов о ночных сборках с возможностью включать и отключать нагрузочное тестирование после прогона основных Uts.

• Сохранение нервов разработчиков и тестировщиков.

Page 19: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Посыл

• Хотя всё и начиналось, как попытка просто организовать какое-то, самое минимальное нагрузочное тестирование, проект вылился в совместный внутренний продукт, который проектировали и тестировщики, и программисты.

• Программист всегда может чуточку облегчить жизнь тестировщикам.

• Облегчая жизнь тестировщикам – программист облегчает жизнь себе.

Page 20: Нагрузочное тестирование быстро и сердито

Нагрузочное тестирование. Дёшево и сердито.

Вопросы