Добавил:
выбрасываю тут свой мусор, надеюсь, что он кому-то может пригодится... Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP-KONEChNYJ.docx
Скачиваний:
20
Добавлен:
03.12.2023
Размер:
7.72 Mб
Скачать

29. Тестирование методом черного и белого ящиков и их применение к модульному тестированию.

Тестирование по требованиям или тестирование "черного ящика" подразумевает неиспользование сведений о структуре исходного кода. Все тестовые примеры составляются только на основе требований, т.е. мы не видим, что находится внутри SUT (тестируемая система) и как оно работает. Единственное, что доступно - это то, что SUT должно делать, внешние эффекты поведения программного обеспечения.

Рассмотрим, например, следующее требование к функции умножения двух целых чисел. Если входное значение хотя бы одного множителя выходит за границы диапазона [15 ... 1500], то функция должна вернуть значение 0, в противном случае функция должна вернуть значение произведения двух множителей. Для тестирования этого требования (если быть точнее, то двух требований) необходимо проверить значения множителей как из диапазона [15 ... 1500], так и вне его.

Метод тестирования "черного ящика" выявляет все несоответствия между требованиями к ПО и поведением самого ПО.

Тестирование по коду или тестирование "белого ящика" основывается на проверке кода SUT, когда в ходе выполнения SUT проверяется выполнение каждого блока кода. При тестировании "белого ящика" основная задача - это выполнение всего кода для проверки работоспособности всех его ветвей. При этом ставится задача покрытия кода тестами и рассматриваются разные уровни покрытия. Один из уровней покрытия (покрытие операторов) - это выполнение всех операторов, т.е. при выполнении всех тестовых примеров в итоге должны выполниться все операторы (не в каждом тестовом примере, а по результатам выполнения всех тестовых примеров).

Недостатки:

  • высокозатратный процесс, требующий квалифицированного отладчика;

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

30. Назначение и целесообразность использования заглушек.

Заглушка - это компонент, который не делает ничего кроме того, что объявляет себя и набор принимаемых параметров. Заглушка содержит минимум кода, необходимого для ее компиляции и компоновки с остальными компонентами.

Тестирование компонента заключается в подаче входных данных в его интерфейс, ожидании ответа компонента и проверки полученных результатов. В процессе работы компоненты часто пользуются другими компонентами, передают им данные и используют полученную от них информацию:

Эти другие компоненты могут вызывать сложности при тестировании:

  • Они могут быть еще не реализованы.

  • В них могут быть ошибки, нарушающие работу тестов;

  • Компоненты могут затруднять тестирование тогда, когда это действительно надо;

  • Компоненты могут настолько замедлить тестирование, что станет невозможно выполнять тесты достаточно часто;

  • Может быть сложно поставить компонент в условия, при которых он выдаст ожидаемый от него результат. Например, перед вами может стоять задача протестировать обработку сообщения "диск переполнен" для всех методов, осуществляющих запись на диск. Как гарантировать, что диск будет заполнен именно на момент вызова нужного метода?

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

Соседние файлы в предмете Объектно-ориентированное программирование