Как отличить стресс от нагрузки? В тестировании
Название статьи достойно публикации в каком-нибудь именитом блоге на личную эффективность. Но речь здесь пойдет про тестирование 🙂
Нагрузочное и стрессовое – подвиды нефункционального тестирования. Оба примерно об одном и том же, но разница есть. Об этой разнице могут спрашивать на собеседованиях, поэтому полезно ее знать. Ответы вроде – нагрузка это когда сильно нагружаем, а стрессовое – когда совсем сильно нагружаем – не катят 🙂
Итак, давайте разберемся, в чем отличие.
Нагрузочное тестирование или Load Testing это проверка того, как работает ваша система под разными уровнями нагрузки до предельного значения, которое она должна выдерживать. Предельное значение должно быть прописано в нефункциональных требованиях по нагрузке. При таком тестировании замеряется время отклика системы и скорость обработки запросов от пользователей (например, как быстро открываются и прогружаются страницы сайта, как быстро система выполняет расчеты, выдает результаты поиска и т.д.), а также сколько ресурсов “съедает” система – сетевых, процессорных, памяти.
Основная цель нагрузочного тестирования заключается в том, чтобы, создав определенную нагрузку наблюдать за показателями производительности системы. Причем мы сами решаем на какой именно нагрузке проверять, главное, чтобы значение этой нагрузки не превышало значения, указанного в требованиях.
Рассмотрим на примере сайта интернет магазина.
Мы рассчитываем, что наш интернет магазин должен выдержать 5000 пользователей, которые одновременно работают на сайте, причем:
- 50% пользователей только просматривают товары
- 20% пользователей добавляют товар в корзину и уходят
- 20% заходят на сайт, но ничего на нем не делают
- 10% пользователей покупают товар
При таком раскладке время отклика нашего сайта должно составлять не более 5 секунд.
Для проведения такого тестирования эмулируется указанная выше нагрузка и измеряется время отклика.
Но в чем же отличие от стрессового?
Стрессовое тестирование или Stress Testing оценивает скорость работы системы, если нагрузка на систему выше нормы, описанной в требованиях, или же в состоянии ограниченных ресурсов (память, скорость интернета).
Если рассмотреть пример с интернет магазином, то стресс тестирование будет проводится на более, чем 5000 одновременно работающих пользователей.
Итого, нагрузочное – это тестирование в пределах значений нагрузки, которые должна выдерживать система, а стрессовое – это тестирования за ее пределами.
Еще один пример. Требование гласит, что приложение должно работать быстро (время обработки запросов не более 3 секунд), если на устройстве не менее 500 Мб свободной оперативной памяти. Если мы эмулируем работу приложения при памяти меньше 500 Мб – это будет стрессовое тестирование.
Зачем проводить стрессовое тестирование, если наш сайт и не должен уметь работать на более чем на 5000 одновременно работающих пользователях? Так прописано в требованиях.
Ответ простой. Мы должны знать, что будет, если вдруг наш сайт резко станет популярным и число посетителей возрастет. Важно, чтобы сайт хоть как-то мог работать, пусть медленно, но не упадет совсем.
Также это полезно, если мы неверно оценили ожидаемую нагрузку на сайт. Прописали в требованиях, что 5000 – это предел, а на самом деле на сайт будет заходить по 8000 человек одновременно.
Еще полезно знать, как поведет себя наш сайт, если его будут пытаться DDoS-ить, например, конкуренты попытаются его “сломать” большим числом фиктивных пользователей, чтобы реальные покупатели шли к ним.
Теперь вы знаете разницу между нагрузкой и стрессом. Используйте знания с пользой!