Методы тестирования программного обеспечения. Степанченко И.В. - 12 стр.

UptoLike

Составители: 

14
нельзя создать тест, гарантирующий отсутствие ошибок; во-вторых,
разработка таких тестов противоречит экономическим требованиям. По-
скольку исчерпывающее тестирование исключается, нашей целью долж-
на стать максимизация результативности капиталовложений в тестирова-
ние (иными словами, максимизация числа ошибок, обнаруживаемых од-
ним тестом). Для этого мы можем рассматривать внутреннюю структуру
программы и делать некоторые
разумные, но, конечно, не обладающие
полной гарантией достоверности предположения (например, разумно
предположить, что если программа сочла треугольник 2, 2, 2 равносто-
ронним, то таким же окажется и треугольник со сторонами 3, 3, 3).
1.3.2. Тестирование программы как белого ящика
Стратегия белого ящика, или стратегия тестирования, управляемого
логикой программы, позволяет исследовать внутреннюю структуру про-
граммы. В этом случае
тестирующий получает тестовые данные путем
анализа логики программы (к сожалению, здесь часто не используется
спецификация программы).
Сравним способ построения тестов при данной стратегии с исчерпы-
вающим входным тестированием стратегии черного ящика. Непосвящен-
ному может показаться, что достаточно построить такой набор тестов, в
котором каждый оператор исполняется хотя бы один раз;
нетрудно пока-
зать, что это неверно. Не вдаваясь в детали, укажем лишь, что исчерпы-
вающему входному тестированию может быть поставлено в соответствие
исчерпывающее тестирование маршрутов. Подразумевается, что про-
грамма проверена полностью, если с помощью тестов удается осущест-
вить выполнение этой программы по всем возможным маршрутам ее по-
тока (графа) передач управления
.
Последнее утверждение имеет два слабых пункта. Один из них со-
стоит в том, что число не повторяющих друг друга маршрутов в про-
граммеастрономическое. Чтобы убедиться в этом, рассмотрим пред-
ставленный на рис. 1 граф передач управления в простейшей программе.
Каждая вершина, или кружок, обозначают участок программы, содержа-
щий последовательность линейных
операторов, которая может заканчи-
ваться оператором ветвления. Дуги, оканчивающиеся стрелками, соот-
ветствуют передачам управления. По-видимому, граф описывает програм-
му из 10–20 операторов, включая цикл WHILE (или DO WHILE), кото-
рый исполняется не менее 20 раз (на рисунке показан темным цветом).
Внутри цикла имеется несколько операторов IF (на рисунке соответст-
вующие узлы графа изображены пустыми
кружками). Для того чтобы оп-
ределить число неповторяющихся маршрутов при исполнении програм-
мы, подсчитаем число неповторяющихся маршрутов из точки A в B в
предположении, что все приказы взаимно независимы. Это число вычис-
нельзя создать тест, гарантирующий отсутствие ошибок; во-вторых,
разработка таких тестов противоречит экономическим требованиям. По-
скольку исчерпывающее тестирование исключается, нашей целью долж-
на стать максимизация результативности капиталовложений в тестирова-
ние (иными словами, максимизация числа ошибок, обнаруживаемых од-
ним тестом). Для этого мы можем рассматривать внутреннюю структуру
программы и делать некоторые разумные, но, конечно, не обладающие
полной гарантией достоверности предположения (например, разумно
предположить, что если программа сочла треугольник 2, 2, 2 равносто-
ронним, то таким же окажется и треугольник со сторонами 3, 3, 3).
             1.3.2. Тестирование программы как белого ящика
     Стратегия белого ящика, или стратегия тестирования, управляемого
логикой программы, позволяет исследовать внутреннюю структуру про-
граммы. В этом случае тестирующий получает тестовые данные путем
анализа логики программы (к сожалению, здесь часто не используется
спецификация программы).
     Сравним способ построения тестов при данной стратегии с исчерпы-
вающим входным тестированием стратегии черного ящика. Непосвящен-
ному может показаться, что достаточно построить такой набор тестов, в
котором каждый оператор исполняется хотя бы один раз; нетрудно пока-
зать, что это неверно. Не вдаваясь в детали, укажем лишь, что исчерпы-
вающему входному тестированию может быть поставлено в соответствие
исчерпывающее тестирование маршрутов. Подразумевается, что про-
грамма проверена полностью, если с помощью тестов удается осущест-
вить выполнение этой программы по всем возможным маршрутам ее по-
тока (графа) передач управления.
     Последнее утверждение имеет два слабых пункта. Один из них со-
стоит в том, что число не повторяющих друг друга маршрутов в про-
грамме – астрономическое. Чтобы убедиться в этом, рассмотрим пред-
ставленный на рис. 1 граф передач управления в простейшей программе.
Каждая вершина, или кружок, обозначают участок программы, содержа-
щий последовательность линейных операторов, которая может заканчи-
ваться оператором ветвления. Дуги, оканчивающиеся стрелками, соот-
ветствуют передачам управления. По-видимому, граф описывает програм-
му из 10–20 операторов, включая цикл WHILE (или DO WHILE), кото-
рый исполняется не менее 20 раз (на рисунке показан темным цветом).
Внутри цикла имеется несколько операторов IF (на рисунке соответст-
вующие узлы графа изображены пустыми кружками). Для того чтобы оп-
ределить число неповторяющихся маршрутов при исполнении програм-
мы, подсчитаем число неповторяющихся маршрутов из точки A в B в
предположении, что все приказы взаимно независимы. Это число вычис-
                                 14