9.19M
Category: softwaresoftware

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

1.

Нагрузочное тестирование
Луконенко Никита, 172
группа 2023

2.

Что такое? Зачем оно нужно?
Эмулируем нагрузку от N-го количества пользователей.
Найти предел, который может выдержать наш проект.
Важно найти не самое пиковое значение, а максимальные параметры,
при которых проект работает стабильно.
Что тестируем? (Всё. Игры, программное обеспечение, сайты, железо.)

3.

Примеры, когда нагрузочное тестирование не было проведено
В 2013 году при запуске онлайн-магазина Target в Канаде, сайт вышел из строя из-за большой
нагрузки. Многие пользователи не могли сделать заказы, и, как следствие, Target потерял
значительное количество потенциальных покупателей. Как можно было избежать? Продумать
такой исход событий, купить больше железа, оптимизировать узкие места в коде.

4.

Ещё примерчик c потерей денег
В 2015 году, при запуске мобильной игры "Angry Birds 2", сервера были перегружены из-за
большого количества пользователей, которые попытались загрузить игру одновременно.
Разработчики решили проблему, увеличив количество серверов и оптимизировав код игры, но
деньги уже были потеряны.
Чем лучше спрогнозировано количество пользователей на старте - тем меньше денег потеряет
проект. Поэтому гораздо лучше, если проект стартует без падений.

5.

Отсутствие нагрузочного тестирования ведет к жертвам
4. В США в 2015 году, когда система управления транспортом в городе Вашингтон вышла из строя
из-за большой нагрузки, что привело к остановке многих автобусов и метропоездов. В результате
многие люди оказались заблокированными внутри транспортных средств, а также на станциях
метро, без доступа к воздуху и воде. Несколько человек получили травмы и один человек погиб в
результате происшествия.

6.

История циклична
В 2016 году, при запуске приложения для заказа такси "Gett" в Нью-Йорке, приложение вышло из
строя из-за большой нагрузки. Из-за этого приложение не могло принимать заказы, что привело к
большим финансовым потерям для компании.

7.

Итак, когда надо проводить нагрузочное тестирование?
1)Перед развертыванием
2)Добавление какой-то новой функциональности
3)Ожидается бум пользователей
4)Защита от атак(dos/ddos/sql injection/xss )

8.

Какие ошибки в коде приводят к уменьшению отказоустойчивости?
1)Неэффективная работа с базой данных.
2)Важно валидировать данные, которые прилетают нам на вход.
3)Неправильное управление памятью.
4)Обработка ошибок пользователя
5)Работа с сессиями
6)Работа с сетевыми протоколами
7)Неправильная настройка веб-сервера

9.

Что делать перед тестированием?
1)Определяемся с инструментом.
2)Проводим аудит инфраструктуры.
3)Согласование действий с командой разработчиков.
4)Составление сценариев тестирования.

10.

Что используют для тестирования?
Два инструмента, которые часто используются:
Apache JMeter и Яндекс танк.

11.

Как можно составлять сценарии для тестирования?
1)Вручную прописываем url, которые хотим простучать.
2)Импорт из curl(консоль разработчика в браузере).
3)Ручное прокликивание, с перенаправлением трафика через JMeter.

12.

Итоги
Нет метрики, по которой измеряется отказоустойчивость, это слишком
индивидуальный показатель. Мы сами устанавливаем степень
необходимой отказоустойчивости, в зависимости от задачи.
English     Русский Rules