Testipohjainen kehitys (TDD) on lähestymistapa ohjelmistosuunnitteluun, joka perustuu tuotantokoodin haasteisiin edetä vauvan vaiheissa toiminnallisuuden kehittämiseksi. Tämä voi tuntua vastustamattomalta ihmisille, jotka ovat vasta aloittamassa oppimista, mutta sillä on joitain etuja, kuten puhtaampi kehitys. Tämän menetelmän käyttö voi myös olla nopeampaa, kun ihmiset ovat tottuneet siihen, riippuen projektin luonteesta. Ohjelmoijat voivat käyttää monenlaisia ohjelmointikieliä testipohjaisessa kehityksessä ja soveltaa sitä uusiin ohjelmistoihin, versioiden parannuksiin tai olemassa olevien ohjelmien korjauksiin.
Tässä lähestymistavassa ohjelmoija aloittaa kirjoittamalla testin, jonka pitäisi epäonnistua, koska tuotantokoodi ei voi suorittaa tiettyä komentoa tai kyselyä. Käyttämällä vikaa perustana ohjelmoija voi kehittää muutaman koodirivin lisättäväksi ja suorittaa testin uudelleen. Jos se epäonnistuu, on jotain vikaa, joka on korjattava ennen kuin ohjelmoija voi jatkaa. Kun se on läpäissyt, ohjelmoija on tietoinen siitä, että testi on nimenomaisesti määritellyt ja ohjannut toiminnon luomisen, ja hän voi siirtyä seuraavaan toimintoon.
Sen sijaan, että tuotettaisiin suuria määriä toiminnallista koodia, joka on ehkä tutkittava myöhemmin virheiden ja puutteiden varalta, kehittäjät liikkuvat hitaasti ja tarkoituksellisesti. He rakentavat ohjelman erittäin laihalla koodilla, koska he kirjoittavat vain tarkasti sen, mitä he tarvitsevat tiettyihin toimintoihin. Ajan myötä koodi voi kasvaa melko suureksi, mutta jokainen rivi vastaa tiettyä toimintoa tai ominaisuutta. Testivetoisen kehityksen virheiden esiintyvyyttä tulisi myös vähentää, koska ihmiset virheenkorjaavat tehokkaasti testauksen aikana uudelleen ja uudelleen.
Jokaista kirjoitettua testiä voidaan käyttää uudelleen milloin tahansa. Ohjelmoija voi suorittaa jokaisen varmistaakseen, että koko ohjelma toimii edelleen niin kuin pitäisi. Jos näin ei ole, ohjelmoija tietää, että äskettäinen koodirivi on ongelma, ja voi astua taaksepäin arvioimaan sitä ja korjaamaan ongelman. Testipohjaiset kehitysasetukset poikkeavat tilanteesta, jossa jonkun on ehkä selattava lukuisia koodirivejä löytääkseen virheen, mikä voi viedä huomattavan paljon aikaa.
Pohjimmiltaan tämä lähestymistapa sisältää koodauksen siitä, miten ihmiset haluavat ohjelmiston käyttäytymisen, perustuen tiettyihin testeihin, joita he hallinnoivat kulkiessaan. Testausvetoinen kehitys voi kuulostaa aikaa vievältä ja vaikealta, mutta se voi itse asiassa olla erittäin tehokasta. Taitavat kehittäjät tarvitsevat vain muutaman minuutin jokaiselle testaus- ja koodauskierrokselle. Hieman käänteinen lähestymistapa voi myös auttaa heitä miettimään uudelleen strategioita ja työkaluja, jotta he voivat työskennellä uusilla ja joskus tehokkaammilla tavoilla.