16.2.2 Построение тестов методом булевой производной
Предположим, что схема рис. 16.2 описывается функцией
f(x) =f(x1,x2,…,xj,…,xn) .

Рисунок 16.2 – Условное обозначение схемы
для пояснения понятия «булевой производной»
Пусть на входе xjвозникла
неисправность “константа 0” (
0).
Чтобы обнаружить ее, необходимо сделать xjсущественной переменной, т.е. чтобы при измененииxjменялось значение выходаf(x). Это условие можно записать так
f(x1,x2,…,
,…,xn)
f(x1,x2,…,
,…,xn)
= 1 .
(Обратите
внимание на
и
.)
Или коротко
f(
)
f(
)
= 1 .
Это
выражение равно 1 тогда и только тогда,
когда только одно из значений f(
)
илиf(
)
равно 1. Если же оба значения одинаковы,
т.е.f(x) не управляется
,
то сумма по модулю два равна 0.
Сумма
f(
)
f(
)
носит названиебулевой производнойилибулевой разностии обозначается
f(
)
f(
)
.
Решение уравнения
1
определяет набор переменных (не
),
который позволяет обнаружить неисправность
на входе
.
Значения же
определяются из условий:
для обнаружения неисправности

0 надо подать на вход
1,для обнаружения неисправности

1 надо подать на вход
0.
Таким
образом, для определения набора входных
переменных, обнаруживающего неисправность
![]()
0, надо решить уравнение
![]()
1, (1)
а для неисправности
![]()
1 соответственно уравнение
![]()
1. (2)
Производные удобнее определять по выражению
f(x1,x2,…, 1,…,xn)
f(x1,x2,…, 0,…,xn)
или проще
f(1)
f(0),
где
заменена на 1, а
на 0.
В логическом базисе И, ИЛИ, НЕ булева производная запишется так
.
(3)
В общем
случае переменная
не обязательно входная – это может быть
внутренняя (промежуточная) или даже
выходная переменная.
16.2.3 Свойства булевой производной
При решении уравнений (1) и (2) широко используются свойства булевой производной:
– не зависит от
.Решение уравнения
g(x)
= 1 определяет набор
,
при котором
становится существенной переменной.Решение уравнения
g(x)
= 0 определяет набор
,
при котором
не влияет на выходную функциюf(x).Если
,
то
всегда является существенной.Если
,
тоfне зависит от
.

Свойства 6 и 7 следуют из симметричности
формулы (3) относительно
иf.
Следствие: если f1 не зависит
отxj , то
Следствие: если f1 не зависит
отxj , то
10. 
Следствие: если f1 не зависит
отxj, то
где k– промежуточная точка схемы такая, что пути отjк выходу идут черезk.
Булевы производные функций, реализуемых типовыми элементами:
Для f=x1x2…xj…xnиf=

![]()
Для f=
иf=
![]()
Для f=xиf=

![]()
Для

, j
=
.
16.2.4 Примеры построения тестов
Пример 1: Найти наборы для обнаружения неисправностей на входеaсхемы рис. 16.3.
Для
определения тестового набора неисправности
а
0 надо решить уравнение
(4)
Решаем, используя свойства булевой производной:
,
(свойство 11),
![]()

Рисунок 16.3 – Схема к примеру 1
Или
сразу
(следствие свойства 8).
![]()
Или
сразу
(по выражению 12,b).
Следовательно,
(5)
Для уравнения (4) получаем
![]()
или
![]()
В обоих произведениях отсутствует по одной переменной, поэтому для каждого из них будет по два решения – по два набора.
![]()
![]()
Следовательно,
наборы для обнаружения неисправности
а
0 будут такими
|
1) |
a |
b |
c |
d |
|
2) |
a |
b |
c |
d |
|
|
1 |
0 |
1 |
1 |
|
|
1 |
0 |
1 |
1 |
|
|
1 |
0 |
1 |
0 |
|
|
1 |
0 |
0 |
1 |
Объединяя 1) и 2), получаем
|
a |
b |
c |
d |
|
1 |
0 |
1 |
0 |
|
1 |
0 |
1 |
1 |
|
1 |
0 |
0 |
1 |
Любой
из этих наборов обнаруживает неисправность
а
0.
Для
неисправности а
1 надо решить уравнение
.
Производную
мы уже знаем (5), она равна
,
поэтому получаем
.
Следовательно, имеем два решения
![]()
В обоих произведениях отсутствует по одной переменной, поэтому для каждого из них будет по два решения – по два набора.
![]()
![]()
Или
|
1) |
a |
b |
c |
d |
|
2) |
a |
b |
c |
d |
|
|
0 |
0 |
1 |
1 |
|
|
0 |
0 |
1 |
1 |
|
|
0 |
0 |
1 |
0 |
|
|
0 |
0 |
0 |
1 |
Объединяя, получаем
|
a |
b |
c |
d |
|
0 |
0 |
1 |
0 |
|
0 |
0 |
1 |
1 |
|
0 |
0 |
0 |
1 |
Любой
из этих наборов обнаруживает неисправность
а
1.
Пример 2: Найти наборы для обнаружения неисправностей на входах и выходах сумматора (рис. 16.4).

Рисунок 16.4 – Схема к примеру 2
Сумматор выполняет функции
![]()
Сначала определим наборы для проверки первой функции.
Находим
![]()
Поскольку производная тождественно равна 1, то каждая из входных переменных является существенной на любом наборе других переменных, поэтому любой входной набор является проверяющим.
Для
проверки
надо подать
,
а для проверки
надо подать
.
Минимальными тестами здесь являются пары инверсных наборов
000 – 111, 001 – 110, 011 – 100, 101 – 010,
которые проверяют не только входы, но и выходы сумматора, так как на одном из наборов пары каждый выход равен 1, а на другом 0. Поэтому строить тест для проверки выхода pнет необходимости.
Замечание:Для контроля работоспособности сумматора получен тест минимально возможной длины (два набора). Тест такой же длины получается и для элементов ИСКЛЮЧАЮЩЕЕ ИЛИ и РАВЕНСТВО с нечетным числом входов.


