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

UptoLike

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

42
принципу белого ящика предполагает выполнение каждого пути в про-
грамме, но поскольку в программе с циклами выполнение каждого пути
обычно нереализуемо, то тестирование всех путей не рассматривается.
3.1.1. Покрытие операторов
Если отказаться полностью от тестирования всех путей, то можно по-
казать, что критерием покрытия является выполнение каждого оператора
программы, по
крайней мере, один раз. Это метод покрытия операто-
ров. К сожалению, это слабый критерий, так как выполнение каждого опе-
ратора, по крайней мере, один раз есть необходимое, но недостаточное ус-
ловие для приемлемого тестирования по принципу белого ящика (рис. 3).
Предположим, что на рис. 3 представлена небольшая программа, которая
должна быть протестирована.
A>1 and
B=0
A=2 or
X>1
X = X/A
X = X + 1
a
True
c
False
True
Flase
b
d
e
Эквивалент на языке Java
// Точка a
if((A>1) && (B == 0))
X = X/A; // Точка c
// Точка b
if((A==2 || (X>1))
X++; // Точка e
// Точка d
Рис. 3. Блок-схема небольшого участка программы, который должен быть протестирован
Можно выполнить каждый оператор, записав один-единственный тест,
который реализовал бы путь асе. Иными словами, если бы в точке а были
установлены значения А = 2, В = 0 и Х = 3, каждый оператор выполнялся бы
один раз (в действительности Х может принимать любое значение).
К сожалению, этот критерий хуже, чем он кажется на первый взгляд
.
Например, пусть первое решение записано как «или», а не как «и» (в пер-
вом условии вместо “&&” стоит “||”). Тогда при тестировании с помощью
данного критерия эта ошибка не будет обнаружена. Пусть второе реше-
ние записано в программе как Х > 0 (во втором операторе условия); эта
принципу белого ящика предполагает выполнение каждого пути в про-
грамме, но поскольку в программе с циклами выполнение каждого пути
обычно нереализуемо, то тестирование всех путей не рассматривается.
                       3.1.1. Покрытие операторов
     Если отказаться полностью от тестирования всех путей, то можно по-
казать, что критерием покрытия является выполнение каждого оператора
программы, по крайней мере, один раз. Это метод покрытия операто-
ров. К сожалению, это слабый критерий, так как выполнение каждого опе-
ратора, по крайней мере, один раз есть необходимое, но недостаточное ус-
ловие для приемлемого тестирования по принципу белого ящика (рис. 3).
Предположим, что на рис. 3 представлена небольшая программа, которая
должна быть протестирована.

             a                                   Эквивалент на языке Java

                                               // Точка a
        A>1 and        True
                                               if((A>1) && (B == 0))
         B=0                      c                X = X/A; // Точка c
                                               // Точка b
          b False             X = X/A          if((A==2 || (X>1))
                                                   X++; // Точка e
                                               // Точка d



         A=2 or        True
          X>1                     e

          d Flase           X=X+1




 Рис. 3. Блок-схема небольшого участка программы, который должен быть протестирован

    Можно выполнить каждый оператор, записав один-единственный тест,
который реализовал бы путь асе. Иными словами, если бы в точке а были
установлены значения А = 2, В = 0 и Х = 3, каждый оператор выполнялся бы
один раз (в действительности Х может принимать любое значение).
    К сожалению, этот критерий хуже, чем он кажется на первый взгляд.
Например, пусть первое решение записано как «или», а не как «и» (в пер-
вом условии вместо “&&” стоит “||”). Тогда при тестировании с помощью
данного критерия эта ошибка не будет обнаружена. Пусть второе реше-
ние записано в программе как Х > 0 (во втором операторе условия); эта
                                        42