Пример.
Метод покрытия операторов
Целью этого метода тестирования является выполнение каждого оператора программы хотя бы один раз.
Если для тестирования задать значения переменных А = 2, B = 0, Х=3, будет реализован путь асе, т. е. каждый оператор программы выполнится один раз (рис. Л5.1, а). Но если внести в алгоритм ошибки — заменить в первом условии and на or, а во втором Х> 1 на Х< 1 (рис. Л5.1, б), ни одна ошибка не будет обнаружена (табл. Л5.1). Кроме того, путь abd вообще не будет охвачен тестом, и если в нем есть ошибка, она также не будет обнаружена. В табл. Л5.1 ожидаемый результат определяется по блок-схеме на рис. Л5.1, а, а фактический — по рис. Л5.1, б.
Как видно из этой таблицы, ни одна из внесенных в алгоритм ошибок не будет обнаружена.
Таблица Л5.1. Результат тестированияметодом покрытия операторов
Тест | Ожидаемый результат | Фактический результат | Результат тестирования |
А = 2, B = 0, Х=3 | Х=2,5 | Х=2,5 | Неуспешно |
Метод покрытия решений (покрытия переходов)
Согласно методу покрытия решений каждое направление перехода должно быть реализовано, по крайней мере, один раз. Этот метод включает в себя критерий покрытия операторов, так как при выполнении всех направлений переходов выполнятся все операторы, находящиеся на этих направлениях.
Для программы, приведенной на рис. Л5.1, покрытие решений может быть выполнено двумя тестами, покрывающими пути {асе, abd\, либо {acd, abe]. Для этого выберем следующие исходные данные: {А = 3, B=0, Х=3} — в первом случае и {А = 2, В=1, Х= 1} — во втором. Однако путь, где А не меняется, будет проверен с вероятностью 50%: если во втором условии вместо условия Х> 1 записано Х< 1, то ошибка не будет обнаружена двумя тестами.
Результаты тестирования приведены в табл. Л5.2.
Таблица Л5.2. Результат тестирования методом покрытия решений
Тест | Ожидаемый результат | Фактический результат | Результат тестирования |
A = 3, B=0, X=3 | Х=1 | Х=1 | Неуспешно |
A = 2, B=1,X=1 | Х=1 | Х=1,5 | Успешно |