Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
НПО - ПОИТ (Бахтизин).doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

8.8.2.2. Тестирование по критерию путей

Данный подход основан на генерировании таких наборов исходных данных (тестов, тестовых случаев), при которых каждый реализованный путь модуля должен быть выполнен хотя бы один раз.

Рассмотрим потоковый граф некоторой программы, представленный на рис. 8.8.

Из анализа графа видно, что все возможные пути модуля практически проверить невозможно из-за огромного возможного числа повторений вершины 7. Цикломатическое число Z(G) данного графа равно

Z(G) = E – V + 2 = 9 – 8 + 2 = 3.

Рис. 8.8. Пример потокового графа некоторого программного модуля

Оно показывает, что существует три независимых пути в базовом множестве модуля:

1 – 2 – 4 – 5 – 6 – 8,

1 – 2 – 3 – 5 – 6 – 8,

1 – 2 – 4 – 5 – 6 – 7 – 6 – 8.

Очевидно, что данные три базовых пути реально можно проверить.

Определим значения данных для выбора того или иного пути:

1) a ≤ b, с = 0;

2) a > b, с = 0;

3) a ≤ b, c ≠ 0;

На практике используется более слабый вариант тестирования по критерию путей. В данном случае тесты генерируются таким образом, чтобы циклы, чье число повторений практически неограниченно, выполнялись ограниченное число раз.

Полнота тестирования по критерию путей определяется следующим образом:

K1 = (m / n) * 100 %,

где:

n – общее число возможных путей в модуле;

m – число выполненных возможных путей.

8.8.2.3. Тестирование по критерию ветвей

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

В соответствии с данным подходом тесты должны генерироваться таким образом, чтобы реализованные пути модуля обеспечивали покрытие всех его ветвей. В данном случае анализируются точки ветвления графа, чтобы определить данные, необходимые для выбора каждой ветви хотя бы один раз. Очевидно, что рассмотренное ранее базовое множество обеспечивает 100%-ое покрытие всех ветвей графа. Таким образом, в соответствии с данным подходом необходимо сгенерировать три теста, чтобы каждая ветвь модуля была выполнена хотя бы один раз.

Полнота тестирования по критерию ветвей:

K2 = (m/n)*100%,

где:

m – число выполненных возможных ветвей;

n – общее число возможных ветвей модуля.

8.8.2.4. Метод тестирования базисных путей

Автор метода - Том МакКейб.

Данный метод позволяет:

1) получить оценку сложности модуля;

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

Суть метода заключается в следующем:

На основе схемы алгоритма модуля формируется потоковый граф. Пусть схема алгоритма имеет общий вид, приведенный на рис. 8.9. Данной схеме соответствует граф, изображенный на рис. 8.10.

Рис. 8.10. Потоковый граф модуля

Определяется цикломатическая сложность потокового графа, с помощью перечисленных в п. формул. Для рассматриваемого примера

Z(G) = 4.

Определяется базовое множество независимых путей. Для этого в начале выбирается любой один путь от входа в модуль к его выходу. Данный путь назовем первым базовым путем.

Для нашего примера первый базовый путь:

1 – 2 (true) – 4 – 5 – 6 – (8 (true)) – 10.

Чтобы получить второй путь, необходимо в первом базовом пути поменять результат первого условного выражения, при этом сохраняя по возможности результаты остальных условных выражений. Т.е. после того как произошло воссоединение с первым базовым путем, его следует придерживаться до самого выхода. Любые встреченные условные выражения, которые не являются частью первого базового пути, могут принимать любые значения.

2) 1 – 2 (false) – 3 (true) – 5 – 6 – 8 (true) – 10.

Для получения третьего пути необходимо поменять в первом базовом пути уже результат не первого, а второго условного выражения:

3) 1 – 2 (true) – 4 – 5 – 6 – 8 (false) – 9 – (8 (true)) – 10.

В третьем базовом пути с целью достижения конечной вершины “10” оператор “8” принял значение “true”. Однако, данное условие не будем считать изменением базового пути. Это вспомогательный элемент базового пути, позволяющий потоку управления дойти до выходной вершины.

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

Преобразуем второй путь. В результате получим:

1 – 2(false) – 3(false) – 7 – 6 – 8 (true) – 10.

После того как все операторы в модуле выполнены в каждом направлении, набор тестовых путей будет закончен.

Достоинством метода является его независимость от вида потокового графа, т.е. метод применим как для циклических, так и для ациклических графов.