Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
sqtv_konsp.doc
Скачиваний:
18
Добавлен:
25.11.2019
Размер:
1.37 Mб
Скачать
  1. Покрытие ветвей

Покрытие решений может быть реализовано двумя тестами, покрывающими либо пути ace и abd, либо пути acd и abe. Если выбрать второе покрытие, то входами двух тестов являются: A=3; B=0; X=3 (путь acd) и A=2; B=1; X=1 (путь

abe). Эти тесты также недостаточны. Например, если выбрано первое покрытие (путь acd),путь, где X не изменяется, будет проверен с вероятностью 50%. Если во втором условии имеется ошибка (например, X<1 вместо X>1), то эта ошибка тестами не будет обнаружена!

  1. Покрытие условий

В программе имеются 4 условия: A > 1, B = 0, A = 2 и X > 1. Следовательно, требуется достаточное число тестов, чтобы реализовать ситуации, где A>1, A1, B=0 и B0 (первое условие) и A=2, A2, X>1, X1 (второе условие). Тесты, удовлетворяющие критерию покрытия условий, и соответствующие им пути:

  • A=2; B=0; X=4 (путь ace);

  • A=1; B=1; X=1 (путь abd)

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

С другой стороны, критерий покрытия условий может не удовлетворять критерию покрытия решений. Для рассмотренного примера предложенные тесты покрытия условий покрывают результаты всех решений, но это случайное совпадение. Например, два альтернативных теста: A=1, B= 0, X=3 и

A=2, B=1, X=1 покрывают результаты всех условий, но только два из четырех результатов решений (оба они покрывают путь abe и, следовательно, не выполняют результат истина первого решения и результат ложь второго решения).

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

По этому критерию должны быть покрыты тестами следующие 8 комбинаций:

(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

Следует обратить внимание, что комбинации (5) – (8) представляют собой значения второго оператора if. Поскольку X может быть изменено до выполнения этого оператора, значения, необходимые для его проверки, следует восстановить исходя из логики программы с тем, чтобы найти соответствующие входные значения.

Для того, чтобы протестировать эти комбинации, необязательно использовать все восемь тестов. Фактически они могут быть покрыты четырьмя тестами:

A=2, B=0, X=4 покрывает 1,5

A=2, B=1, X=1 покрывает 2,6

A=1, B=0, X=2 покрывает 3,7

A=2, B=0, X=4 покрывает 4,8

2. Тестирование на основе потока данных

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

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

  • тестирование всех взаимосвязей, включающих в себя ссылку (использование) и определение переменной, на которую указывает ссылка, т.е. должны покрываться дуги информационного графа программы. Недостаток стратегии заключается в том, что она не гарантирует покрытие решений;

  • стратегия требуемых пар, при которой тестируются пары (вершина, дуга). Использование переменной в предикате дублируется в соответствии с числом выходов решения, и каждая из таких взаимосвязей должна быть протестирована. При этом определение переменной производится в вершине управляющего графа программы, а использование – как на дугах, исходящих из решений, так и в вычислительных вершинах.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]