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

UptoLike

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

43
ошибка также не будет обнаружена. Кроме того, существует путь, в ко-
тором Х не изменяется (путь abd). Если здесь ошибка, то и она не будет
обнаружена. Таким образом, критерий покрытия операторов является на-
столько слабым, что его обычно не используют.
3.1.2. Покрытие решений
Более сильный критерий покрытия логики программы (и
метод тести-
рования) известен как покрытие решений, или покрытие переходов. Со-
гласно данному критерию должно быть записано достаточное число тес-
тов, такое, что каждое решение на этих тестах примет значение истина и
ложь по крайней мере один раз. Иными словами, каждое направление пе-
рехода должно быть реализовано по крайней мере один
раз. Примерами
операторов перехода или решений являются операторы while или if.
Можно показать, что покрытие решений обычно удовлетворяет кри-
терию покрытия операторов. Поскольку каждый оператор лежит на неко-
тором пути, исходящем либо из оператора перехода, либо из точки входа
программы, при выполнении каждого направления перехода каждый
оператор должен быть выполнен.
Однако существует, по крайней мере,
три исключения. Первоепатологическая ситуация, когда программа не
имеет решений. Второе встречается в программах или подпрограммах с
несколькими точками входа (например, в программах на языке Ассемб-
лера); данный оператор может быть выполнен только в том случае, если
выполнение программы начинается с соответствующей точки входа.
Третье исключение
операторы внутри switch-конструкций; выполнение
каждого направления перехода не обязательно будет вызывать выполне-
ние всех case-единнц. Так как покрытие операторов считается необходи-
мым условием, покрытие решений, которое представляется более силь-
ным критерием, должно включать покрытие операторов. Следовательно,
покрытие решений требует, чтобы каждое решение имело результа-
том значения истина и
ложь и при этом каждый оператор выпол-
нялся бы, по крайней мере, один раз. Альтернативный и более легкий
способ выражения этого требования состоит в том, чтобы каждое реше-
ние имело результатом значения истина и ложь и что каждой точке вхо-
да (включая каждую case-единицу) должно быть передано управление
при вызове
программы, по крайней мере, один раз.
Изложенное выше предполагает только двузначные решения или пе-
реходы и должно быть модифицировано для программ, содержащих мно-
гозначные решения (как для case-единиц). Критерием для них является
выполнение каждого возможного результата всех решений, по крайней
мере, один раз и передача управления при вызове программы
или под-
программы каждой точке входа, по крайней мере, один раз.
ошибка также не будет обнаружена. Кроме того, существует путь, в ко-
тором Х не изменяется (путь abd). Если здесь ошибка, то и она не будет
обнаружена. Таким образом, критерий покрытия операторов является на-
столько слабым, что его обычно не используют.
                        3.1.2. Покрытие решений
     Более сильный критерий покрытия логики программы (и метод тести-
рования) известен как покрытие решений, или покрытие переходов. Со-
гласно данному критерию должно быть записано достаточное число тес-
тов, такое, что каждое решение на этих тестах примет значение истина и
ложь по крайней мере один раз. Иными словами, каждое направление пе-
рехода должно быть реализовано по крайней мере один раз. Примерами
операторов перехода или решений являются операторы while или if.
     Можно показать, что покрытие решений обычно удовлетворяет кри-
терию покрытия операторов. Поскольку каждый оператор лежит на неко-
тором пути, исходящем либо из оператора перехода, либо из точки входа
программы, при выполнении каждого направления перехода каждый
оператор должен быть выполнен. Однако существует, по крайней мере,
три исключения. Первое – патологическая ситуация, когда программа не
имеет решений. Второе встречается в программах или подпрограммах с
несколькими точками входа (например, в программах на языке Ассемб-
лера); данный оператор может быть выполнен только в том случае, если
выполнение программы начинается с соответствующей точки входа.
Третье исключение – операторы внутри switch-конструкций; выполнение
каждого направления перехода не обязательно будет вызывать выполне-
ние всех case-единнц. Так как покрытие операторов считается необходи-
мым условием, покрытие решений, которое представляется более силь-
ным критерием, должно включать покрытие операторов. Следовательно,
покрытие решений требует, чтобы каждое решение имело результа-
том значения истина и ложь и при этом каждый оператор выпол-
нялся бы, по крайней мере, один раз. Альтернативный и более легкий
способ выражения этого требования состоит в том, чтобы каждое реше-
ние имело результатом значения истина и ложь и что каждой точке вхо-
да (включая каждую case-единицу) должно быть передано управление
при вызове программы, по крайней мере, один раз.
     Изложенное выше предполагает только двузначные решения или пе-
реходы и должно быть модифицировано для программ, содержащих мно-
гозначные решения (как для case-единиц). Критерием для них является
выполнение каждого возможного результата всех решений, по крайней
мере, один раз и передача управления при вызове программы или под-
программы каждой точке входа, по крайней мере, один раз.
                                 43