Диагностирование микропроцессорных систем, страница 7

Команда

Метка

Мнемокод команды

Операнды

Комментарий

1

2

3

4

5

1

START

LXI

H, BASE

Адресация M1

2

IN

VAR1

a  ® A

3

MOV

M, A

a  ® M1

4

INX

H

Адресация M2

5

IN

VAR2

b ® A

6

MOV

M, A

b ® M2

7

INX

H

Адресация M3

8

IN

VAR3

c ® A

9

MOV

M, A

c ® M3

10

DCX

H

11

DCX

H

Адресация M1

12

MOV

A, M

a  ® M

13

ANA

A

Установка флажка z

14

JZ

RESO

Анализ значенияa

15

INX

H

Адресация M2

16

MOV

A, M

b ® M

17

ANA

A

Установка флажкаz

18

JZ

ANAL

Анализ значения b

19

INX

H

Адресация M3

20

MOV

A, M

c ® A

21

ANA

A

Установка флажка z

22

JZ

RES1

Анализ значения c

23

RESO

MVI

A, OOH

Загрузка в аккумулятор 0

24

OUT

RES

Вывод значения  f= 0

25

JMP

START

Переход к команде 1

26

ANAL

INX

H

Адресация M3

27

MOV

A, M

c ® A

Продолжение табл. 7.6

1

2

3

4

5

28

ANA

A

Установка флажка z

29

JZ

RESO

Анализ значения c

30

RES1

MVI

A, 01H

Загрузка в аккумулятор 1

31

OUT

RES

Вывод значения  f= 1

32

JMP

START

Переход к команде 1

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

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

          3) проверку всех функций, когда каждая реализуемая программой функция должна быть проверена хотя бы один раз;

          4) проверку всех ограничений и правил и т.п.

          При функциональном тестировании программ в тестовые примеры следует включать данные, содержащие наиболее характерные значения входных и выходных переменных. Применим первые два требования для построения теста бинарной программы. Поскольку входные переменные принимают только два значения (0 и 1), то в соответствии с первым требованием в тестовых наборах каждая переменная должна иметь оба эти значения. Выходные данные делятся на два класса: f = 0 и  f = 1. Поэтому тест должен содержать по крайней мере один разрешенный и один запрещенный наборы. Исходя из сказанного можно построить следующий тест:  = (000, 101, 100).

          Пусть, например, при написании программы (табл. 7.6) программист допустил ошибку: в команде № 26 вместо команды INX (увеличение на 1 адреса ячейки М) написана команда DCX (уменьшение на 1 адреса ячейки М). В результате этого при выполнении команды № 27 (пересылка в аккумулятор содержимого ячейки М) в аккумулятор вместо переменной с пересылается значение переменной а и программой вычисляется ошибочная функция

.                                     (7.2)

          Из сравнения функций (7.1) и (7.2) видно, что данная ошибка обнаруживается на входном наборе 100, который содержится в тесте . На этом наборе исправная программа вычисляет значение f = 0, а программа с ошибкой – значение  = 1 (см. табл. 7.5).