Методы тестирования программного обеспечения. Степанченко И.В. - 44 стр.

UptoLike

Составители: 

имеет команд, реализующих решения со многими исходами. Наиболее
полное покрытие тестами в этом случае осуществляется таким образом,
чтобы выполнялись все возможные результаты каждого простого решения.
Два предыдущих теста критерия покрытия решений не выполняют этого;
они недостаточны для выполнения результата ложь решения H и результа-
та истина решения K. Набор тестов для критерия покрытия условий такой
программы также является неполным; два теста (которые случайно удов-
летворяют также и критерию покрытия решений/условий) не вызывают
выполнения результата ложь решения I и результата истина решения K.
     Причина этого заключается в том, что, как показано на рис. 4, результаты
условий в выражениях и и или могут скрывать и блокировать действие других
условий. Например, если условие и есть ложь, то никакое из последующих ус-
ловий в выражении не будет выполнено. Аналогично если условие или есть
истина, то никакое из последующих условий не будет выполнено. Следова-
тельно, критерии покрытия условий и покрытия решений/условий недоста-
точно чувствительны к ошибкам в логических выражениях.
                 3.1.5. Комбинаторное покрытие условий
     Критерием, который решает эти и некоторые другие проблемы, являет-
ся комбинаторное покрытие условий. Он требует создания такого числа тес-
тов, чтобы все возможные комбинации результатов условия в каждом
решении и все точки входа выполнялись, по крайней мере, один раз.
     По этому критерию для программы на рис. 3 должны быть покрыты
тестами следующие восемь комбинаций:
            1. А > 1, B = 0.         2. A > 1, В ≠ 0.
            3. A ≤ 1, В = 0.         4. A ≤ l, В ≠ 0.
            5. A = 2, X > 1.         6. A = 2, X ≤ l.
            7. А ≠ 2, Х > 1.         8. A ≠ 2, X ≤ l.
     Заметим, что комбинации 5–8 представляют собой значения второго опе-
ратора if. Поскольку Х может быть изменено до выполнения этого оператора,
значения, необходимые для его проверки, следует восстановить, исходя из ло-
гики программы с тем, чтобы найти соответствующие входные значения.
     Для того чтобы протестировать эти комбинации, необязательно ис-
пользовать все восемь тестов. Фактически они могут быть покрыты че-
тырьмя тестами. Приведем входные значения тестов и комбинации, кото-
рые они покрывают:
     A = 2, B = 0, X = 4     покрывает 1, 5;
     A = 2, В = 1, Х = 1     покрывает 2, 6;
     A = 1, B = 0, Х = 2     покрывает 3, 7;
     A = 1, B = 1, Х = 1     покрывает 4, 8.
     То, что четырем тестам соответствуют четыре различных пути на
рис. 3, является случайным совпадением. На самом деле представленные
                                     46