Стресс-тестирование — это деятельность по тестированию программного обеспечения , которая определяет надежность программного обеспечения путем тестирования за пределами нормальной работы. Стресс-тестирование особенно важно для « критически важного » программного обеспечения, но используется для всех типов программного обеспечения. Стресс-тесты обычно уделяют больше внимания надежности, доступности и обработке ошибок при большой нагрузке, чем тому, что считалось бы правильным поведением в обычных обстоятельствах.
Стресс-тест системы относится к тестам, которые уделяют больше внимания надежности , доступности и обработке ошибок при большой нагрузке, а не тому, что можно было бы считать правильным поведением в обычных обстоятельствах. В частности, целями таких тестов может быть обеспечение того, чтобы программное обеспечение не давало сбоев в условиях нехватки вычислительных ресурсов (например, памяти или дискового пространства ), необычно высокого параллелизма или атак типа «отказ в обслуживании» .
Примеры:
Стресс-тестирование можно противопоставить нагрузочному тестированию:
Неисправности могут быть связаны с:
Причины проведения стресс-тестирования включают в себя:
Покрытие ветвей (определенный тип покрытия кода ) — это метрика количества ветвей, выполненных в ходе тестирования, где «100% покрытие ветвей» означает, что каждая ветвь в программе была выполнена хотя бы один раз в ходе некоторого теста. Покрытие ветвей — одна из важнейших метрик для тестирования программного обеспечения; программное обеспечение, для которого покрытие ветвей низкое, обычно не считается полностью протестированным. Обратите внимание, что [ editorializing ] метрики покрытия кода являются свойством тестов для части программного обеспечения, а не тестируемого программного обеспечения.
Достижение высокого покрытия ветвей часто включает написание отрицательных тестовых вариаций, то есть вариаций, где программное обеспечение должно каким-то образом дать сбой, в дополнение к обычным положительным тестовым вариациям, которые проверяют предполагаемое использование. Примером отрицательной вариации может быть вызов функции с недопустимыми параметрами. Однако существует предел покрытия ветвей, которого можно достичь даже с отрицательными вариациями, поскольку некоторые ветви могут использоваться только для обработки ошибок, которые находятся вне контроля теста. Например, тест обычно не контролирует распределение памяти, поэтому ветви, которые обрабатывают ошибку «недостаточно памяти», трудно тестировать.
Стресс-тестирование может достичь более высокого покрытия ветвей, создавая условия, при которых выполняются определенные ветви обработки ошибок. Покрытие может быть дополнительно улучшено с помощью инъекции неисправностей .
Стресс-тестирование обычно состоит из тестирования за пределами указанных пределов с целью определения точек отказа и восстановления после отказа. [1] [2]
Нагрузочное тестирование подразумевает контролируемую среду, переходящую от низких нагрузок к высоким. Стресс-тестирование фокусируется на более случайных событиях, хаосе и непредсказуемости. Используя веб-приложение в качестве примера, вот способы, которыми может быть введен стресс: [1]
Платформа тестирования программного обеспечения на основе шаблонов для оценки эксплуатируемости уязвимостей повреждения метаданных, разработанная Дэн Фэнглеем, Ван Цзянем, Чжан Бинем, Фэн Чао, Цзян Чжиюанем, Су Юньфэем, обсуждает, как возросло внимание к обеспечению качества и защите программного обеспечения. Однако, к сожалению, современное программное обеспечение по-прежнему не защищено от кибератак, особенно при наличии небезопасной организации метаданных кучи. Авторы стремятся исследовать, могут ли метаданные кучи быть повреждены и использованы киберпреступниками, и предлагают RELAY, платформу тестирования программного обеспечения для имитации поведения человека при эксплуатации для повреждения метаданных на уровне машины. RELAY также использует меньше ресурсов, потребляемых для решения проблемы макета в соответствии с шаблоном эксплойта, и генерирует окончательный эксплойт.
Методология определения гранулярности учебных объектов, разработанная BENITTI, Fabiane Barreto Vavassori. Сначала авторы обсуждают, как учебный объект является одной из основных тем исследований в сообществе электронного обучения в последние годы, а гранулярность является ключевым фактором для повторного использования учебных объектов. Затем авторы представляют методологию определения гранулярности учебных объектов в области вычислений, а также пример из тестирования программного обеспечения. Позже авторы проводят пять экспериментов для оценки потенциала обучения из созданных учебных объектов, а также для демонстрации возможности повторного использования учебных объектов. Результаты эксперимента также представлены в статье, которые показывают, что учебный объект способствует пониманию и применению концепций.
Недавняя статья, Проверка надежности программного обеспечения на основе облачного сервиса, имеет новаторский эффект и исследует, как индустрия программного обеспечения нуждается в способе измерения надежности каждого компонента программного обеспечения. В этой статье был предложен метод проверки гарантии на основе облачного сервиса . В статье сначала обсуждается, насколько надежен каждый компонент, который будет определен с точки зрения проверки гарантии сервиса компонента. Затем в статье была определена эффективная модель компонента и на основе предложенной модели процесс проверки сервиса компонента проиллюстрирован в примере приложения.