Test-Driven Development (TDD) pristup je dizajnu softvera koji je ukorijenjen u izazovima proizvodnog koda kako bi se nastavio u dječjim koracima za izgradnju funkcionalnosti. Ljudima koji tek počinju učiti to može izgledati kontraintuitivno, ali nudi neke prednosti, uključujući čišći razvoj. Također može biti brže koristiti ovu metodu kada se ljudi naviknu na nju, ovisno o prirodi projekta. Programeri mogu koristiti široku paletu programskih jezika u razvoju vođenom testom i mogu ga primijeniti na novi softver, poboljšanja verzija ili popravke postojećih programa.
U ovom pristupu, programer započinje pisanjem testa koji bi trebao biti neuspješan jer proizvodni kod ne može izvršiti određenu naredbu ili upit. Koristeći neuspjeh kao osnovu, programer može razviti nekoliko redaka koda za dodavanje i ponovno pokrenuti test. Ako ne uspije, nešto nije u redu što je potrebno otkloniti prije nego što programer može nastaviti. Nakon što prođe, programer je svjestan da je test posebno definirao i vodio stvaranje funkcije, te on ili ona mogu prijeći na sljedeću funkciju.
Umjesto da stvaraju velike količine funkcionalnog koda koji će se kasnije možda trebati ispitati na greške i nedostatke, programeri se kreću polako i namjerno. Oni izgrađuju program s iznimno štedljivim kodom jer pišu samo ono što im je potrebno za određene funkcije. S vremenom, kod može narasti prilično velik, ali svaki redak odgovara određenoj funkciji ili značajki. Učestalost bugova s razvojem temeljenim na testu također bi trebala biti smanjena jer ljudi učinkovito otklanjaju greške tijekom iznova testirajući iznova i iznova.
Svaki od napisanih testova može se ponovno koristiti u bilo kojem trenutku. Programer može pokrenuti svaki od njih kako bi potvrdio da cijeli program nastavlja raditi kako bi trebao. Ako se ne dogodi, programer zna da je nedavni redak koda problem i može se povući kako bi ga procijenio i riješio problem. Postavke razvoja koje se temelje na testu razlikuju se od situacije u kojoj će netko možda morati pregledavati brojne redove koda kako bi pronašao pogrešku, što može pojesti znatnu količinu vremena.
U biti, ovaj pristup uključuje kodiranje načina na koji ljudi žele da se softver ponaša, na temelju specifičnih testova koje administriraju dok se kreću. Iako razvoj vođen testom može zvučati dugotrajno i teško, zapravo može biti vrlo učinkovit. Vještim programerima ne treba više od nekoliko minuta za svaki krug testiranja i kodiranja. Donekle inverzan pristup im također može pomoći da preispitaju strategije i alate kako bi im omogućili rad na nove i ponekad učinkovitije načine.