Способ разбиения по эквивалентности

 

Разбиение по эквивалентности — самый популярный способ тестирования «черного ящика» [3], [14].

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

Класс эквивалентности — набор данных с общими свойствами. Обрабатывая разные элементы класса, программа должна вести себя одинаково. Иначе говоря, при обработке любого набора из класса эквивалентности в программе задействуется один и тот же набор операторов (и связей между ними).

На рис. 7.2 каждый класс эквивалентности показан эллипсом. Здесь выделены входные классы эквивалентности допустимых и недопустимых исходных данных, а также классы результатов.

Классы эквивалентности могут быть определены по спецификации на программу.

Рис. 7.2.Разбиение по эквивалентности

 

Например, если спецификация задает в качестве допустимых входных величин 5-разрядные целые числа в диапазоне 15 000...70 000, то класс эквивалентности допустимых ИД (исходных данных) включает величины от 15 000 до 70 000, а два класса эквивалентности недопустимых ИД составляют:

q числа меньшие, чем 15 000;

q числа большие, чем 70 000.

Класс эквивалентности включает множество значений данных, допустимых или недопустимых по условиям ввода.

Условие ввода может задавать:

1) определенное значение;

2) диапазон значений;

3) множество конкретных величин;

4) булево условие.

Сформулируем правила формирования классов эквивалентности.

1. Если условие ввода задает диапазон п...т, то определяются один допустимый и два недопустимых класса эквивалентности:

q V_Class={n.. }допустимый класс эквивалентности;

q Inv_С1аss1={x|для любого х: х < п}первый недопустимый класс эквивалентности;

q Inv_С1аss2={y|для любого у: у > т}второй недопустимый класс эквивалентности.

2. Если условие ввода задает конкретное значение а, то определяется один допустимый и два недопустимых класса эквивалентности:

q V_Class={a};

q Inv_Class1 ={х|длялюбого х: х < а};

q Inv_С1аss2={y|для любого у: у > а}.

3.Если условие ввода задает множество значений {а, b, с}, то определяются один допустимый и один недопустимый класс эквивалентности:

q V_Class={a, b, с};

q Inv_С1аss={x|для любого х: (х а)&(х b)&(х с)}.

4. Если условие ввода задает булево значение, например true, то определяются один допустимый и один недопустимый класс эквивалентности:

q V_Class={true};

q Inv_Class={false}.

После построения классов эквивалентности разрабатываются тестовые варианты. Тестовый вариант выбирается так, чтобы проверить сразу наибольшее количество свойств класса эквивалентности.