КАТЕГОРИИ: Архитектура-(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). Базовые символы для записи булевского графа:
3. Диаграмма снабжается примечаниями, задающими ограничения и описывающими комбинации причин и(или) следствий, которые являются невозможными из-за синтаксических или внешних ограничений. Используются следующие обозначения:
4. По полученной функциональной диаграмме строится таблица решений. Для этого поочередно для каждого следствия, значение которого условно устанавливается в 1, прослеживается обратный путь (по диаграмме) ко всем причинам, связанным с этим следствием, и фиксируется их состояние. Каждый столбец таблицы решений соответствует тесту. 5. Столбцы решений преобразуются в тесты.
Дата добавления: 2014-11-20; Просмотров: 2586; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |