Стресс-тестирование (программное обеспечение)

редактировать

Стресс-тестирование - это деятельность по тестированию программного обеспечения, которая определяет надежность программного обеспечения путем тестирования, выходящего за пределы нормальной работы. Стресс-тестирование особенно важно для « критически важного » программного обеспечения, но используется для всех типов программного обеспечения. Стресс-тесты обычно делают больший упор на надежность, доступность и обработку ошибок при большой нагрузке, чем на то, что считается правильным поведением при нормальных обстоятельствах.

СОДЕРЖАНИЕ
  • 1 Полевой опыт
  • 2 Обоснование
  • 3 Связь с покрытием филиала
  • 4 Примеры
  • 5 Сравнение нагрузочного теста и стресс-теста
  • 6 См. Также
  • 7 ссылки
Полевой опыт

Неисправности могут быть связаны с:

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

Причины стресс-тестирования включают:

  • Тестируемое программное обеспечение является «критически важным», то есть отказ программного обеспечения (например, сбой ) имел бы катастрофические последствия.
  • При традиционных методах тестирования количество времени и ресурсов, выделяемых на тестирование, обычно недостаточно для тестирования всех ситуаций, в которых программное обеспечение будет использоваться при его выпуске.
  • Даже при наличии достаточного количества времени и ресурсов для написания тестов может оказаться невозможным заранее определить все различные способы использования программного обеспечения. Это особенно верно для операционных систем и промежуточного программного обеспечения, которое в конечном итоге будет использоваться программным обеспечением, которого даже не существует на момент тестирования.
  • Клиенты могут использовать программное обеспечение на компьютерах, которые имеют значительно меньше вычислительных ресурсов (таких как память или дисковое пространство ), чем компьютеры, используемые для тестирования.
  • Целостность входных данных не может быть гарантирована. Входные данные относятся к программному обеспечению: это могут быть файлы данных, потоки и буферы памяти, а также аргументы и параметры, передаваемые исполняемому файлу командной строки, или вводимые пользователем данные, запускающие действия в приложении с графическим интерфейсом пользователя. Для поиска проблем, связанных с повреждением или несогласованностью данных, можно использовать методы фаззинга и обезьяньего тестирования.
  • Параллелизм особенно сложно протестировать с помощью традиционных методов тестирования. Для выявления состояний гонки и взаимоблокировок может потребоваться стресс-тестирование.
  • Программное обеспечение, такое как веб-серверы, которые будут доступны через Интернет, может подвергаться атакам типа «отказ в обслуживании».
  • В нормальных условиях определенные типы ошибок, такие как утечки памяти, могут быть довольно безобидными, и их трудно обнаружить в течение коротких периодов времени, в течение которых выполняется тестирование. Однако эти ошибки могут быть потенциально серьезными. В некотором смысле стресс-тестирование в течение относительно короткого периода времени можно рассматривать как моделирование нормальной работы в течение более длительного периода времени.
Связь с покрытием филиала

Покрытие ветвей (конкретный тип покрытия кода ) - это показатель количества ветвей, выполняемых при тестировании, где «100% покрытие ветвей» означает, что каждая ветвь в программе была выполнена хотя бы один раз в рамках некоторого теста. Покрытие филиалов - один из наиболее важных показателей для тестирования программного обеспечения; программное обеспечение с низким охватом ветвей обычно не считается тщательно протестированным. Обратите внимание, что показатели покрытия кода являются свойством тестов для части программного обеспечения, а не для тестируемого программного обеспечения.

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

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

Примеры
Нагрузочный тест против стресс-теста

Стресс-тестирование обычно состоит из тестирования, выходящего за установленные пределы, для определения точек отказа и восстановления после отказа.

Нагрузочное тестирование подразумевает переход контролируемой среды от низких нагрузок к высоким. Стресс-тестирование фокусируется на более случайных событиях, хаосе и непредсказуемости. Используя веб-приложение в качестве примера, вот способы, которыми может быть вызван стресс:

  • удвоить базовое число для одновременных пользователей / HTTP-соединений
  • произвольно отключать и перезапускать порты на сетевых коммутаторах / маршрутизаторах, которые подключают серверы (например, с помощью команд SNMP)
  • переведите базу данных в автономный режим, затем перезапустите ее
  • перестроить RAID-массив во время работы системы
  • запускать процессы, потребляющие ресурсы (ЦП, память, диск, сеть) на веб-серверах и серверах баз данных
  • наблюдать, как система реагирует на сбой и восстанавливается
    • Сохраняет ли он свое состояние?
    • Приложение зависает и зависает или корректно выходит из строя?
    • Может ли он восстановиться после перезапуска из последнего исправного состояния?
    • Выводит ли система значимые сообщения об ошибках для пользователя и в журналы?
    • Нарушена ли безопасность системы из-за неожиданных сбоев?
Смотрите также
Рекомендации
Последняя правка сделана 2023-04-17 01:42:48
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте