Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Методы проектирования тестовых наборов данных




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

Детерминированное тестирование, или тестирование на определенных входных значениях, основывается на двух подходах: структурное тестирование (СТ) и функциональное тестирование (ФТ).

Структурное тестирование, или тестирование программ как "белого ящика" (стратегия тестирования, управляемого логикой программы), предполагает детальное изучение текста (логики) программы и построение (подбор) таких входных наборов данных, которые позволили бы при многократном выполнении программы на ЭВМ обеспечить выполнение максимально возможного количества маршрутов, логических ветвле­ний, циклов и т.д.

Функциональное тестирование, или тестирование программ как "черного ящика" (тестирование по "входу-выходу"), полностью абстрагируется от логики программы, предполагается, что программа - "черный ящик", а тестовые наборы выбираются на основании анализа входных функциональных спецификаций.

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

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

Понятие "эффективного" тестового набора данных связано с невозможностью "полного" тестирования программы.

В подтверждение этого высказывания рассмотрим фрагмент простейшего участка программы, который представлен графом передач управления (рис. 52). Каждая вершина графа - это линейный участок программы, заканчивающийся оператором ветвления. Дуги указывают на передачу управления. Граф описывает программу из 10-12 операторов, включая цикл, который выполняется не менее 20 раз.

Рис. 52. Граф передач управления

 

Если предположить, что выполнение каждой ветви этого участка исключает одновременное выполнение других ветвей, то, учитывая количество циклических повторений, число тестов для проверки этого участка будет равно 6 • 20 = 120.

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

Целью отбора тестовых наборов данных является попытка уменьшить эту "неполноту". Если ввести ограничения на время, стоимость, машинное время и т.п., то основным вопросом детерминированного тестирования становится вопрос о том, какое подмножество всех возможных тестов имеет наивысшую вероят­ность обнаружения большинства ошибок.

Подмножество всех возможных тестов, которое обладает этим свойством, т.е. имеет наивысшую вероятность обнаружения большинства ошибок, называется эффективным.

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

В соответствии с методом детерминированного тестирования при структурном тестировании ориентируются на построение тестовых наборов по принципу "белого ящика", а при функциональном тестировании - по принципу "черного ящика".

При построении тестовых наборов данных по принципу "белого ящика" руководствуются следующими критериями: покрытие операторов, покрытие узлов ветвления, покрытие условий, комбинаторное покрытие условий.

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

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

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

Покрытие решений обычно удовлетворяет критерию покрытия операторов, однако нельзя забывать о некоторых исключениях из этого правила. Например, если программа имеет несколько точек входа, то данный оператор выполняется только в том случае, если выполнение программы начинается с соответствующей точки входа. Другое исключение - операторы внутри ON-единиц; выполнение каждого направления перехода необязательно будет вызывать выполнение ON-единиц.

Покрытие условий. Если узел ветвления содержит более одного условия, тогда нужно разработать число тестов, достаточное для того, чтобы возможные результаты каждого условия в решении выполнялись, по крайней мере один раз; каждой точке входа в программу, а также ON-единицам должно быть передано управление при вызове, по крайней мере один раз. Этот критерий обычно называют покрытием условий.

Например: условие А>2&O=Д, тогда нужно предусмотреть тесты:

А > 2; А < 2 А = 3;с = 0;д = 0

с = д; с # д А = 2;с = 0;д=1

Однако рассмотренные критерии недостаточно чувствитель­ны к ошибкам в логических выражениях.

Комбинаторное покрытие условий. Для выполнения таких ошибок используют комбинаторное покрытие условий. Этот критерий требует создания такого числа тестов, чтобы все воз­можные комбинации результатов условия в каждом решении и все точки входа и ON-единицы выполнялись, по крайней мере один раз. Для условия по этому критерию надо покрыть тестами следующие 4 комбинации:

Тесты:

А > 2; с = д; А = 3; с = 0; д = О

А > 2; с # д; А = 3, с = 0, д = 1

А<2; с = д; А = 2, с=1, д = 1

А < 2; с # д; А = 2, с = 1, д = 0

При построении тестов по стратегии "черного ящика" прог­рамма рассматривается как "черный ящик" (не известны текст программы и ее логика), а исходной информацией для тестовых наборов служат ее спецификации.

К стратегии "черного ящика" относятся методы:

эквивалентного разбиения;

анализ граничных значений;

функциональных диаграмм.

