Skip to content

Yksikkötestaus

Kuvauksen kirjoitti: Jussi Kaunismaa N4177

Mitä yksikkötestaus on

Yksikkötestaus on ohjelmistotestauksen vaihe. Yksikkötestauksessa testataan sovelluksen pienimpiä testattavissa olevia komponentteja muista sovelluksen komponenteista eristetyssä tilassa ja varmistetaan yksikön toimivuus ulkoisista muuttujista riippumatta. Sanalla yksikkö viitataan testauksen kohteena olevaan komponenttiin. Koska yksikkötestauksessa testataan sovelluksen pienimpiä jonkin tarkoituksen täyttäviä komponentteja saattaa koodin ohjelmointiparadigma vaikuttaa yksikköjen valintaan. Esimerkiksi proseduraalisessa ohjelmoinnissa yksiköitä voisivat olla yksittäiset funktiot kun taas olio-ohjelmoinnissa yksiköitä ovat yleensä kokonaiset rajapinnat kuten luokat.

Yksikkötestit ovat yleensä ensimmäiset testit, mitä sovelluksen koodille suoritetaan. Esimerkiksi ohjelmistotestauksen elinkaarta mallintavassa V-mallissa yksikkötestaus on testauksen ensimmäinen taso ja se suoritetaan kyseisessä mallissa ennen integraatiotestausta, jolloin komponenttien vuorovaikutusta testataan komponentit sovellukseen integroituna. Näin sovelluksen komponentit voidaan todeta yksikköinä toimiviksi ennen niiden integrointia sovellukseen. Yksikkötestit kirjoitetaan yksikön kehityksen yhteydessä ja ne ovat yleensä yksikön kirjoittaneen kehittäjän vastuulla, koska testien kirjoittaminen vaatii täyden ymmärryksen yksikön toiminnasta. Yksikkötestit luokitellaan white-box testaukseksi, koska ne suoritetaan sovelluksen kehityksen yhteydessä ja vaativat lähdekoodin.

Yksikön riippuvuudet yksikkötestauksessa

Yksikkötestauksessa testataan vain yksikköä ilman sovelluksen muita yksiköitä, joista se saattaa olla riippuvainen (testit, joissa testataan montaa yksikköä ovat määritelmän mukaan integraatiotestausta). Tämän vuoksi yksikkötestejä kirjoittaessa täytyy testattavan yksikön riippuvuudet korvata. Tämä tarkoittaa käytännössä testattavan yksikön vaatimien muiden komponenttien simulointia yksikkötestin koodissa. Näiden komponenttien simuloimiseksi voidaan käyttää esimerkiksi tynkäkomponentteja (stub) tai mokattuja objekteja. Yksikön riippuvuudet voivat olla "implisiittejä" (implicit dependency) tai "eksplisiittejä" (explicit dependency). Eksplisiitit riippuvuudet tulevat perinnän kautta argumentteina yksikköä luodessa kun taas implisiitit riippuvuudet luodaan yksikön sisällä. Esimerkiksi viittaus kuvitteelliseen globaaliin objektiin DateTime.Now yksikön sisältä olisi implisiitti riippuvuus. Yksikkötestauksen kannalta kannattaa mahdollisimman monta yksikön riippuvuuksista yrittää tehdä eksplisiiteiksi, jotta riippuvuudet voidaan helposti korvata yksikkötestien koodissa.

Linkit ulkopuolisiin lähteisiin