Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Текст лекций.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
1.59 Mб
Скачать

5.3.2. Методы стратегии «белого ящика»

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

  • покрытие операторов («все операторы»);

  • покрытие решений («все пути»);

  • комбинированное покрытие условий.

Сравним методы на примере фрагмента программы, приведенного ниже.

Пусть надо разработать тесты для проверки следующего фрагмента:

if (a>1) and (b=0) then

x := x / a;

{end if}

if (a=2) and (x>1) then

x := x + 1;

{end if}

Frame90

Метод покрытия операторов.

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

Тест 1. {a=2, b=0, x=6} Эталон: x=4

Метод покрытия решений.

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

  • Вариант 1. Первый тест – для случая, когда оба решения: первое -{(a>1) и (b=0)} и второе -{ (a=2) и (x>1) }, не выполняются, а второй – когда оба они выполняются;

  • Вариант 2. Первый – для случая, когда первое решение{(a>1) и (b=0)} выполняется, а второе { (a=2) и (x>1) } не выполняется, а во втором случае – наоборот, не выполняется первое и выполняется второе решение.

Приведем тесты для первого варианта.

Тест 1. {a=2, b=0, x=3} Эталон: x=2,5  Оба решения выполняются.

Тест 2. {a=3, b=1, x=1} Эталон: x=1  Оба решения не выполняются.

Метод комбинированного покрытия условий.

Все возможные комбинации условий в каждом решении должны быть выполнены хотя бы один раз.

Приведем вначале возможные комбинации условий для нашего фрагмента:

первый оператор if

второй оператор if

1) a>1 и b=0

5) a=2 и x>1

2) a>1 и b<>0

6) a=2 и x<=1

3) a<=1 и b=0

7) a<>2 и x>1

4) a<=1 и b<>0

8) a<>2 и x<=1

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

Тест 1. {a=2, b=0, x=4} Эталон: x=3

Тест 2. {a=2, b=1, x=4} Эталон: x=5

Тест 3. {a=1, b=0, x=2} Эталон: x=2

Тест 4. {a=1, b=1, x=1} Эталон: x=1

В заключение хотелось бы отметить, что и в случае, когда доступен текст программы, при разработке системы тестов удобно воспользоваться следующим приемом:

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

Детальный пример разработки тестов в процессе проектирования программы приведен в четвертой главе