Вопрос проверяет понимание различий между нагрузочным и стресс-тестированием, что важно для оценки производительности и стабильности системы.
Нагрузочное тестирование (load testing) и стресс-тестирование (stress testing) — это два подтипа тестирования производительности, которые преследуют разные цели. Нагрузочное тестирование проверяет, как система ведёт себя при ожидаемом уровне нагрузки, например, при 1000 одновременных пользователей. Стресс-тестирование, наоборот, нагружает систему сверх нормы, чтобы найти её пределы и проверить, как она восстанавливается после сбоя.
Представьте интернет-магазин. Нагрузочное тестирование поможет убедиться, что сайт выдержит 5000 покупателей в час в чёрную пятницу. Стресс-тестирование покажет, что произойдёт при 20000 пользователей — упадёт ли сервер, зависнет ли база данных, и как быстро система вернётся в норму после снижения нагрузки.
Для нагрузочного тестирования можно использовать Apache JMeter или k6. Пример скрипта на k6 для нагрузочного теста:
import http from 'k6/http';
import { sleep } from 'k6';
export let options = {
stages: [
{ duration: '2m', target: 100 }, // плавный рост до 100 пользователей
{ duration: '5m', target: 100 }, // поддержание нагрузки
{ duration: '2m', target: 0 }, // снижение
],
};
export default function () {
http.get('https://test.k6.io');
sleep(1);
}Для стресс-тестирования можно увеличить целевое количество пользователей до 500 или 1000 и добавить этап резкого роста:
export let options = {
stages: [
{ duration: '1m', target: 500 }, // быстрый рост
{ duration: '3m', target: 500 }, // пиковая нагрузка
{ duration: '1m', target: 0 }, // спад
],
};Нагрузочное тестирование применяется для проверки соответствия требованиям производительности, а стресс-тестирование — для оценки устойчивости и восстановления системы. Оба подхода важны для обеспечения надёжности приложения в реальных условиях.