Mustan laatikon ja valkoisen laatikon testaus: asiantuntijavertailu

By Andreea Draniceanu

Vertaa mustan laatikon ja valkoisen laatikon testausta ja ymmärrä molemmat menetelmät sekä se, miten ne auttavat laadunvarmistustiimejä kattamaan kaikki näkökulmat ja varmistamaan vankan suorituskyvyn ja laadun useista testaussuunnista.

Valkoisen laatikon ja mustan laatikon testauksen ero

Mustan laatikon testaus arvioi ohjelmiston toiminnallisuutta ilman tietoa sisäisestä koodista keskittyen syötteisiin ja tulosteisiin. Valkoisen laatikon testaus tutkii koodin sisäistä rakennetta ja logiikkaa, ja se edellyttää pääsyä lähdekoodiin.

Mustan laatikon testauksen suorittavat yleensä laadunvarmistustiimit käyttäjälle näkyvän toiminnallisuuden validoimiseksi. Siinä käytetään esimerkiksi vastaavuusluokittelua ja raja-arvoanalyysiä.

Sitä vastoin valkoisen laatikon testausta suorittavat kehittäjät varmistaakseen koodin oikeellisuuden ja kattavuuden. Siinä käytetään esimerkiksi lause- ja haarakattavuutta.

Molempien lähestymistapojen yhdistäminen parantaa testikattavuutta ja ohjelmiston laatua.

Tässä kirjoituksessa esittelen sinulle molemmat testaustyypit ja selitän, mitä ne ovat, mitkä ovat niiden keskeiset erot, miten niitä käytetään sekä mitkä ovat niiden hyvät ja huonot puolet. 

Mitä mustan laatikon testaus on?

Mustan laatikon testaus, josta käytetään joskus nimitystä käyttäytymistestaus, on ohjelmistotestauksen tyyppi, jossa testaajalla ei ole pääsyä testattavan järjestelmän lähdekoodiin. Sen suorittaa yleensä laadunvarmistustiimi, eikä se välttämättä edellytä edistyneitä teknisiä taitoja, kuten ohjelmointitaitoa.  

Mustan laatikon testauksessa testitapaukset kirjoitetaan AUT:n syötteiden ja tulosteiden perusteella vaatimusten määrittelyissä kuvatulla tavalla.

Merkittävimmät mustan laatikon testaustekniikat ovat:

  • Vastaavuusluokittelu: syötteet jaetaan vastaavuusluokkiin eli osioihin, joissa jokainen luokan arvo tuottaa saman tulosteen. Hyvään testikattavuuteen riittää yksi testitapaus kutakin vastaavuusluokkaa kohden.

Esimerkki: Jos kenttä hyväksyy kokonaislukuarvot väliltä 1–10, kelvollinen luokka sisältää kaikki luvut väliltä 1–10, ja kaksi virheellistä luokkaa ovat lukua 1 pienemmät sekä lukua 10 suuremmat luvut. Tämä tarkoittaa, että kolme testitapausta riittää kattamaan kaikki mahdolliset luokat. 

  • Raja-arvoanalyysi: testataan äärimmäiset syötearvot, jotka aiheuttavat muita arvoja todennäköisemmin virheitä. 

Esimerkki: Käytettäessä samaa kenttää kuin edellä kelvolliset raja-arvot ovat 1 ja 10, ja virheelliset raja-arvot ovat 0 ja 11. 

  • Päätöstaulukon testaus: syötteiden ja tulosteiden väliset suhteet esitetään taulukkomuodossa. Taulukossa on yleensä sarakkeet ehdoille ja rivit eri yhdistelmille. Jokaisella rivillä tulisi olla vastaava testitapaus. 

Esimerkki: Tämä tekniikka soveltuu monimutkaisempiin tilanteisiin. Oletetaan, että meillä on pankkilainahakemus, johon liittyvät seuraavat ehdot:

Ehdot1Ikä vähintään 25 vuottaTosiTulot vähintään 50000 USDTosiLopputulosHyväksy laina
Ehdot2Ikä vähintään 25 vuottaTosiTulot vähintään 50000 USDEpätosiLopputulosHylkää laina
Ehdot3Ikä vähintään 25 vuottaEpätosiTulot vähintään 50000 USDEpätosiLopputulosOhjaa esihenkilölle
Ehdot4Ikä vähintään 25 vuottaEpätosiTulot vähintään 50000 USDEpätosiLopputulosHylkää laina

Mahdollisia yhdistelmiä on neljä, joten neljä testitapausta on suoritettava.

  • Tilasiirtymätestaus: varmistaa järjestelmän toiminnan sen siirtyessä tilasta toiseen.  

Esimerkki: Oletetaan, että testaat yksinkertaista virheseurantajärjestelmää. Tilakaavio on seuraava:

Mahdolliset siirtymät ovat:

  • Uusi-tilasta Työn alla -tilaan
  • Työn alla -tilasta Testauksessa-tilaan
  • Testauksessa-tilasta Suljettu-tilaan
  • Testauksessa-tilasta takaisin Työn alla -tilaan

