Тестове и тестване
Разработването на софтуер е сложна интелектуална дейност. Ето защо грешките, допускани при разработката на програми, са неизбежни, незвисимо от опита, който имат проектантите и програмистите. Не съществува методология на програмиране, която да гарантира, че създадените чрез нея програми са без грешки.
По-скоро чрез тях се прави опит да се въведе стил на програмиране, при който както отделният програмист, така и целият екип като цяло да допуска по възможност по-малко грешки. Презумпцията, че всяка новосъздадена програма съдържа грешки, налага щателна проверка преди да се пристъпи към използването й.
Тестването е специална процедура, с изпълнението на която се цели откриване на грешки в програмите. На всеки тест t на програмната единица р, изпълнена с входни данни d, може да се гледа като на логическа функция t(p, d), която е със стойност true, ако се констатира съответствие с очакваните резултати и false в противен случай:
false, ако полученият резултат не съответства на очаквания t(p, d) = true, ако плученият резултат съответства на очаквания
Стойност true на функцията t не доказва коректността на програмата, а само това, че с конкретните входни данни са получени очакваните резултати. От друга страна, стойността false показва наличие на грешка, но не може да се твърди, че това е последната грешка. Тестването се планира предварително и обикновено включва поредица от тестове.
Това са процедури по локализиране и отстраняването на грешки, известни с по-пулярния английски термин дебъгинг (debugging). След
успешно завършване на поредния тест се преминава към следващия. Цялостната процедура по тестването завършва, когато всички планирани тестове завършат със стойност true.
Тестването на една програмна система се извършва на няколко нива:
- ниво 0: тестване на програмна единица (функция, клас, модул);
- ниво 1: интегрирано (съвместно) тестване на няколко модула или подсистеми;
- ниво 2: тестване на цялата система;
- ниво 3: тестване при реални условия.
Обичайна практика е тестването на ниво 0 да се извършва от нейния автор. Тестването обаче на следващите три нива обикновено се извършва от екип, който не включва програмистите, участвали при писането на програмни части, които се тестват.
Напоследък много компании използват методология, наречена екстремно програмиране, при която писането и тестването на програмните единици от ниво 0 се извършва от екип с двама програмисти. Когато единият пише някаква функция или клас, другият има възможност да чете кода, да обмисли тестове и да проведе съответното тестване.
При разработката на следващата програмна единица те разменят ролите си и така двамата участват в двете фази на един процес.
Планирането и подготовката за тестване започва още на фаза проектиране, тогава, когато се описва функционалността на съответната програмна единица. Не е необичайно, ако в хода на самото тестване се наложи разработката на допълнителни тестове.

[...] Тестване на софтуер [...]