Similar presentations:
Лекция 6. Тестирование базового пути
1. Тестирование базового пути
ТЕСТИРОВАНИЕБАЗОВОГО ПУТИ
МДК 01.02 Поддержка и тестирование программных модулей
Преподаватель: Токарева Полина Николаевна
2. Введение
• Тестирование базового пути – это способ тестирования,который основан на принципе «белого ящика»
• При использовании тестирования «белого ящика» известна
внутренняя структура программы, исследуются внутренние
элементы программы и связи между ними
3. Какие возможности дает тестирование базового пути
Способ тестирования базового пути дает возможность:• получить оценку комплексной сложности программы;
• использовать эту оценку для определения необходимого
количества тест-кейсов.
• Тест-кейсы
разрабатываются для проверки базового
множества путей (маршрутов) в программе. Они
гарантируют однократное выполнение каждого оператора
программы при тестировании.
4. Этапы тестирования базового пути
1.Формирование потокового графа
2.
Определение цикломатической сложности потокового
графа
3.
Определение базового множества независимых линейных
путей
4.
Подготовка тест-кейсов, инициирующих выполнение
каждого пути
5.
Сравнение реальных и ожидаемых результатов
5. Пример работы
• Написать программу длявычисления значения функции:
5 x 1 при x 2
f ( x)
1 3x при x 2
6. Формирование потокового графа
• Потоковый граф показывает, как устроена программа. Онстроится на основе структуры программы, и в нём
закрывающие скобки условных операторов и циклов
считаются отдельными операторами.
7. Формирование потокового графа
• Чтобыпостроить потоковый
граф,
мы
пронумеровали
операторы
программы.
Операторы,
которые
идут
подряд и не содержат условий
или циклов, объединили в один
узел. Например, первые четыре
строки
программы,
где
объявляются переменные и
вводятся данные с клавиатуры,
обозначили цифрой 1.
8. Структура потокового графа
• Узлы(вершины) потокового графа представляют собой
части программы, которые включают один или несколько
операторов.
• Дуги (линии) потокового графа показывают, как управление
передаётся от одного оператора к другому.
• Есть два типа узлов: операторные и предикатные. Из
операторного узла идёт максимум одна дуга, а из
предикатного — всегда две.
• Области, образованные узлами и дугами, называются
регионами. А всё, что вокруг графа, считается
дополнительным регионом.
9. Потоковый граф (структура)
УзлыДуги
Регионы
10. Потоковый граф (типы узлов)
предикатныеоператорные
Предикатные
узлы
соответствуют простым
условиям в программе.
Если условие сложное
(использует логические
операции «и», «или» и т.
д.), оно разбивается на
несколько предикатных
узлов.
11. Определение цикломатической сложности потокового графа
• Цикломатическаясложность — это показатель, который
помогает понять, насколько программа сложная с точки
зрения её логики.
• При тестировании программы цикломатическая сложность
показывает:
• сколько есть независимых путей в программе, которые стоит
проверить;
• какое максимальное количество тестов нужно провести, чтобы
каждый шаг программы выполнился хотя бы один раз.
12. Определение цикломатической сложности потокового графа
Цикломатическая сложность вычисляется одним из трехспособов:
• По количеству регионов
• По количеству дуг и узлов
• По предикатным узлам
13. ЦС по количеству регионов
• Цикломатическая сложность равнаколичеству регионов потокового графа. В
рассматриваемом примере потоковый граф G
имеет 2 региона (R1, R2), следовательно,
цикломатическая сложность равна V(G) = 2
14. ЦС по количеству дуг и узлов
• Цикломатическая сложность определяется поформуле V(G) = E – N +2 , где E – количество
дуг, N – количество узлов потокового графа.
• В рассматриваемом примере число дуг в
потоковом графе равно E = 5, а число узлов
равно N = 5, следовательно, согласно
формуле выше, цикломатическая сложность
равна: V(G) = E – N + 2 = 5 – 5 + 2 = 2.
15. ЦС по предикатным узлам
• Цикломатическая сложность определяется поформуле V(G) = p + 1, где p – число
предикатных узлов в потоковом графе.
• В рассматриваемом примере число
предикатных узлов в потоковом графе равно
p = 1, следовательно, согласно формуле выше,
цикломатическая сложность равна: V(G) = p + 1
=1+1=2
16. Определение базового множества независимых линейных путей
• Независимымназывается любой путь, который
вводит новый оператор обработки или новое ПУТЬ 1
условие.
В
терминах
потокового
графа
независимый путь должен содержать дугу, не
входящую в ранее определенные пути.
• Путь
начинается в начальном узле, а
заканчивается
в
конечном
узле
графа.
Независимые пути формируются в порядке от
самого короткого к самому длинному. Все
независимые пути графа образуют базовое
множество.
ПУТЬ 2
17. Определение базового множества независимых линейных путей
Свойства базового множества:• тесты,
обеспечивающие его проверку, гарантируют
однократное выполнение каждого оператора, а также
выполнение каждого условия по true-ветви и по false-ветви;
• мощность
базового множества равна цикломатической
сложности потокового графа.
18. Подготовка тест-кейсов, инициирующих выполнение каждого пути
• Подготавливаютсятест-кейсы, инициирующие выполнение каждого пути. Для
каждого тест-кейса (ТК) формируются входные данные и ожидаемые результаты.
• Количество
тест-кейсов
независимых путей
должно
соответствовать
выявленному
множеству
19. Сравнение реальных и ожидаемых результатов
• Реальные результаты каждого тест-кейса сравниваются сожидаемыми результатами.
• Определим реальные результаты работы программы в
рассматриваемом примере для каждого из тест-кейсов. Из
таблицы можно сделать вывод, что для каждого тест-кейса
реальный результат работы программы удовлетворяет
ожидаемому.
20. Зачем всё таки необходимо тестирование базового пути?
• Тестирование базового пути необходимо для того, чтобыубедиться в корректности работы программы. Оно
позволяет проверить все основные пути выполнения
программы, включая различные условия и операторы. Это
помогает выявить ошибки и недочёты в коде, которые могут
привести к некорректной работе программы. Тестирование
базового пути помогает гарантировать, что каждый путь в
программе будет выполнен хотя бы один раз, что повышает
надёжность и качество программного обеспечения.
programming