Ohjelmiston testaaminen
Testiprosessi

Perinteinen vesiputosmalli
Yleinen käytäntö vesiputouskehityksessä on, että testauksen suorittaa itsenäinen testaus ryhmä. Tämä voi tapahtua:
-         sen jälkeen, kun jokin ohjelman toiminnallisuus on kehitetty, mutta ennen sen lähettämistä asiakkaalle. Tämä johtaa usein siihen, että testausvaihetta käytetään projekti puskurina viivästymisien kompensoimiseksi, samalla uhraten testaukselle omistettua aikaa.
-         samaan aikaan kehitysprojektin alkaessa, jatkuvana prosessina projektin valmistumiseen asti.
Vesiputousmallissa yksikkötestaus suoritetaan monesti silti ohjelmistokehitystiimin toimesta, vaikka kaikki siitä pidemmälle viety testaus suoritettaisiinkin erillisen testaustiimin toimesta.
Ketterä- tai XP-kehitysmalli
Vastakohtana perinteisen vesiputousmallin mukaiseen testaukseen voidaan pitää extreme programming (XP) ja ketterässä kehityksessä (agile development) käytettyä testivetoisen kehityksen mallia. Kyseisessä mallissa yksikkötestit kirjoitetaan aivan ensimmäisenä ohjelmistokehittäjien toimesta. Näiden testien oletetaan epäonnistuvan aluksi, jonka jälkeen jokaista epäonnistunutta testiä varten kirjoitetaan juuri sen verran koodia, että kyseiset testit saadaan menemään läpi. Tämä tarkoittaa sitä, että testisarjoja (test suite) päivitetään jatkuvasti uusien virhetilanteiden ilmentyessä, ja ne integroidaan kehitysvaiheessa tehtyjen regressiotestien kanssa, jos niitä vain on olemassa.
Lopullinen tavoite tämän kaltaisessa testiprosessissa on jatkuvan integraation tukeminen (menetelmä jossa kehittäjät yhdistävät heidän itse tekemänsä lähdekoodi muokkaukset varsinaiseen ohjelmistoprojektiin) ja virheiden määrän vähentäminen. Tämä menetelmä lisää varsinaisen ohjelmistokehitystiimin tekemää testaustyötä ennen varsinaisen testaustiimin suorittamaa testausta.
Testaamista voidaan suorittaa seuraavilla tasoilla:
Yksikkötestaus testaa pieniä ohjelmistokomponentteja tai -moduulia. Jokainen yksikkö testataan, jotta voidaan varmistaa, että yksikön yksityiskohtainen suunnittelu on toteutettu oikein. Objekti-orientoituneessa ympäristössä testaamista tehdään usein luokkatasolla ja minimaaliset testit sisältävät rakentajien ja purkajien testaamisen.
Integraatiotestaaminen paljastaa viat rajapinnoissa ja moduulien vuorovaikutuksessa.
Järjestelmätestaus testaa kokonaan integroitua järjestelmää vahvistaakseen, että se vastaa vaatimuksia.
Järjestelmän integraatiotestaus  vahvistaa, että järjestelmä on integroitu ulkopuolisten tai kolmannen osapuolen järjestelmien kanssa niin, että ne vastaavat järjestelmävaatimuksia
Ennen kuin ohjelmiston viimeinen versio julkaistaan,  suoritetaan usein lisäksi alpha- ja betatestaus:
Alphatestaus on simuloitu tai oikea toiminnallinen testaus potentiaalisen käyttäjän tai asiakkaan tekemänä. Myös itsenäistä testiryhmää voidaan käyttää. Alphatestaus suoritetaan ennen betatestejä.lähde?
Betatestaus. Ohjelmiston betaversiot julkaistaan rajatulle yleisölle, ohjelmistokehitysryhmän ulkopuolelle. Ohjelmisto julkaistaan ryhmille henkilöitä, jotta voidaan varmistua, että tuote sisältää vain vähän vikoja tai bugeja. Joskus tuote julkaistaan avoimesti kaikille palautteen saamiseksi tulevien käyttäjämäärien maksimoimiseksi.
Lopuksi tehdään hyväksyttämistestaus, jonka voi tehdä loppukäyttäjä tai asiakas. lähde?