Метод покрытия условий

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

В рассматриваемом примере имеем условия: {А> 1, B = 0}, {А = 2, Х> 1}. Следовательно, требуется достаточное число тестов, такое, чтобы реализовать ситуации, где А > 1, А < 1, В= О и В<> 0 в точке а и А = 2, А<> 2, Х> 1 и Х< 1 в точке b. Тесты, удовлетворяющие критерию покрытия условий (табл. Л5.3), и соответствующие им пути:

а) А = 2, B=0, Х=4 асе;

6)А= 1, В = 1, Х=0 abd.

Таблица Л5.3. Результаты тестирования методом покрытия условий

Тест Ожидаемый результат Фактический результат Результат тестирования
A = 2, B=0, Х= 4 X=3 X=3 Неуспешно
А=1, В=1,Х=0 X=0 Х=1 Успешно

Метод покрытия решений/условий

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

Недостатки метода:

• не всегда можно проверить все условия;

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


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

Так, в рассматриваемом примере два теста метода покрытия условий

а) А = 2, B=0, Х=4 асе;

б)A= 1, В=1,Х=0 abd

отвечают и критерию покрытия решений/условий. Это является следствием того, что одни условия приведенных решений скры­вают другие условия в этих решениях. Так, если условие А > 1 будет ложным, транслятор может не проверять условия B=0, поскольку при любом результате условия ,B=0 результат реше­ния ((А> 1)&(B=0)) примет значение ложь. То есть в варианте на рис. Л5.1 не все результаты всех условий выполнятся в про­цессе тестирования.

Рассмотрим реализацию того же примера на рис. Л5.2. Наи­более полное покрытие тестами в этом случае осуществляется так, чтобы выполнялись все возможные результаты каждого про­стого решения. Для этого нужно покрыть пути aceg (тест А = 2, B=0, X=4), acdfh (тест A = 3, B= 1,X=0), abfh (тест A = 0, B = 0, Х= 0), abfi (тест А = 0, B= 0, Х= 2).



 

Протестировав алгоритм на рис. Л5.2, нетрудно убедиться в том, что критерии покрытия условий и критерии покрытия ре­шений/условий недостаточно чувствительны к ошибкам в логи­ческих выражениях.