Просмотр содержимого документа
«Интеллектуальные информационные системы»
«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
(НИУ «БелГУ»)
Институт инженерных технологий и естественных наук
Кафедра прикладной информатики и информационных технологий
Отчет по лабораторной работе №2
« Тестирование программ методами “белого ящика“»
студентки очного отделения
3 курса 07001504 группы
Марко С. Тангуила
Проверил:
старший преподаватель
Пусная Ольга Петровна
БЕЛГОРОД, 2018
Цель работы: Усвоение студентами методов тестирования логики программы, формализованного описания результатов тестирования и стандартов по составлению схем программ.
Ход работы
Программы, реализующие заданные алгоритмы обработки данных.
Метод покрытия операторов
#include "stdafx.h"
#include
using namespace std;
int main()
{
double a, b, x;
cout "A = "; cin a;
cout "B = "; cin b;
cout "X = "; cin x;
if ((a 1) && (b == 0))
{
x = x / a;
cout "X = " x endl;
if ((a == 2) || (x 1))
{
x = x + 1;
cout "X = " x endl;
}
}
else
if ((a == 2) || (x 1))
{
x = x + 1;
cout "X = " x endl;
}
else
{
cout "X = " x endl;
}
system("pause");
return 0;
}

Рисунок 1 – Тест 1. Метод покрытия операторов
Метод покрытия решений (покрытия переходов)
#include "stdafx.h"
#include
using namespace std;
int main()
{
double a, b, x;
cout "A = "; cin a;
cout "B = "; cin b;
cout "X = "; cin x;
if ((a 1) || (b == 0))
{
x = x / a;
cout "X = " x endl;
if ((a == 2) || (x
{
x = x + 1;
cout "X = " x endl;
}
}
else
if ((a == 2) || (x
{
x = x + 1;
cout "X = " x endl;
}
else
{
cout "X = " x endl;
}
system("pause");
return 0;
}

Рисунок 2 – Тест 1. Метод покрытия решений

Рисунок 3 – Тест 2. Метод покрытия решений
Метод комбинаторного покрытия условий
#include "stdafx.h"
#include
using namespace std;
int main()
{
double a, b, x;
cout "A = "; cin a;
cout "B = "; cin b;
cout "X = "; cin x;
if (a 1)
{
if (b == 0)
{
x = x / a;
{
cout "X = " x endl;
}
if (a == 2)
x = x + 1;
{
cout "X = " x endl;
}
}
else if (a == 2)
{
x = x + 1;
{
cout "X = " x endl;
}
}
else if (a == 2)
{
x = x + 1;
{
cout "X = " x endl;
}
}
else if (x 1)
{
x = x + 1;
{
cout "X = " x endl;
}
}
else if (x 1)
{
cout "X = " x endl;
}
}
else
{
if (a == 2)
{
x = x + 1;
{
cout "X = " x endl;
}
}
else if (x 1)
{
x = x + 1;
{
cout "X = " x endl;
}
}
}
system("pause");
return 0;
}

Рисунок 4 – Тест 1. Метод комбинаторного покрытия условий

Рисунок 5 – Тест 2. Метод комбинаторного покрытия условий

Рисунок 6 – Тест 3. Метод комбинаторного покрытия условий

Рисунок 7 – Тест 4. Метод комбинаторного покрытия условий
Индивидуальное задание.
Найти значение x, если x=x/a+b, при a0 и b!=1; если x=x*b, при b=1 и x1.

Блок-схема 2 – Метод комбинаторного покрытия условий
Метод комбинаторного покрытия условий
#include "stdafx.h"
#include
using namespace std;
int main()
{
double a, b, x;
cout "A = "; cin a;
cout "B = "; cin b;
cout "X = "; cin x;
if (a 0)
{
if (b == 1)
{
x = x/a+b;
{
cout "X = " x endl;
}
if (b == 1)
x = x*b;
{
cout "X = " x endl;
}
}
else if (b == 1)
{
x = x*b;
{
cout "X = " x endl;
}
}
else if (b == 1)
{
x = x*b;
{
cout "X = " x endl;
}
}
else if (x 1)
{
x = x*b;
{
cout "X = " x endl;
}
}
else if (x 1)
{
cout "X = " x endl;
}
}
else
{
if (b == 1)
{
x = x*b;
{
cout "X = " x endl;
}
}
else if (x 1)
{
x = x*b;
{
cout "X = " x endl;
}
}
}
system("pause");
return 0;
}
Таблица 1 - Результаты тестирования
Тест | Метод комбинаторного покрытия условий |
| Ожидаемый результат | Результат тестирования |
A=1, B=0, X=2 | X=0 | успешно |
A=0, B=1, X=5 | X=5 | неуспешно |
A=2 B=2, X=3 | X=6 | успешно |
A=2, B=3, X=20 | X=60 | успешно |