Täydellisen kattavuuden saavuttamiseksi sinun on varmistettava, että jokainen siirtymä ja tila testataan vähintään kerran.

  • Kokemukseen perustuva testaus, kuten tutkiva testaus. Tässä testaustyypissä testit suoritetaan testaajan järjestelmästä tai vastaavista järjestelmistä saaman kokemuksen sekä sovelluksen toiminnan tuntemuksen perusteella. 

Esimerkki: Kuvittele, että testaat uutta sosiaalisen median sovellusta. Tavoitteesi on tutkia sovellusta löytääksesi mahdolliset korjattavat virheet tai ongelmat. 

Tutkivassa testauksessa saatat suorittaa seuraavat toimet:

  • Rekisteröidy uudelle tilille
  • Lataa profiilikuva
  • Kirjoita julkaisu
  • Katso oma profiilisi
  • Etsi ystäviä
  • Lähetä ystäväpyyntö
  • Hyväksy ystäväpyyntö
  • Tykkää julkaisusta ja kommentoi sitä

Tutkivassa testauksessa suorittaisit nämä toimet jäsentämättömällä tavalla ilman ennalta laadittua suunnitelmaa. Painopiste olisi sovelluksen virheiden tai kehityskohteiden löytämisessä.  

Jos haluat oppia lisää tutkivasta testauksesta, Elisabeth Hendricksonin kirja Explore It! oli mielestäni todella hyödyllinen.

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

Mustalaatikkotestauksen hyvät ja huonot puolet

Mustalaatikkotestauksella on tietenkin sekä hyötyjä että haittoja.

Huonot puolet:

  • Se vie enemmän aikaa
  • Testitapausten hallinta on rajallista
  • Joidenkin erityisten skenaarioiden testaaminen voi olla vaikeaa
  • Virheen perimmäisestä syystä on vain vähän tietoa
  • Tietyt virheet saattavat jäädä huomaamatta
  • Suorituskyvyn ja skaalautuvuuden testaamiseen on rajalliset mahdollisuudet

Huonot puolet:

  • Testiympäristön valmistelu ja testien suorittaminen voivat viedä enemmän aikaa
  • Testitapausten hallinta on rajallista
  • Joidenkin erityisten skenaarioiden testaaminen voi olla vaikeaa
  • Virheen perimmäisestä syystä on vain vähän tietoa
  • Tietyt virheet saattavat jäädä huomaamatta
  • Suorituskyvyn ja skaalautuvuuden testaamiseen on rajalliset mahdollisuudet

Milloin mustalaatikkotestausta käytetään?

Mustalaatikkotestaustyökaluja voidaan käyttää millä tahansa testauksen tasolla. Niitä on kuitenkin parempi käyttää ylemmällä tasolla ja jättää alemman tason testaus valkolaatikkotestaukselle. Tämä tarkoittaa, että vaikka niitä voidaan käyttää yksikkötason testaukseen, mustalaatikkomenetelmä soveltuu paremmin järjestelmätestaukseen ja hyväksymistestaukseen.   

Mustalaatikkotekniikoita voidaan käyttää toiminnallisiin ja ei-toiminnallisiin testeihin, kuten suorituskykytestaukseen, käytettävyystestaukseen ja esteettömyystestaukseen. 

Niitä tulisi soveltaa myös uusiin toteutettuihin toiminnallisuuksiin, tai näillä tekniikoilla tunnistettuja olemassa olevia testitapauksia voidaan suorittaa regressiotestauksen aikana.

Mitä valkolaatikkotestaus on?

Valkolaatikkotestaus (josta käytetään joskus myös nimityksiä läpinäkyvä laatikkotestaus, lasilaatikkotestaus, koodipohjainen testaus tai rakenteellinen testaus) on testausmenetelmä, joka keskittyy UAT:n sisäiseen toimintaan.  

Valkolaatikkotestauksen lähestymistavat:

  • Lausekattavuus: kaikki koodilauseet (koodirivit) suoritetaan vähintään kerran lähdekooditasolla. Kattavuuden laskemiseen käytettävä kaava on:

Lausekattavuus = (suoritettujen lauseiden määrä / lähdekoodin lauseiden kokonaismäärä) * 100

