project roles
Роли в IT проектах. Те, кто все это создает
2017-11-03
RocketBrain. How to create bugs
Как правильно заводить баги
2017-12-12

Как отличить стресс от нагрузки?

rocket-brain-load-testing

Название статьи достойно публикации в каком-нибудь именитом блоге на личную эффективность. Но речь здесь пойдет про тестирование 🙂

Нагрузочное и стрессовое — подвиды нефункционального тестирования. Оба примерно об одном и том же, но разница есть. Об этой разнице могут спрашивать на собеседованиях, поэтому полезно ее знать. Ответы вроде — нагрузка это когда сильно нагружаем, а стрессовое — когда совсем сильно нагружаем — не катят 🙂

Итак, давайте разберемся, в чем отличие.

Нагрузочное тестирование или Load Testing  это проверка того, как работает ваша система под разными уровнями нагрузки до предельного значения, которое она должна выдерживать. Предельное значение должно быть прописано в нефункциональных требованиях по нагрузке. При таком тестировании замеряется время отклика системы и скорость обработки запросов от пользователей (например, как быстро открываются и прогружаются страницы сайта, как быстро система выполняет расчеты, выдает результаты поиска и т.д.), а также сколько ресурсов “съедает” система — сетевых, процессорных, памяти.

Основная цель нагрузочного тестирования заключается в том, чтобы, создав определенную нагрузку наблюдать за показателями производительности системы. Причем мы сами решаем на какой именно нагрузке проверять, главное, чтобы значение этой нагрузки не превышало значения, указанного в требованиях.

Рассмотрим на примере сайта интернет магазина.

Мы рассчитываем, что наш интернет магазин должен выдержать 5000 пользователей, которые одновременно работают на сайте, причем:

  • 50% пользователей только просматривают товары
  • 20% пользователей добавляют товар в корзину и уходят
  • 20% заходят на сайт, но ничего на нем не делают
  • 10% пользователей покупают товар

При таком раскладке время отклика нашего сайта должно составлять не более 5 секунд.

Для проведения такого тестирования эмулируется указанная выше нагрузка и измеряется время отклика.

Но в чем же отличие от стрессового?

Стрессовое тестирование или Stress Testing оценивает скорость работы системы, если нагрузка на систему выше нормы, описанной в требованиях, или же в состоянии ограниченных ресурсов (память, скорость интернета).

Если рассмотреть пример с интернет магазином, то стресс тестирование будет проводится на более, чем 5000 одновременно работающих пользователей.

Итого, нагрузочное — это тестирование в пределах значений нагрузки, которые должна выдерживать система, а стрессовое — это тестирования за ее пределами.

Еще один пример. Требование гласит, что приложение должно работать быстро (время обработки запросов не более 3 секунд), если на устройстве не менее 500 Мб свободной оперативной памяти. Если мы эмулируем работу приложения при памяти меньше 500 Мб — это будет стрессовое тестирование.

Зачем проводить стрессовое тестирование, если наш сайт и не должен уметь работать на более чем на 5000 одновременно работающих пользователях? Так прописано в требованиях.

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

Также это полезно, если мы неверно оценили ожидаемую нагрузку на сайт. Прописали в требованиях, что 5000 — это предел, а на самом деле на сайт будет заходить по 8000 человек одновременно.

Еще полезно знать, как поведет себя наш сайт, если его будут пытаться DDoS-ить, например, конкуренты попытаются его “сломать” большим числом фиктивных пользователей, чтобы реальные покупатели шли к ним.

Теперь вы знаете разницу между нагрузкой и стрессом. Используйте знания с пользой!

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *