
8. Минимально грубое тестирование
Обзор критериев белого ящика, данный в предыдущем разделе, подводит к необходимости построения некоторого компромиссного критерия, который, с одной стороны, обеспечивал бы достаточную надежность тестирования, а с другой — имел приемлемую сложность.
В качестве такого компромисса был предложен критерий минимально грубого тестирования (МГТ). МГТ представляет собой критерий покрытия решений/условий, усиленный дополнительными требованиями по проверке циклов. Проверка циклов организуется по следующим правилам:
для каждого цикла с предусловием должна быть проверена правильность при нулькратном, однократном и многократном повторении тела цикла. Многократным считается любое повторение более одного раза;
для каждого цикла с постусловием должна быть проверена правильность при однократном и многократном повторении тела цикла;
проверка цикла со счетчиком зависит от того, фиксированы ли границы изменения счетчика или вычисляются. Вообще говоря, как и для цикла с предусловием, требуется проверка при нулькратном, одно- и многократном повторении тела цикла.
Одно из преимуществ критерия минимально грубого тестирования состоит в том, что для него существует очень удобное представление в форме таблицы, которое позволяет контролировать степень выполнения критерия и придумывать тесты прицельно для проверки именно нужных частей программы. Строится таблица МГТ следующим образом.
Строки таблицы соответствуют проверяемым условиям,
графы — тестам.
Для каждого условного оператора в таблице МГТ создаются 2 строки: для ветви «то» и ветви «иначе».
-
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
if a > b
+
-
Для каждого цикла с предусловием — 3 строки: для нулькрат-ного, однократного и многократного повторения тела цикла.
-
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
while a > b
=0
=1
>1
Для каждого цикла с постусловием — 2 строки: для однократного и многократного повторения тела цикла.
-
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
repeat until a > b
=1
>1
Для каждого цикла со счетчиком — 3 строки: для нулькрат-ного, однократного и многократного повторения тела цикла.
-
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
=0
for k := l to n
=1
>1
Если либо из этих строк для данной программы не имеет смысла (например, по условиям задачи тело цикла обязательно повторяется хотя бы один раз), соответствующая строка все равно помещается в таблицу, но в ней записывается пояснение, что такая ситуация невозможна.
Для каждого оператора выбора записывается столько строк, сколько он имеет ветвей (включая ветвь «иначе»):
|
|
Тест 1 |
Тест 2 |
Тест3 |
Тест 4 |
Тест 5 |
case color |
red |
|
|
|
|
|
|
green |
|
|
|
|
|
|
blue |
|
|
|
|
|
|
else |
|
|
|
|
|
Если в условном операторе, в цикле с пред- или постусловием стоит сложное условие, то к строкам, соответствующим самому оператору, добавляются по 2 строки на каждое простое условие:
|
|
Тест 1 |
Тест 2 |
Тест3 |
Тест 4 |
Тест 5 |
if (a > b) and (х = у) |
+ |
|
|
|
|
|
|
- |
|
|
|
|
|
a > b |
+ |
|
|
|
|
|
|
- |
|
|
|
|
|
х = у |
+ |
|
|
|
|
|
|
- |
|
|
|
|
- |