Unit testing-ът е метод за тестване, който проверява дали индивидуалните единици от сорс код работят правилно. Единица или един юнит е най-малката част от едно приложение, която може да се изтества.
В процедурното програмиране юнита може да бъде една индивидуална програма, функция, процедура и т.н. , докато в обектно-ориентираното програмиране най-малката единица е метод, който може да принадлежи към един базов/супер клас, абстрактен клас или подклас.
Юнит тестовете са малки кодови фрагменти, създадени от програмистите или от време на време от white box тестърите по време на development-а. Дава основата на компонентното тестване.
По принцип, всеки един тест кейс е независим от другите. Заместители като method stubs (парче код, който има различна функционалност), mock objects (обекти, симулиращи поведението на реални обекти,но контролирани), fakes и test harnesses (автоматизиран тестов фреймуърк – колекция от софтуерна и тестова информация, конфигурирана да тества един програмен юнит като го пуска в различни ситуации и условия и гледа как реагира - какви output-и и behaviour-и има.
Unit тестовете обикновено се пишат и се пускат от програмистите, за да се уверят, че кодът работи както е редно.
С какво ни помага unit test-ването?
Намира проблемите на време
Когато един бъг се намери на време (по време на тестването преди продуктът да е излязъл на пазара, той спестява както усилия (ако е критичен или сравнително важен бъг ще трябва да бъде оправен възможно най-скоро и ако QA екипът не е на разположение ще стане кофти), така и пари на компанията (късно открит бъг или открит от изнервен потребител би имал лош за компанията ефект – загуба на клиентела).
Улеснява промените
Unit testing-ът позволява на програмиста да прави промени по кода (refactor) или да променя библиотеките в по-късен етап, и да бъде сигурен, че все още всичко работи както трябва (например в регресивното тестване).
Улеснява интеграцията
Както знаем, unit testing-ът е преди integration testing-а и ако е изтествано всичко като хората няма да създава проблеми както в интеграционното тестване, така и в по-късните етапи от тестване.
Документация
Това тестване дава един вид жива документация на системата. Девелъпърите, който се опитват да разберат каква функционалност притежава един юнит и как да го използват могат да погледнат към unit тестовете и да получат тази информация.
Дизайн
Комбинацията от писане на тестове – юнит тестовете и refactoring-а могат да изградят вид на един дизайн.
Това е като цяло информацията, която би била полезна на всеки заинтересован от QA, testing и development. :)