Esimerkki: Oletetaan, että meillä on seuraava koodi:

 if(condition1 or condition2)) {
       print(“test 1 OK”)
    }
    else {
       if(condition3) {
          print(“test 2 OK”)
       }
}
  • Täyden lausekattavuuden saavuttamiseksi jokainen koodirivi on käytävä läpi vähintään kerran. Tämä tarkoittaa, että tarvitaan useita testejä:
    • condition1=true condition2=false,  jolloin tulostuu “test 1 OK”
    • condition1=false, condition2=false ja condition3=true, jolloin tulostuu “test 2 OK”.
  • Haarakattavuus: tässä tekniikassa testiskenaariot kattavat kaikki ohjausvuokaavion haarat. Kunkin ehdon mahdolliset tosi- ja epätosiarvot katetaan vähintään kerran. Haarakattavuudessa käytettävä kaava on:
  • Haarautumakattavuus = (Suoritettujen haarautumien määrä / Koodin haarautumien kokonaismäärä) * 100 
  • Esimerkki: Samassa koodissa lausekekattavuus on 100 %, mutta kaikkia mahdollisia haarautumia ei ole katettu. Tarvitset lisätestin, jossa:
    • condition1=false, condition2=false, condition3=false – näin katamme myös toisen if-lauseen epätoden haaran. Tässä testitapauksessa mitään ei pitäisi tulostaa,
  • Ehtokattavuus: tekniikka, jossa jokainen ehto testataan sekä totena että epätotena. Se varmistaa, että vähintään yksi testi kattaa jokaisen sovelluksen ehdon mahdollisen tuloksen. Se on erityisen hyödyllinen monimutkaisissa sovelluksissa. Esimerkki: Edellä olevan koodin täyttä ehtokattavuutta varten tarvitsemme vielä yhden testin:
    • condition1=false, condition1=true, jonka tulos on sama kuin ensimmäisessä testissä, mutta joka kattaa eri ehdon tuloksen saavuttamiseksi.

Valkoisen laatikon testauksen edut ja haitat

Tarkastellaan valkoisen laatikon testauksen etuja ja haittoja.

Edut:

  • Voi löytää virheet aikaisessa vaiheessa ohjelmistokehityksen elinkaarta
  • Testaa koodin sisäisen rakenteen.
  • Testaa koodikattavuutta ja logiikkaa.
  • Parantaa koodikannan tuntemusta.
  • Voidaan käyttää suorituskyvyn ja skaalautuvuuden testaamiseen.

Haitat:

  • Toimii paremmin testauksen alemmilla tasoilla 
  • Edellyttää järjestelmän ohjelmointikielen hyvää tuntemusta
  • Rajoittunut testaus loppukäyttäjän näkökulmasta
  • Saattaa sivuuttaa tosielämän tilanteet

Milloin valkoisen laatikon testausta käytetään 

Valkoisen laatikon testit soveltuvat parhaiten alemmille tasoille, kuten yksikkö- ja integraatiotestaukseen. Tämä auttaa tunnistamaan virheet ja puutteet varhaisessa vaiheessa kehitysprosessia. Näiden testien suorittaminen jokaisen käyttöönoton jälkeen on hyvä käytäntö, erityisesti kun työskennellään CI/CD-ympäristössä. 

Valkoisen laatikon testausta voidaan käyttää toiminnallisuuden testaamiseen, mutta sen avulla voidaan myös löytää järjestelmän haavoittuvuuksia – jotain, mitä mustan laatikon testaustekniikoilla olisi vaikea saavuttaa.

More Articles

Musta laatikko vs. valkoinen laatikko -testaus: yhteenveto 

Seuraavaksi tarkastelemme mustan ja valkoisen laatikon testauksen keskeisiä eroja:

Mustan laatikon testausValkoisen laatikon testaus
Sisäisen toiminnan tuntemusta ei tarvita.Perustuu järjestelmän koodin hyvään ymmärtämiseen.
Laadunvarmistustiimi suorittaa pääasiassa.Suorittavat yleensä kehittäjät.
Keskittyy järjestelmän toimintaan.Keskittyy ohjelmiston logiikkaan ja toteutukseen.
Tekniikoihin kuuluvat:
Vastaavuusluokittelu
Raja-arvoanalyysi
Päätöstaulukko
Tilasiirtymä
Tekniikoihin kuuluvat:
Lausekekattavuus
Haarautumakattavuus
Ehtokattavuus
Skenaariot voidaan suorittaa manuaalisesti tai automatisoidusti.Suoritetaan yleensä automaattisen testauksen avulla.
Soveltuu paremmin testauksen ylemmille tasoille.Toimii parhaiten testauksen alemmilla tasoilla.
Testaa loppukäyttäjien näkökulmasta.Testaa teknisestä näkökulmasta.

Emme kuitenkaan saa unohtaa, että vaikka molemmilla lähestymistavoilla on etunsa ja haittansa, meidän tulisi käyttää molempia testausprosessissamme saavuttaaksemme hyvän testi- ja koodikattavuuden sekä löytääksemme tärkeimmät puutteet.

Johtopäätökset

Mustan ja valkoisen laatikon testaus ovat kaksi erilaista lähestymistapaa, ja ne soveltuvat erilaisiin tarpeisiin kehitysprosessin aikana. Valkoisen laatikon testauksen suorittavat yleensä kehittäjät, ja sitä käytetään alemman tason testaukseen, kun taas laadunvarmistustiimi suorittaa mustan laatikon testausta ylemmillä tasoilla. Ne toimivat parhaiten yhdessä käytettyinä.

Jos pidit tästä artikkelista, tilaa uutiskirjeemme, jotta saat kaikki uudet testaukseen ja laadunvarmistukseen liittyvät artikkelit!

Andreea Draniceanu
Hi there! My name is Andreea, I’m a software test engineer based in Romania. I’ve been in the software industry for over 10 years. Currently my main focus is UI test automation with C#, but I love exploring all QA-related areas 😊

You may also like