Първите две функции строят и тестват квадрати от ред 3 и 5. Интересно е да коментираме третата тест функция. Данните за тестване представляват тройки цели числа { п, a, d}, където: - п - ред на квадрата; - а - начален елемент на аритметична прогресия; - d - разлика.
В нея чрез вложени цикли автоматично се генерират множество от тестови ипотпал данни, извършва се обръщение към функцията createMagic и следва обръщение към функцията isMagic. Тестването се управлява от три глобални логически константи exe_tl, exe_t2 и exe_t3. Понеже броят на генерираните квадрати, както и размерът им, е твърде голяма използва се още една глобална логическа константа exe_pr, c която се управлява отпечатването на квадратите. Крайната верификация на всеки тест е поверена на функцията, която извежда съобщението, че тестът е минал успешно (PASS) или неуспешно (FAIL). А сега не остава нищо друго освен подробното разглеждане на файл MagicSquareTest.срр-и съответните резултати от трите теста, които следват по-долу.
Тестване на ипотпал софтуер с програмен код
Файл: MagicSquareTest. срр
#include
#include "magic.h"
const bool exe_tl = true;
const bool exe_t2 = true;
const bool exe_t3 = false;
const bool exe_pr = true;
bool testl(int[], int);
bool test2(int[], int);
bool test3(int[], int);
void verify(char[], bool);
int main()
{
const int N_MAX = 200;
int magic[N_MAX*N_MAX] = {0};
int size;
if (exe_tl)
{
std::cout << "Test 1 -- Start ";
size = 3;
verify("TEST l",testl{ magic, size));
}
if (exe_t2)
{
size = 5;
std::cout << "Test 2 -- Start ";
verify("TEST 2", test2{magic, size));
}
if (exe_t3)
{
size = N_MAX;
std::cout << "Test 3 -- Start ";
verify("TEST 3", test3(magic, size));
}
}
bool testl(int magic[ ], int size)
{
int a, d;
a = 1; d =1;
if (!createMagic(magic, size, a, d) ) return false;
if (exe_pr) printMagic(magic, size, a, d);
return (isMagic(magic, size)) ? true : false;
}
bool test2 (int magic[ ], int size)
{
int a, d;
bool result;
a = 1; d =1;
if (!createMagic(magic, size, a, d) ) return false;
if (exe_pr) printMagic(magic, size, a, d) ;
if(!isMagic(magic, size))
return false;
a = 0; d = 5;
if (!createMagic (magic, size, a, d)) return false;
if (exe_pr) printMagic(magic, size, a, d);
return (isMagic(magic, size)) ? true : false;
}
bool test3(int magic[], int size)
{
const int N_MIN =3;
const int A_MIN = 0;
const int A_MAX = 10;
const int D_MIN = 1;
const int D_MAX =11;
int incorrect = 0;
int correct = 0;
for (int n=N_MIN; n
Изграждането и тестването на една програма са два свързани процеса, при които с написването на една функция от програмата обикновено следва и нейното тестване. То може да започне с функцията от най-високо ниво, а след това и с функции от следващо ниво и постепено да се „слиза" с едно ниво по-надолу. Този подход на тестване е известен като тестване отгоре-надолу.
Алтернативен и противиположен по идея на него е т. нар. подход на тестване отдолу-нагоре. Най-често тези два подхода се използват комбинирано и това ще покажем с изграждането и тестването на функциите на програмата isbnCode, c която се решава задачата за контролния знак ISBN кода.
Започваме с описанието на първото ниво на алгоритъма като С++ функция с име isbnCode. Тя извършва обръщение към функциите checkISBN и printISBN съответно за проверка за коректност на входния низ и за извеждане на резултата. Тук и по-нататьк функциите, които се тестват, са маркирани с червен цвят.
const int ISBN10 = 10; //ISBN10-глобална константа
int main ()
{
isbnCode( );
return 0;
}
//В цикъл въвежда ISBN код (низ от знаци)
// и пресмята контролния му знак
void isbnCode()
{
char isbn[ISBN10] ;
cout << "Enter an ISBN code" << endl;
cin >> isbn;
while (cin)
{
cout << "\nISBN code: " << isbn << endl;
if ( ! checkISBN (isbn)) // checkISBN - фиктивна
cout << isbn << " - Wrong ISBN code\n\n";
else
printISBN (isbn) ; // printlSBN - фиктивна
cout << "\nEnter an ISBN code" << endl;
cin >> isbn;
}
}
Ипотпал Каталог
Моля, използвайте следните навигационни връзки от нашия уеб сайт:Тестване на ипотпал програми и софтуер
Разработването на ипотпал софтуер е сложна интелектуална дейност. Ето защо грешките, допускани при разработката на програми, са неизбежни, незвисимо от опита, който имат проектантите и програмистите. Не съществува методология на програмиране, която да гарантира, че създадените чрез нея програми са без грешки.Понеже подпрограмата checkISBN все още не е написана, то тестването на isbnCode засега не може да се извърши. Но, за да се тества логиката й, не е необходимо да се използват истинските функции checklSBN и printlSBN. Ето защо, вместо подпрограма checklSBN най-напред ще съставим една фиктивна функция, играеща нейната роля.
Един много опростен вариант на такава функция може да е следният:
// Проверка на входната данна (Всички знаци –
//десетични цифри)
bool checklSBN(char isbn[])
{
return true;
}
Още от тестването на ипотпал софтуера:
- Тестване от тип „Черна кутия“ - Black Box Software testing
- Тестване на програми и софтуер
- Спецификация на ипотпал модула
- Тестване на програми и софтуер
- Тестване на граничните случаи
Така сме постъпили с функцията primISBN. Ето и нейният опростен вариант.
II Отпечатва четирите компоненти на ISBN код
void printISBN (char isbn[ ])
{
cout << isbn << endl;
return;
}
Сега вече може да се пристъпи към едно първоначално тестване на функцията isbnCode.