Тестирование на основе потока управления
При проведении структурного тестирования на основе управляющего графа программы используются следующие критерии:
· покрытие операторов (вершин графа) – заключается в выполнении каждого оператора программы хотя бы один раз. Этот критерий является весьма слабым (пропускает много ошибок), так как выполнение каждого оператора программы хотя бы один раз есть необходимое, но не достаточное условие для приемлемого тестирования по методу “белого ящика”;
· покрытие ветвей (решений) – при использовании этого критерия каждая дуга должна быть пройдена хотя бы один раз. Критерий покрытия решений обычно удовлетворяет критерию покрытия операторов, поскольку каждый оператор лежит на некотором пути.
· покрытие условий – каждое логическое условие в программе должно выполняться хотя бы один раз.
· покрытие условий/решений – поскольку критерии покрытия решений и условий не заменяют друг друга, поэтому их можно объединить, получив критерий покрытия условий/решений. Он требует такого набора тестов, чтобы все возможные результаты каждого условия в решении выполнялись по крайней мере один раз и все результаты каждого решения выполнялись по крайней мере один раз. Недостатком критерия покрытия решений/условий является невозможность его применения для выполнения всех результатов всех условий (некоторые условия могут быть скрыты другими условиями). Например, результаты условий при выполнении операций И и ИЛИ могут блокировать действия других условий. Так, если условие Иесть ложь, то никакое из последующих условий в выражении не будет выполнено. Аналогично, если условие ИЛИестьистина, то никакое из последующих условий в выражении не будет выполнено.
· комбинаторное покрытие условий – требует такого набора тестов, чтобы все возможные комбинации результатов условия в каждом решении выполнялись по крайней мере один раз. Слово возможные употреблено потому, что не все комбинации условий могут быть реализуемыми; например, в выражении (A>2) & (A<10) могут быть реализованы только три комбинации условий. Набор тестов, удовлетворяющий критерию комбинаторного покрытия условий, удовлетворяет также и критериям покрытия решений, покрытия условий и покрытия решений/условий;
· покрытие путей – каждый путь хотя бы один раз (это наиболее полный, но нереализуемый критерий);
· покрытие функций - каждая функция должна быть выполнена хотя бы один раз;
· покрытие вызовов – каждый вызов каждой функции хотя бы один раз.
Пример
if ( (A > 1) & ( B=0 ) ) then X:=X/A;
if ( (A = 2) Or ( X>1 ) ) then X:=X+1;
1) Покрытие операторов
a) Можно выполнить каждый оператор с помощью теста, который бы реализовал путь ace (A=2; B=0; X=3):
· Если в программе записано (A>1) OR (B=0) – Ошибка не обнаруживается!
· Если в программе (A=2) ! (X>0) – Ошибка не обнаруживается!
b) На пути abd все ошибки не обнаруживаются!
Дата добавления: 2015-08-26; просмотров: 1299;