Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Тестирование программы как белого ящика



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

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

Последнее утверждение имеет два слабых пункта. Одан из них состоит в том, что число не повторяющих друг друга маршрутов в программе — астрономическое Чтобы убедиться в этом, рассмотрим представленный на рис 2.1 граф передач управления простейшей про­граммы Каждая вершина, или кружок, обозначают участок программы, содержащий последовательность линейных операторов, которая может заканчиваться опе­ратором ветвления Дуги, оканчивающиеся стрелками, со­ответствуют передачам управления. По-видимому, граф описывает программу из 10- 20 операторов, включая цикл DO, который исполняется не менее 20 раз. Внутри цикла имеется несколько операторов IF. Для того что­бы определить число неповторяющихся маршрутов при исполнении программы, подсчитаем число неповторяю­щихся маршрутов из точки А в В в предположении, что все приказы взаимно независимы. Это число вычисляет­ся как сумма б^+б^+.-.+б^ 1014, или 100 триллионам, где 5—число путей внутри цикла. Поскольку большин­ству читателей трудно оценить это число, приведем та­кой пример: если допустить, что на составление каждого- теста мы тратим пять минут, то для построения набора тестов нам потребуется примерно один миллиард лет.

 
 
 
 
 
 
 
 
 
 
A
B
≤ 20 раз

Рис 2.1 Граф передач управления не­большой программы

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

Второй слабый пункт утверждения заключается в том, что, хотя исчерпывающее тестирование маршрутов является полным тестом и хотя каждый маршрут про­граммы может быть проверен, сама программа будет со­держать ошибки Это объясняется следующим образом Во первых, исчерпывающее тестирование маршрутов не может дать гарантии того, что программа соответствует описанию. Например, вместо требуемой программы сор­тировки по возрастанию случайно была написана программа сортировки по убыванию. В этом случае ценность тестирования маршрутов невелика, поскольку после тес­тирования в программе окажется одна ошибка, т. е. про­грамма неверна. Во-вторых, программа может быть неверной в силу того, что пропущены некоторые марш­руты. Исчерпывающее тестирование маршрутов не обна­ружит их отсутствия. В-третьих, исчерпывающее тести­рование маршрутов не может обнаружить ошибок, по­явление которых зависит от обрабатываемых данных. •Существует множество примеров таких ошибок. Приве­дем один из них. Допустим, в программе необходимо вы­полнить сравнение двух чисел на сходимость, т. е. опре­делить, является ли разность между двумя числами меньше предварительно определенного числа. Может быть написано выражение

IF ((А —В) < EPSILON)…

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

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


23. Основные принципы тестирования программного обеспечения.





Дата публикования: 2015-01-26; Прочитано: 350 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...