Технологии разработки программного обеспечения

         

Тестирование ветвей и операторов отношений


Способ тестирования ветвей и операторов отношений (автор К. Таи, 1989) обнаруживает ошибки ветвления и операторов отношения в условии, для которого выполняются следующие ограничения [72]:

q       все булевы переменные и операторы отношения входят в условие только по одному разу;

q       в условии нет общих переменных.

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

ОУс = (d1,d2,d3.....dn),

где di — ограничение на результат i-го простого условия.

Ограничение на результат фиксирует возможные значения аргумента (переменной) простого условия (если он один) или соотношения между значениями аргументов (если их несколько).

Если i-e простое условие является булевой переменной, то его ограничение на результат состоит из двух значений и имеет вид

di = (true, false).

Если j-е простое условие является выражением отношения, то его ограничение на результат состоит из трех значений и имеет следующий вид:

dj= (>,<,=).

Говорят, что ограничение условия ОУc (для условия С) покрывается выполнением С, если в ходе этого выполнения результат каждого простого условия в С удовлетворяет соответствующему ограничению в ОУc.

На основе ограничения условия ОУ создается ограничивающее множество ОМ, элементы которого являются сочетаниями всех возможных значений d1, d2, d3, ..., dn.

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

b&(х>у)&а.

Условие принимает истинное значение, если все простые условия истинны. В терминах значений простых условий это соответствует записи



(true, true, true),

а в терминах ограничений на значения аргументов простых условий — записи


Поэтому ограничивающее множество имеет вид:

ОМ& = {(false, true), (true, false), (true, true)};

q       для условия типа ИЛИ (а or b) варианты 2 и 3 поглощают вариант 4. Поэтому ограничивающее множество имеет вид:

ОМor = {(false, false), (false, true), (true, false)}.

Рассмотрим шаги способа тестирования ветвей и операторов отношений.

Для каждого условия в программе выполняются следующие действия:

1) строится ограничение условий ОУ;

2)  выявляются ограничения результата по каждому простому условию;

3)  строится ограничивающее множество ОМ. Построение выполняется путем подстановки в константные формулы ОМ& или OMOR выявленных ограничений результата;

4)  для каждого элемента ОМ разрабатывается тестовый вариант.

Пример 2. Рассмотрим составное условие С1 вида:

В1

&(E1,E2),

где В1 — булево выражение, E1, Е2 — арифметические выражения.

Ограничение составного условия имеет вид

ОУ
=( d1,d2),

 где ограничения простых условий равны

d1 = (true, false), d2 = (=, <, >).

Проводя аналогию между С1

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

ОМ& = {(false, true), (true, false), (true, true)}.

Заметим, что true для (E1= E2) означает =, a false для (E1 = E2) означает или <, или >. Заменяя (true, true) и (false, true), ограничениями (true, =) и (false, =) соответственно, a (true, false) — ограничениями (true, <) и (true, >), получаем ограничивающее множество для С1:

ОМ
= {(false,=),(true,<),(true,>),(true,=)}.

Покрытие этого множества гарантирует обнаружение ошибок булевых операторов и операторов отношения в С1.

Пример 3. Рассмотрим составное условие С2

вида

(E3 >E4)&(E1=E2),

где E1, Е2, Е3, Е4

— арифметические выражения. Ограничение составного условия имеет вид

ОУ
=( d1,d2),

где ограничения простых условий равны

d1=(=,<,>), d2 =(=,<,>).

Проводя аналогию между С2

и С1 (разница лишь в том, что в С2 первое простое условие — это выражение отношения), мы можем построить ограничивающее множество для С2 модификацией ОМ
:

ОМ
= {(=, =), (<, =), (>, <),(>, >),(>, =)}.

Покрытие этого ограничивающего множества гарантирует обнаружение ошибок операторов отношения в С2.

 


Содержание раздела