Команда |
Метка |
Мнемокод команды |
Операнды |
Комментарий |
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).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.