Тестване от тип „Черна кутия“ (Black Box Software testing)
При този вид тестване се използва само спецификацията на модула. Както знаем, пълната спецификация на всяка функция се състои от прототипа на функцията и съответни предусловия и постусловия. В този смисъл се извършва тестване на „черна кутия“, за която се познават само входа и изхода. Сериозно затруднение при този подход е изборът на данните за тестване.

Black box software testing
Подход на еквивалентните входни данни Един подход за избор на входните данни, с които се тества, е т. нар. подход на еквивалентните входни данни. Идеята на този подход е следната. Нека f е функцията, която се тества, a D е множеството на всевъзможните входни данни за f. Две входни данни d1 и d2 за f са еквивалентни, ако те произвеждат подобни резултати, т.е. изчислителният процес при пресмятане на f(d1) и f(d2) протича по едни и същи разклонения на програмата.
Така множеството D се разбива на подмножества от еквивалентни входни данни и следователно, за да тестваме функцията f е достатъчно
тя да се тества с един представител на всяко под-множество. Не е изключение някои от тези под-множества да се състоят от по единствен елемент. Основен недостатък на подхода на еквивалентните входни данни е, че няма алгоритъм, с който да се дефинират подмножествата на еквивалентните входни данни, а по-скоро опитът и интуицията на програмиста, „подсказват“ избора на представителите на еквивалентните входни данни.
Ще разгледаме идеята на еквивалентните входни данни с един прост пример.
Пример 1
Дадена е следната спецификация на функция, която определя дали стойността на една целочислена променлива п, принадлежи или непринадлежи на интервала [р, q].
//PRE n, p, q – целочислени стойности,
// -INT_MAX < р < =q < INT_MAX
//POST Резултатът от изпълнението на функцията е:
// true – р < = v < =q;
// false – в противен случай.
bool isln(int p, int q, int v);
Съгласно спецификацията можем да формираме следните девет подмножества от еквивалентни данни за тестване на функцията (виж фигурата): [-INT_MAX, р-2], {р-1}, {р}, {р+1}, [р+2, q-2], {q-1}, {q}, {q+1}, [q+2, INT_MAX]
- x – произволно число в интервала [-MAX_NT, р-2]
- у – произволно число в интервала [р+2, q-2]
- z – произволно число в интервала [q+2, MAX_INT]
