- •Методы тестирования «чёрного ящика»
- •Модуль Bonus
- •Листинг
- •Покрытие операторов
- •Int BONUS(){
- •Int BONUS(){
- •Покрытие решений
- •Int BONUS(){
- •Int BONUS(){
- •Int BONUS(){
- •Int BONUS(){
- •Int BONUS(){
- •Покрытие условий
- •Int BONUS(){
- •Int BONUS(){
- •Int BONUS(){
- •Int BONUS(){
- •Операт
- •условий
- •Комбинаторное покрытие
- •Выводы по покрытию
Int BONUS(){
1int errorCode=0; Department leadingDepartment{0;0} ; int boundaryWage=15000; int minAllowance=100; int maxAllowance=200;
2If (Departmetns.Lenght <=0 || Employees.Lenght <=0) errorCode=1;
3else
4{for(int i=1; i<= Departmetns.Lenght; i++)
5 |
if (Departments[i].sales>= leadingDepartment.sales) |
|
leadingDepartment=Department; |
6bool isLeadingDepartmentNull=true;
7for (int i=1; i<= Employees.Lenght; i++)
8 |
if (employees[i].department= leadingDepartment.department) |
|
9 |
if (employees[i].wage >= boundaryWage || employees[i].IDPost |
|
10 |
==‘M’) |
employees[i].wage = minAllowance; |
|
||
11 |
else employees[i].wage = maxAllowance; |
|
12 |
if (isLeadingDepartmentNull) errorCode=2;} |
|
Операт Результат true |
Результат false |
|
13 |
return errorCode;} |
|
ор |
|
|
2Если в таблицах Отделов и Сотрудников нет записей
5Случится не менее одного раза
Сотрудник лидирующего отдела является 8 Сотрудникменеджеромчислитсяили имеетв лидирующемзаработнуюотделеплату не
ниже minAllowance
9
Если в таблицах Отделов и Сотрудников есть записи
В таблице Отделов есть записи упорядочиваются так, чтобы отдел с
меньшей суммой продаж следовал за отделом с большей суммой продаж Сотрудник лидирующего отдела не
Сотрудникявляется менеджеромчислится вилидирующемимеет отделезаработную плату ниже minAllowance
Int BONUS(){
1int errorCode=0; Department leadingDepartment{0;0} ; int boundaryWage=15000; int minAllowance=100; int maxAllowance=200;
2If (Departmetns.Lenght <=0 || Employees.Lenght <=0) errorCode=1;
3else
4{for(int i=1; i<= Departmetns.Lenght; i++)
5 |
if (Departments[i].sales>= leadingDepartment.sales) |
|
leadingDepartment=Department; |
6bool isLeadingDepartmentNull=true;
7for (int i=1; i<= Employees.Lenght; i++)
8 |
if (employees[i].department= leadingDepartment.department) |
||
9 |
if (employees[i].wage >= boundaryWage || employees[i].IDPost |
||
|
==‘M’) |
|
|
10 |
employees[i].wage = minAllowance; |
||
11 |
else employees[i].wage = maxAllowance; |
|
|
12 |
if (isLeadingDepartmentNull) errorCode=2;} |
|
|
Операт Результат true |
Результат false |
|
|
13 |
return errorCode;} |
|
|
ор |
|
|
|
2 |
Если в таблицах Отделов и Сотрудников нет |
Если в таблицах Отделов и Сотрудников |
|
|
записей |
есть записи |
|
5 |
Случится не менее одного раза |
В таблице Отделов есть записи |
|
|
|
упорядочиваются так, чтобы отдел с |
|
|
|
меньшей суммой продаж следовал за |
|
|
|
отделом с большей суммой продаж |
|
8 |
Сотрудник числится в лидирующем отделе |
Сотрудник не числится в лидирующем |
|
|
|
отделе |
|
9 |
Не найдены сотрудники, числящиеся в лидирующихНайден хотя бы один |
|
|
Сотрудник лиди ющего отдела явл ется |
Сотрудник лидирующегосотрудник,ела не |
||
|
отделах |
числящийся в одном из |
лидирующих |
|
мен джером или имеет заработную плату не |
является менеджером и |
имеет |
|
ниже minAllowance |
разделов |
|
|
заработную плату ниже minAllowance |
||
12
Покрытие условий
•Количество тестов должно быть таким, чтобы каждое из ЭЛЕМЕНТАРНЫХ условий, образующих проверочное выражение в точке ветвления, принимало каждое из двух из двух логических значений (true и false) хотя бы один раз.
•Позволяет выявлять ошибки в логических выражениях.
Int BONUS(){
1 int errorCode=0; Department leadingDepartment{0;0} ; int boundaryWage=15000; int minAllowance=100; int maxAllowance=200;
2 If (Departmetns.Lenght <=0 || Employees.Lenght <=0х) errorCode=1;2
3 else
4{for(int i=1; i<= Departmetns.Lenght; i++)
5 |
if (Departments[i].sales>= leadingDepartment.sales) |
|
leadingDepartment=Department; |
6bool isLeadingDepartmentNull=true;
7for (int i=1; i<= Employees.Lenght; i++)
8 |
if (employees[i].department= leadingDepartment.department) |
|
|
{isLeadingDepartmentNull=false; |
х 2 |
9 |
if (employees[i].wage >= boundaryWage || employees[i].IDPost ==‘M’) |
|
10 |
employees[i].wage = minAllowance; |
|
11 |
else employees[i].wage = maxAllowance;} |
|
12if (isLeadingDepartmentNull) errorCode=2;}
13return errorCode;}
Int BONUS(){
1 |
int errorCode=0; Department leadingDepartment{0;0} ; int boundaryWage=15000; int |
|
|
minAllowance=100; int maxAllowance=200; |
|
2 |
If (Departmetns.Lenght <=0 || Employees.Lenght <=0) errorCode=1; |
|
3 |
else |
х 2 |
|
||
4{for(int i=1; i<= Departmetns.Lenght; i++)
5 |
if (Departments[i].sales>= leadingDepartment.sales) |
|
leadingDepartment=Department; |
6bool isLeadingDepartmentNull=true;
|
7 |
for (int i=1; i<= Employees.Lenght; i++) |
|
х 2 |
|
|
8 |
if (employees[i].department= leadingDepartment.department) |
|||
|
|
{isLeadingDepartmentNull=false; |
|
|
|
|
9 |
if (employees[i].wage >= boundaryWage || employees[i].IDPost |
|||
|
10 |
==‘M’) |
employees[i].wage = minAllowance; |
|
|
|
|
|
|||
|
11 |
else employees[i].wage = maxAllowance;} |
|
||
Операт12 |
Результатif (isLeadingDepartmentNull)true |
errorCode=2;}Результат false |
|
||
ор |
13 |
return errorCode;} |
|
Departmetns.Lenght >0 |
|
2 |
|
Departmetns.Lenght <=0 |
|
|
|
2 |
|
Случится не менее одного раза |
|
В таблице Отделов есть записи |
|
5 |
|
|
|||
|
|
|
|
упорядочиваются так, чтобы отдел с |
|
|
|
|
|
меньшей суммой продаж следовал за |
|
|
|
|
|
отделом с большей суммой продаж |
|
8 |
|
Сотрудник числится в лидирующем отделе |
Сотрудник не числится в лидирующем |
||
9 |
|
|
|
отделе |
|
|
|
|
|
|
|
9 |
|
Не найдены сотрудники, числящиеся в |
Найден хотя бы один сотрудник, |
||
12 |
|
||||
|
|
лидирующих отделах |
|
числящийся в одном из лидирующих |
|
|
|
|
|
разделов |
|
Int BONUS(){
1 int errorCode=0; Department leadingDepartment{0;0} ; int boundaryWage=15000; int minAllowance=100; int maxAllowance=200;
2 If (Departmetns.Lenght <=0 || Employees.Lenght <=0) errorCode=1;х 2
3 else
4{for(int i=1; i<= Departmetns.Lenght; i++)
5 |
if (Departments[i].sales>= leadingDepartment.sales) |
|
leadingDepartment=Department; |
6bool isLeadingDepartmentNull=true;
|
7 |
for (int i=1; i<= Employees.Lenght; i++) |
|
х 2 |
|
|
8 |
if (employees[i].department= leadingDepartment.department) |
|||
|
|
{isLeadingDepartmentNull=false; |
|
|
|
|
9 |
if (employees[i].wage >= boundaryWage || employees[i].IDPost |
|||
|
10 |
==‘M’) |
employees[i].wage = minAllowance; |
|
|
|
|
|
|||
|
11 |
else employees[i].wage = maxAllowance;} |
|
||
Операт12 |
Результатif (isLeadingDepartmentNull)true |
errorCode=2;}Результат false |
|
||
ор |
13 |
return errorCode;} |
|
Departmetns.Lenght >0 |
|
2 |
|
Departmetns.Lenght <=0 |
|
|
|
2 |
|
Employees.Lenght <=0 |
|
Employees.Lenght >0 |
|
|
Случится не менее одного раза |
|
В таблице Отделов есть записи |
||
5 |
|
|
|||
|
|
|
|
упорядочиваются так, чтобы отдел с |
|
|
|
|
|
меньшей суммой продаж следовал за |
|
|
|
|
|
отделом с большей суммой продаж |
|
8 |
|
Сотрудник числится в лидирующем отделе |
Сотрудник не числится в лидирующем |
||
9 |
|
|
|
отделе |
|
|
|
|
|
|
|
9 |
|
Не найдены сотрудники, числящиеся в |
Найден хотя бы один сотрудник, |
||
12 |
|
||||
|
|
лидирующих отделах |
|
числящийся в одном из лидирующих |
|
|
|
|
|
разделов |
|
Int BONUS(){
1 int errorCode=0; Department leadingDepartment{0;0} ; int boundaryWage=15000; int minAllowance=100; int maxAllowance=200;
2 If (Departmetns.Lenght <=0 || Employees.Lenght <=0) errorCode=1;х 2
3 else
4{for(int i=1; i<= Departmetns.Lenght; i++)
5 |
if (Departments[i].sales>= leadingDepartment.sales) |
|
leadingDepartment=Department; |
6bool isLeadingDepartmentNull=true;
|
7 |
for (int i=1; i<= Employees.Lenght; i++) |
|
х 2 |
|
|
|
8 |
if (employees[i].department= leadingDepartment.department) |
|
|||
|
|
{isLeadingDepartmentNull=false; |
|
|
|
|
|
9 |
if (employees[i].wage >= boundaryWage || employees[i].IDPost |
|
|||
|
10 |
==‘M’) |
employees[i].wage = minAllowance; |
|
|
|
|
|
|
|
|||
|
11 |
else employees[i].wage = maxAllowance;} |
|
|
||
Операт12 |
Результатif (isLeadingDepartmentNull)true |
errorCode=2;}Результат false |
|
|
||
ор |
13 |
return errorCode;} |
|
Departmetns.Lenght >0 |
|
|
2 |
|
Departmetns.Lenght <=0 |
|
|
|
|
2 |
|
Employees.Lenght <=0 |
|
Employees.Lenght >0 |
|
|
5 |
|
Случится не менее одного раза |
|
В таблице Отделов есть записи |
|
|
|
|
|
|
упорядочиваются так, чтобы отдел с |
|
|
|
|
|
|
меньшей суммой продаж следовал за |
|
|
|
|
лидирующего отдела имеет з/п не |
отделом с большей суммой продаж |
з/п |
||
8 |
|
лид рующего |
|
|||
|
Сотрудникчислится в лидирующем отделе |
Сотрудникне числится в лиотделаирующимеет |
|
|||
|
|
ниже boundaryWage |
|
ниже boundaryWage |
|
|
9 |
|
|
|
отделе |
|
|
|
|
|
|
|
|
|
9 |
|
Не найдены сотрудники, числящиеся в |
Найден хотя бы один сотрудник, |
|
||
12 |
|
|
||||
|
|
лидирующих отделах |
|
числящийся в одном из лидирующих |
|
|
|
|
|
|
разделов |
|
|
Int BONUS(){
1 int errorCode=0; Department leadingDepartment{0;0} ; int boundaryWage=15000; int minAllowance=100; int maxAllowance=200;
2 If (Departmetns.Lenght <=0 || Employees.Lenght <=0) errorCode=1;х 2
3 else
4{for(int i=1; i<= Departmetns.Lenght; i++)
5 |
if (Departments[i].sales>= leadingDepartment.sales) |
|
leadingDepartment=Department; |
6bool isLeadingDepartmentNull=true;
7for (int i=1; i<= Employees.Lenght; i++)
|
8 |
if (employees[i].department= leadingDepartment.department) |
х 2 |
||
|
|
{isLeadingDepartmentNull=false; |
|
|
|
|
9 |
if (employees[i].wage >= boundaryWage || |
|
||
|
10 |
employees[i].IDPost ==‘M’) |
employees[i].wage = minAllowance; |
|
|
|
|
|
|||
|
11 |
else employees[i].wage = maxAllowance;} |
|
||
Операт12 |
Результатif (isLeadingDepartmentNull)true |
errorCode=2;}Результат false |
|
||
ор |
13 |
return errorCode;} |
|
Departmetns.Lenght >0 |
|
2 |
|
Departmetns.Lenght <=0 |
|
|
|
2 |
|
Employees.Lenght <=0 |
|
Employees.Lenght >0 |
|
5 |
|
Случится не менее одного раза |
|
В таблице Отделов есть записи |
|
|
|
|
|
упорядочиваются так, чтобы отдел с |
|
|
|
|
|
меньшей суммой продаж следовал за |
|
|
|
|
|
отделом с большей суммой продаж |
|
8 |
|
Сотрудник числится в лидирующем отделе |
Сотрудник не числится в лидирующем |
||
|
|
|
|
отделе |
|
9 |
|
Сотрудник лидирующего отдела имеет з/п не |
Сотрудник лидирующего отдела имеет з/п |
||
|
|
Сотрудник лидирующего отдела является |
ниже boundaryWage |
|
|
|
|
ниже boundaryWage |
|
|
|
9 |
|
менеджером |
|
Сотрудник лидирующего отдела не |
|
|
|
|
|
является менеджером |
|
12 |
|
Не найдены сотрудники, числящиеся в |
Найден хотя бы один сотрудник, |
||
|
|
лидирующих отделах |
|
числящийся в одном из лидирующих |
|
|
|
|
|
разделов |
|
Операт |
Результат true |
|
|
|
Результат false |
|
||||
ор |
|
|
|
|
|
|
|
|
|
|
2 |
|
Departmetns.Lenght <=0 |
|
|
Departmetns.Lenght >0 |
|||||
2 |
|
Employees.Lenght <=0 |
|
|
Employees.Lenght >0 |
|||||
5 |
|
Случится не менее одного раза |
|
|
В таблице Отделов есть записи |
|||||
|
|
|
|
|
|
|
|
упорядочиваются так, чтобы отдел с |
||
|
|
|
|
|
|
|
|
меньшей суммой продаж следовал за |
||
|
|
|
|
|
|
|
|
отделом с большей суммой продаж |
||
8 |
|
Сотрудник числится в лидирующем отделе |
Сотрудник не числится в лидирующем |
|||||||
|
|
|
|
|
|
|
|
отделе |
|
|
9 |
|
Сотрудник лидирующего отдела имеет з/п не |
Сотрудник лидирующего отдела имеет з/п |
|||||||
|
|
ниже boundaryWage |
|
|
|
ниже boundaryWage |
||||
9 |
|
Сотрудник лидирующего отдела является |
Сотрудник лидирующего отдела не |
|||||||
|
|
менеджером |
|
|
|
|
является менеджером |
|||
12 |
Тест |
Не найдены сотрудники, числящиеся в |
|
Найден хотя бы один сотрудник, |
||||||
|
Вход |
|
|
|
|
|
Ож даемый результат |
|||
|
1 |
лидирующих отделах |
|
|
числящийся в одном из лидирующих |
|||||
|
Departmetns.Lenght = 2, Employees.Lenght = 3 errorCode = 0, таблица отделов не |
|||||||||
|
|
Таблица сотрудников |
Таблица |
разделов |
|
|
||||
|
|
меняется |
|
|
||||||
|
|
отделов |
С |
1 |
21000 |
1 |
10000 |
Таблица Сотрудников |
||
|
|
Иванов |
Иванов |
С |
1 21100 |
|||||
|
|
Петров |
С |
2 |
14000 |
2 |
8000 |
|||
|
|
Петров |
С |
2 14000 |
||||||
|
|
Сидоров М |
1 |
10000 |
|
|
||||
|
|
|
|
Сидоров М |
1 10100 |
|||||
|
|
|
|
|
|
|
|
|||
2 Departmetns.Lenght = 0, Employees.Lenght = 0 errorCode = 1, таблицы отделов и сотрудников не меняются
3 |
Departmetns.Lenght = 2, Employees.Lenght = 3 errorCode = 2, таблицы отделов и |
|||||
|
Таблица сотрудников |
Таблица сотрудников не меняются |
||||
|
отделов |
С |
2 |
21000 |
|
|
|
Иванов |
1 |
10000 |
|||
|
Петров |
С |
2 |
14000 |
||
|
2 |
8000 |
||||
|
Сидоров М |
2 |
10000 |
|||
|
|
|
||||
….
9if (employees[i].wage >= boundaryWage || employees[i].IDPost ==‘M’)
10 |
|
|
|
|
|
|
|
employees[i].wage = minAllowance; |
|
||||
11 |
|
else employees[i].wage = maxAllowance;} |
|
|
|
|
|||||||
…. |
1 |
Departmetns.Lenght = 2, Employees.Lenght = 3 errorCode = 0, таблица отделов не |
|||||||||||
|
|||||||||||||
|
|
|
|
Таблица сотрудников |
|
Таблица меняется |
|
|
|||||
|
|
отделов |
|
|
|
|
|
|
Таблица Сотрудников |
||||
|
|
Иванов |
С |
1 |
21000 |
|
1 |
10000 |
Иванов |
С |
1 21100 |
||
|
|
Петров |
С |
2 |
14000 |
|
2 |
8000 |
|||||
|
|
|
Петров |
С |
2 14000 |
||||||||
|
|
Сидоро |
|
|
|
|
|
|
|||||
|
|
М |
1 |
10000 |
|
|
|
Сидоров М |
1 10100 |
||||
|
|
в |
|
|
|
|
|
||||||
|
Покрытие условий - успешно |
|
|
|
|
|
|||||||
9 |
Сотрудник лидирующего отдела имеет з/п не |
Сотрудник лидирующего отдела имеет з/п |
|||||||||||
|
ниже boundaryWage |
|
|
|
|
ниже boundaryWage |
|
||||||
9 |
Сотрудник лидирующего отдела является |
Сотрудник лидирующего отдела не |
|||||||||||
|
менеджером |
|
|
|
|
|
|
|
является менеджером |
|
|||
|
Покрытие решений- неуспешно |
|
|
|
|
||||||||
9 |
Сотрудник лидирующего отдела является |
Сотрудник лидирующего отдела не |
|||||||||||
|
менеджером или имеет заработную плату не |
является менеджером или имеет |
|||||||||||
|
ниже minAllowance |
|
|
|
|
|
заработную плату ниже minAllowance |
||||||
1 |
|
Departmetns.Lenght = 2, Employees.Lenght = 3 errorCode = 0, таблица отделов не |
|||||||||||
|
|
Таблица сотрудников |
Таблица |
меняется |
|
|
|
||||||
|
|
отделов |
М |
1 |
|
21000 |
|
1 |
10000 |
Таблица Сотрудников |
|||
|
|
Иванов |
|
|
Иванов |
С |
1 21100 |
||||||
|
|
Петров |
С |
2 |
|
14000 |
|
2 |
8000 |
Петров |
С |
2 14000 |
|
|
|
Сидоро |
С |
1 |
|
10000 |
|
|
|
Сидоров М |
1 10100 |
||
|
|
в |
|
|
|
|
|
|
|
|
|||
условий
•Каждое условие в решении принимает каждое возможное значение минимум 1 раз, каждый возможный исход решения проверяется минимум 1 раз и каждой точке входа управление передаётся минимум 1 раз.
