
Лабораторна 1. Тестування потоків управління
Тестування потоків управління - це тестування програми відповідно до принципу "білого ящика", при якому відома структура програми і доступний вихідний її код.
Керуючим графом програми називається орієнтований граф виду G = (V, U, p0, q0) , де V - множина вершин (операторів програми) , U - множина ребер (управлінь), p0, q0 - виділені початкова та кінцева вершини.
Критерій покриття
операторів (
):
кожен оператор
програми повинен буди виконаний
(покритий) хоча б один раз.
Критерій покриття
рішень (
):
кожна гілка
алгоритму (кожний перехід між вершинами
КГП) має бути пройдена (виконана) хоча
б один раз.
Критерій покриття
шляхів (
):
кожен шлях
в алгоритмі, де шлях - це послідовність
вершин (
,
,...,
,
)
має бути протестований хоча б один раз.
Два шляхи вважаються ідентичними, якщо
послідовності вершин ідентичні.
Для більшого розуміння принципів тестування ПЗ розглянемо декілька прикладів на яких і продемонструємо всі основні аспекти використання згаданих вище критеріїв.
Function GD (var A, B: Byte): Byte; Const C=5; Var Rez: Byte; Begin // 0 If A>=B then //1 Rez:=A-B //2 Else Rez:=B-A; //3 If Rez<C then //4 Rez:=0; //5 GD:=rez; //6 End; |
|
Тестовий набір, сформований відповідно до критерію покриття команд, має вигляд (X, Yет) = {(9,5,0), (5,9,0)}, де X – множина вхідних параметрів, Yет – еталонна множина вихідних параметрів. У тестуємій по даному набору програмі виконуються всі команди і проходяться наступні шляхи:
Тестовий набір, сформований відповідно до критерію покриття гілок, має вигляд (X, Yет) = {(9, 5, 0), (0, 255, 255)}. У тестуємій за даним критерієм програмі виконуються всі гілки, і проходяться наступна множина маршрутів:
Тестовий набір, сформований відповідно до критерію покриття маршрутів, має вигляд (X, Yет) = {(9, 5, 0), (0, 255, 255), (255, 0, 255), (5, 9, 0 )}. У тестуємій за даним критерієм функції виконуються всі маршрути:
Для демонстрації використання для тестування критеріїв умов і гілок-умов модифікуємо функцію GD наступним чином:
Function GD (var A, B: Byte): Byte; Const C=5; Var Rez: Byte; Begin Rez:=0; // 0 If (Abs(B-A)>=C) and (A>=B) then //1 Rez:=A-B //2 If (Abs(A-B)>=C) and (A<B) then //3 Rez:=B-A //4 GD:=rez; //5 End; |
|
Для тестування
умов необхідно протестувати всі можливі
варіанти умов у даній програмі, тобто
умови виду:
,
,
,
для оператора 1 і , , , для оператора 3. Тестовий набір достатній для покриття зазначених умов має вигляд (X, Yет) = {(15, 10, 5), (8, 10, 0)}. У тестуємій за даним критерієм програмі виконуються всі умови, і проходиться наступна множина маршрутів:
Тестовий набір, сформований відповідно до критерію гілок-умов, має вигляд (X, Yет) = {(15, 10, 5), (10, 15, 5), (8, 10, 0)}. У тестуємій за даним критерієм програмі виконуються всі гілки й умови, і проходиться наступна множина маршрутів:
Основні елементи блок схем