Тестирование ветвей и операторов отношений
Способ тестирования ветвей и операторов отношений (автор К. Таи, 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.