Метод эквивалентного разбиения. Построение тестов методов эквивалентного разбиения осуществляется в 2 этапа: 1) выделе­ние классов эквивалентности; 2) построение тестов.

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

Классы эквивалентности выделяются путем анализа вход­ного условия и разбиением его на две или более групп. Для любого условия существуют правильный (представляющий правильные входные данные программы) и неправильный, т.е. ошибочные входные значения, классы эквивалентности (табл. 5).

Таблица 5

Входные условия и классы эквивалентности

 

Входные условия Правильные классы эквивалентности Неправильные классы эквивалентности

 

При выделении классов эквивалентности целесообразно придерживаться следующих правил.

Если входное условие описывает область значений (напри­мер, идентификатор метки может содержать от одного до восьми символов), то определяются один правильный класс эквивалентности (1 < количество символов идентификатора метки <8) и два неправильных класса эквивалентности (ни одного и более 8).

Если входное условие описывает конечное число конкрет­ных значений и есть основание полагать, что каждое значение программа трактует особо (например, способ передачи инфор­мации между городами допустим - почтовый, телеграфный, телетайпный), то определяются правильный класс эквивалент­ности для каждого значения и один неправильный класс эквивалентности (например, "курьерный").

Если входное условие описывает ситуацию "должно быть" (например, "первым символом идентификатора должна быть буква"), то определяются один правильный класс эквивалент­ности и один неправильный. На основе классов эквивалент­ности строятся тестовые наборы. Причем для правильных классов эквивалентности нужно стремиться к минимальному числу тестовых наборов, т.е. каждый тест должен покрывать по возможности большее число правильных классов эквивалент­ности.

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

Анализ граничных значений. Этот метод предполагает иссле­дование ситуаций, возникающих на границах и вблизи границ эквивалентных разбиений. Например, если правильная область значений есть -1,0 до +1,0, то нужно предусмотреть тесты -1.0, 1.0,-1.001 и 1.001.

Метод функциональных диаграмм. Метод заключается в преобразовании входной спецификации программы в функцио­нальную диаграмму (диаграмму причинно-следственных связей) с помощью простейших булевских отношений, построе­ния таблицы решений (методом обратной трассировки), которая является основой для написания эффективных тестовых наборов данных.

1. В спецификации программы выделяются причины и следст- вия. Причины - это отдельное входное условие, или класс экви- валентности входных условий. Следствие - выходное условие, или результат преобразования системы.

Каждой причине и следствию приписывается уникальный номер.

2. Анализируется семантическое содержание спецификации, которая преобразуется в булевский граф, связывающий причины и следствия. Каждая вершина графа может находиться в состоянии "истина" (1) или "ложь" (0).

Базовые символы для записи булевского графа:

 

       
   


тождество, устанавливает: если а = 1, то в = 1; если а = 0, то и в = 0  
    не, устанавливает     или, устанавливает:   и, устанавливает если а = 1, то в = 0; если а = 0, то и в = 1 если а = 1 или в=1, или с = 1, то d = 1, в противном случае d = 0   если а=1 и в = 1, и с = 1, то d=1, в противном случае d = 0

 

3. Диаграмма снабжается примечаниями, задающими ограничения и описывающими комбинации причин и(или) следствий, которые являются невозможными из-за синтаксических или внешних ограничений.

Используются следующие обозначения:

 
 

 

Ограничение Е (исключает) устанавливает, что а и в не могут принимать значение 1 одновременно  
  Ограничение I (включает) устанавливает, что по крайней мере одна из величин a, b и с не может принимать 0-е значение одновременно
 
 

 

Ограничение О (одно и только одно) устанавливает, что одна и только одна из величин а или Ь должна быть равна 1
Ограничение R(требует) устанавливает, что если а = 1, то и b = 1  
 
 

 

Ограничение М (скрывает) является ограничением для следствий и устанавливает, что если следствие а имеет значение 1, то следствие Ь должно принять значение 0  

 

4. По полученной функциональной диаграмме строится таблица решений. Для этого поочередно для каждого следствия, значение которого условно устанавливается в 1, прослеживается обратный путь (по диаграмме) ко всем причинам, связанным с этим следствием, и фиксируется их состояние. Каждый столбец таблицы решений соответствует тесту.

5. Столбцы решений преобразуются в тесты.

 





Поделиться с друзьями:


Дата добавления: 2014-11-20; Просмотров: 2585; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.037 сек.