- Yksikkötestaus Vs Integrointitestaus Vs Toiminnallinen testaus
- Mitä on yksikkötestaus?
- Mitä on integraatiotestaus?
- Yksikkötestaus vs. integrointitestaus
- Toiminnallinen testaus
- Päätelmä
- Suositeltu lukeminen
Yksikkö-, integrointi- ja toiminnallisen testauksen yksityiskohtainen vertailu:
Kaikissa ohjelmistosovelluksissa sekä yksikkötestaus että integraatiotestaus ovat erittäin tärkeitä, sillä kumpikin niistä käyttää ainutlaatuista prosessia ohjelmistosovelluksen testaamiseen.
Mikään niistä tai edes molemmat eivät kuitenkaan voi korvata toiminnallista testausta missään vaiheessa.
Yksikkötestaus Vs Integrointitestaus Vs Toiminnallinen testaus
Yksikkötestaus tarkoittaa sovelluksen yksittäisten moduulien testaamista eristyksissä (ilman vuorovaikutusta riippuvuuksien kanssa) sen varmistamiseksi, että koodi toimii oikein.
Integrointitestaus tarkoittaa sen tarkistamista, että eri moduulit toimivat hyvin, kun ne yhdistetään ryhmäksi.
Toiminnallinen testaus tarkoittaa järjestelmän toiminnallisuuden osan testaamista (voi olla vuorovaikutuksessa riippuvuuksien kanssa) sen varmistamiseksi, että koodi tekee oikeita asioita.
Toiminnalliset testit liittyvät integrointitesteihin, mutta ne tarkoittavat testejä, joilla tarkistetaan koko sovelluksen toiminnallisuus, kun kaikki koodi toimii yhdessä, eli lähes superintegrointitestiä.
Yksikkötestauksessa tarkastetaan järjestelmän yksittäinen komponentti, kun taas toiminnallisuustestauksessa tarkastetaan sovelluksen toiminta suhteessa järjestelmän vaatimusmäärittelyssä kuvattuun toimintaan. Integrointitestauksessa puolestaan tarkastetaan järjestelmään integroidut moduulit.
Ja mikä tärkeintä, sijoitetun pääoman tuoton (ROI) optimoimiseksi koodipohjassasi pitäisi olla mahdollisimman paljon yksikkötestejä, vähemmän integrointitestejä ja mahdollisimman vähän toiminnallisia testejä.
Tätä havainnollistaa parhaiten seuraava testipyramidi:
Yksikkötestit ovat helpompia kirjoittaa ja nopeampia toteuttaa. Testien toteuttamiseen ja ylläpitoon kuluva aika ja työ lisääntyvät yksikkötestauksesta toiminnalliseen testaukseen, kuten yllä olevassa pyramidissa on esitetty.
Esimerkki:
Ymmärtäkäämme näitä kolmea testaustyyppiä yksinkertaistetun esimerkin avulla.
Esim. Toimivan matkapuhelimen tärkeimmät osat ovat "akku" ja "sim-kortti".
Yksikkötestaus Esimerkki - Akun käyttöikä, kapasiteetti ja muut parametrit tarkistetaan. Sim-kortin aktivointi tarkistetaan.
Integrointitestauksen esimerkki - Akku ja sim-kortti on integroitu eli koottu yhteen matkapuhelimen käynnistämiseksi.
Esimerkki toiminnallisesta testauksesta - Matkapuhelimen toimivuus tarkistetaan sen ominaisuuksien ja akun käytön sekä sim-korttitoimintojen perusteella.
Olemme nähneet esimerkin maallikon kielellä.
Otetaan nyt tekninen esimerkki kirjautumissivusta:
Lähes kaikki verkkosovellukset vaativat käyttäjiensä/asiakkaidensa kirjautumista. Tätä varten jokaisella sovelluksella on oltava "Login"-sivu, joka sisältää seuraavat elementit:
- Tili/käyttäjätunnus
- Salasana
- Kirjautuminen / Kirjaudu sisään -painike
Yksikkötestauksessa testitapauksia voivat olla seuraavat:
- Kentän pituus - käyttäjätunnus- ja salasanakentät.
- Syöttökentän arvojen on oltava kelvollisia.
- Sisäänkirjautumispainike aktivoituu vasta, kun molempiin kenttiin on syötetty kelvolliset arvot (muoto ja pituus).
Integrointitestauksessa testitapauksia voivat olla seuraavat:
- Käyttäjä näkee tervetuloviestin syötettyään kelvolliset arvot ja painettuaan kirjautumispainiketta.
- Käyttäjän pitäisi siirtyä tervetuliais- tai etusivulle, kun hän on syöttänyt tietonsa ja napsauttanut kirjautumispainiketta.
Nyt, kun yksikkö- ja integrointitestaus on tehty, katsotaanpa vielä lisää toiminnallisessa testauksessa huomioon otettavat testitapaukset:
- Tarkistetaan odotettu käyttäytyminen, eli pystyykö käyttäjä kirjautumaan sisään napsauttamalla kirjautumispainiketta syötettyään kelvollisen käyttäjänimen ja salasanan.
- Onko olemassa tervetuliaisviesti, joka tulee näkyviin onnistuneen kirjautumisen jälkeen?
- Onko olemassa virheilmoitus, jonka pitäisi näkyä virheellisestä kirjautumisesta?
- Onko kirjautumiskenttiä varten tallennettu sivuston evästeitä?
- Voiko deaktivoitu käyttäjä kirjautua sisään?
- Onko olemassa "unohda salasana" -linkkiä käyttäjille, jotka ovat unohtaneet salasanansa?
Toiminnallisen testauksen suorittajalle tulee mieleen paljon muitakin tällaisia tapauksia toiminnallisen testauksen aikana. Kehittäjä ei kuitenkaan voi ottaa huomioon kaikkia tapauksia laatiessaan yksikkö- ja integrointitestaustapauksia.
Näin ollen on paljon skenaarioita, joita ei ole vielä testattu edes yksikkö- ja integrointitestauksen jälkeen.
Nyt on aika tarkastella yksikkö-, integrointi- ja toiminnallista testausta yksi kerrallaan.
Mitä on yksikkötestaus?
Kuten nimestä voi päätellä, tällä tasolla testataan "yksikköä".
Yksikkö voi olla sovelluksen pienin testattavissa oleva osa, olipa se sitten pienin yksittäinen toiminto, menetelmä jne. Ohjelmistokehittäjät kirjoittavat yksikkötestitapaukset. Tavoitteena on sovittaa yhteen vaatimukset ja yksikön odotettu käyttäytyminen.
Seuraavassa on muutamia tärkeitä seikkoja yksikkötestauksesta ja sen hyödyistä:
- Ohjelmistokehittäjät tekevät yksikkötestauksen ennen integrointitestausta käyttämällä white box -testausmenetelmiä.
- Yksikkötestauksessa ei tarkisteta ainoastaan positiivista käyttäytymistä eli oikeaa tulostetta, jos syötteen arvo on oikea, vaan myös virheitä, jotka ilmenevät virheellisen syötteen yhteydessä.
- Ongelmien/virheiden löytäminen varhaisessa vaiheessa on erittäin hyödyllistä, ja se vähentää projektin kokonaiskustannuksia. Koska yksikkötestaus tehdään ennen koodin integrointia, tässä vaiheessa havaitut ongelmat voidaan ratkaista hyvin helposti ja niiden vaikutus on myös hyvin vähäinen.
- Yksikkötesti testaa pieniä koodinpätkiä tai yksittäisiä toimintoja, joten näissä testitapauksissa havaitut ongelmat/virheet ovat riippumattomia eivätkä vaikuta muihin testitapauksiin.
- Toinen tärkeä etu on se, että yksikkötestitapaukset yksinkertaistavat ja helpottavat koodin testausta. Ongelmien ratkaiseminen myöhemmässäkin vaiheessa on helpompaa, koska testattavaksi jää vain koodin viimeisin muutos.
- Yksikkötestaus säästää aikaa ja kustannuksia, ja se on uudelleenkäytettävissä ja helppo ylläpitää.
JUnit (Java-kehys), PHPUnit (PHP-kehys), NUnit (.Net-kehys) jne. ovat suosittuja yksikkötestaustyökaluja, joita käytetään eri kielissä.
Mitä on integraatiotestaus?
Integrointitestauksessa testataan järjestelmän eri osien integrointia toisiinsa. Järjestelmän kaksi eri osaa tai moduulia integroidaan ensin, minkä jälkeen suoritetaan integrointitestausta.
Integrointitestauksen tavoitteena on tarkistaa järjestelmän toimivuus, luotettavuus ja suorituskyky, kun se on integroitu.
Integrointitestaus suoritetaan moduuleille, jotka testataan ensin yksikkötestauksella, ja sen jälkeen integrointitestauksessa määritetään, tuottaako moduulien yhdistelmä halutun tuloksen vai ei.
Integrointitestauksen voivat tehdä joko riippumattomat testaajat tai myös kehittäjät.
Integrointitestauksessa on 3 erilaista lähestymistapaa, joista jokaisesta puhutaan lyhyesti:
a) Big Bang -integraatiomenetelmä
Tässä lähestymistavassa kaikki moduulit tai yksiköt integroidaan ja testataan kokonaisuutena yhdellä kertaa. Tämä tehdään yleensä silloin, kun koko järjestelmä on valmis integrointitestausta varten yhdellä kertaa.
Älä sekoita tätä integrointitestauksen lähestymistapaa järjestelmätestaukseen, sillä ainoastaan moduulien tai yksiköiden integrointi testataan eikä koko järjestelmää, kuten järjestelmätestauksessa.
Big Bang -lähestymistavan tärkeimmät etu on, että kaikki integroitu testataan kerralla.
Yksi merkittävä haitta on se, että epäonnistumisia on vaikea tunnistaa.
Esimerkki: Alla olevassa kuvassa yksiköt 1-6 on integroitu ja testattu Big Bang -lähestymistavan avulla.
b) Ylhäältä alas -lähestymistapa
Yksiköiden/moduulien integrointi testataan vaiheittain ylhäältä alaspäin.
Ensimmäinen yksikkö testataan yksitellen kirjoittamalla testi-STUBS. Tämän jälkeen alemmat tasot integroidaan yksi kerrallaan, kunnes viimeinen taso on koottu ja testattu.
Ylhäältä alaspäin suuntautuva lähestymistapa on hyvin orgaaninen tapa integroida, koska se vastaa sitä, miten asiat tapahtuvat todellisessa ympäristössä.
Ainoa huoli Tässä lähestymistavassa on se, että tärkeimmät toiminnot testataan lopussa.
c) Alhaalta ylös -lähestymistapa
Yksiköt/moduulit testataan alatasolta ylätasolle askel askeleelta, kunnes kaikki yksiköiden/moduulien tasot on integroitu ja testattu yhtenä yksikkönä. Stimulaattoriohjelmat nimeltä AJURIT On helpompi havaita ongelmat tai virheet alemmilla tasoilla.
Tärkein haitta Tämän lähestymistavan heikkoutena on, että korkeamman tason ongelmat voidaan tunnistaa vasta lopussa, kun kaikki yksiköt on integroitu.
Yksikkötestaus vs. integrointitestaus
Kun olemme keskustelleet tarpeeksi yksikkö- ja integrointitestauksesta, käymme seuraavassa taulukossa nopeasti läpi niiden väliset erot:
Yksikkötestaus | Integrointitestaus |
---|---|
Testaa koko järjestelmän yksittäisen komponentin eli testaa yksikön eristettynä. | Testaa järjestelmän osien yhteistoimintaa eli useiden yksiköiden yhteistyötä. |
Nopeampi toteuttaa | Voi toimia hitaasti |
Ei ulkoista riippuvuutta. Kaikki ulkoiset riippuvuudet pilkataan tai poistetaan. | Vaatii vuorovaikutusta ulkoisten riippuvuuksien kanssa (esim. tietokanta, laitteisto jne.). |
Yksinkertainen | Monimutkainen |
Kehittäjä | Testaajan suorittama |
Se on eräänlaista white box -testausta | Se on eräänlainen mustan laatikon testaus |
Suoritetaan testauksen alkuvaiheessa ja voidaan sen jälkeen suorittaa milloin tahansa. | On suoritettava yksikkötestauksen jälkeen ja ennen järjestelmätestausta. |
Halpa huolto | Kallis huolto |
Alkaa moduulin eritelmästä | Alkaa rajapinnan määrittelystä |
Yksikkötestauksen soveltamisala on suppea, sillä siinä tarkistetaan vain, että kukin pieni koodinpätkä tekee sen, mitä sen on tarkoitus tehdä. | Sen soveltamisala on laajempi, koska se kattaa koko sovelluksen. |
Yksikkötestauksen tuloksena on yksityiskohtainen näkyvyys koodiin. | Integrointitestauksen tuloksena integraatiorakenne saadaan yksityiskohtaisesti näkyviin. |
Paljastaa vain yksittäisten moduulien toiminnallisuuteen liittyvät ongelmat. Ei paljasta integrointivirheitä tai koko järjestelmän laajuisia ongelmia. | Paljastaa virheet, jotka syntyvät, kun eri moduulit ovat vuorovaikutuksessa keskenään ja muodostavat kokonaisjärjestelmän. |
Toiminnallinen testaus
Toiminnalliseksi testaukseksi kutsutaan mustan laatikon testaustekniikkaa, jossa testataan sovelluksen toiminnallisuutta siten, että se tuottaa halutun tulosteen tietyn syötteen perusteella.
Ohjelmistotestausprosesseissamme teemme tämän kirjoittamalla testitapauksia vaatimusten ja skenaarioiden mukaisesti. Minkä tahansa toiminnallisuuden osalta kirjoitettujen testitapausten määrä voi vaihdella yhdestä moniin.
Päätelmä
Kaikki nämä kolme testityyppiä korreloivat keskenään.
Täydellisen kattavuuden saavuttamiseksi tarvitaan yksikkötestejä koodin poluille/riveille sekä toiminnallisia ja integrointitestejä, joilla varmistetaan, että "yksiköt" toimivat yhdessä ja johdonmukaisesti.
Toivottavasti tämä artikkeli on antanut sinulle selkeän käsityksen yksikkö-, integraatio- ja toiminnallisesta testauksesta sekä niiden eroista, vaikka näitä testauksen muotoja on paljon enemmän!!!