A close up of the word webscale on a white background

Kysy konsultilta: Mitä eroa on yksikkö- ja integraatiotestaamisella?

19. syyskuuta 2024

Mitä eroa on yksikkö- ja integraatiotestaamisella?

Yksikkötesteillä testataan jonkin koodin osan toimintaa itsenäisesti. Yhden yksikkötestin tulisi kohdistua laajuudeltaan yksittäisen funktion tai luokan sisäiseen toimintaan. Yksikkötesteissä riippuvuudet sovelluksen muihin osiin, ulkopuolisiin sovelluksiin ja kirjastoihin pyritään minimoimaan. Testattavan yksikön vuorovaikutusta muiden osien kanssa voidaan testata korvaamalla oikea riippuvuuden kohde tynkä- tai sijaistoteutuksella (mock, stub, spy) joiden palauttamia arvoja voidaan kontrolloida ja joihin lähetettyjä kutsuja voidaan tarkastella. Yksikkö testien tulisi testata yksiköiden sisäinen logiikka kattavasti ja niiden tulisi olla helposti muutettavissa, jos logiikkaa joudutaan korjaamaan.


Integraatiotestaus on ohjelmiston osien yhteistoiminnan testaamista. Integraatiotestit voivat rajoittua esimerkiksi yhdellä palvelimella suoritettavan ohjelmiston testaamiseen siten että riippuvuudet palvelimen ulkopuolisiin järjestelmiin korvataan paikallisesti ajettavilla sijaistoteutuksilla tai tuotannossa eri palvelimilla ajettavien järjestelmän osien yhteistoiminnan testaamista siten että osia ajetaan omissa säiliöissään (container) yhdellä koneella. Integraatiotesteillä voidaan tarkoittaa myös usean fyysisesti eri palvelimilla tai jopa eri konesaleissa toimivien järjestelmien yhteistoiminnan testaamista tuotannon kaltaisessa ympäristössä. Perinteisissä konesaleissa ei välttämättä ole käytännöllistä ajaa testejä oikeassa palvelinympäristössä, mutta moderneissa pilviympäristöissä palveluiden käyttöönotto on usein niin nopeaa, että integraatiotestaamiseen voidaan pystyttää puhdas, tuotantoympäristöä vastaava testiympäristö, jossa testejä voidaan ajaa hallitusti siten että testaajalla on täysi hallinta järjestelmän komponenttien versioihin, parametreihin ja tilaan, esimerkiksi tietokantojen ja dokumenttivarastojen sisältöön. Integraatiotesteillä ei välttämättä ole mielekästä testata testattavien komponenttien sisäisen toiminnallisuuden jokaista yksityiskohtaa.


Usein ohjelmistolle kirjoitetaan erilliset yksikkö- ja integraatiotestikokoelmat. Käytännön toteutuksissa yksikkö- ja integraatiotestisettien rajat eivät useinkaan ole yhtä selkeät kuin edellä. Varsinkin yksikkötestien joukossa on usein testejä joilla testataan myös hieman isompia kokonaisuuksia ja esimerkiksi usean eri funktion yhteistoimintaa yhdellä testillä. Integraatiotestit taas saattavat laajimmillaan alkaa muistuttaa end-to-end testejä, joilla nimensä mukaisesti tarkoitetaan koko järjestelmä kokonaisuuden testausta loppukäyttäjältä koko järjestelmän läpi (päästä-päähän).


Markus Nousiainen

Markus Nousiainen

Senior Consultant

Viimeisimmät kirjoitukset

21. helmikuuta 2025
Pilvipalvelut mahdollistavat niin nopeamman innovoinnin, resurssien tehokkaamman hallinnan kuin joustavammat liiketoimintamallitkin. Jotta pilven tarjoamat liiketoimintaedut pystytään hyödyntämään, tarvitaan pilven käyttöön kuitenkin suunnitelmallisuutta ja järjestelmällisyyttä.
19. helmikuuta 2025
Kysy konsultilta -blogisarjassa konsulttimme tekevät selkoa alan termeistä ja ilmiöistä. Vastaukset on mitoitettu sopimaan pieneenkin tiedonnälkään. Tällä kertaa selvitämme, mikä on Amazon Cognito?
13. helmikuuta 2025
Pilvipulssi tuo ajankohtaiset uutiset AWS- ja Azure-pilvimarkkinoilta suoraan asiantuntijoiltamme. Tutustu uuteen AWS CloudFormation Hooks -ominaisuuteen, joka auttaa varmistamaan, että infrastruktuurimuutokset noudattavat ennalta määriteltyjä sääntöjä ennen käyttöönottoa.
11. helmikuuta 2025
AWS DevOps Services Competency on merkittävä virstanpylväs yrityksellemme ja osoitus sitoutumisestamme korkealaatuisiin DevOps-palveluihin AWS-ympäristössä. Mutta mitä tämä tarkoittaa asiakkaillemme, ja miksi AWS Competency -ohjelma on tärkeä?
Lisää kirjoituksia
Share by: