Yksi suosikkisanonnoistani on: ”työskentele fiksummin, älä kovemmin”. Tämä pätee tietenkin myös ohjelmistotestaukseen. Tämä tarkoittaa, että haluan tavan tehdä mahdollisimman vähän työtä ja tuottaa mahdollisimman paljon arvoa.
Puhutaan siis mustan laatikon testaustekniikoista ja siitä, miten niitä voidaan soveltaa testitapausten luomiseen ja tärkeimpien testattavassa sovelluksessa olevien virheiden löytämiseen.
Mitä mustan laatikon testaus on?
Aloitetaan ymmärtämällä, mitä mustan laatikon testaus on—toisin kuin valkoisen laatikon testaus. Se on ohjelmistotestauksen tyyppi, jossa testaajalla ei ole pääsyä testattavan sovelluksen sisäiseen rakenteeseen. Sen sijaan hän voi käyttää vain järjestelmän syötteitä ja tulosteita ja testata ohjelmiston toiminnallisuutta vaatimusmäärittelyjen perusteella.
On hyvä pitää mielessä, että mustan laatikon testaus kattaa vain ohjelmiston ulkoisen toiminnallisuuden eikä varmista lähdekoodin sisäistä toimintaa. Siksi sitä kutsutaan joskus ”käyttäytymistestaukseksi”. Sitä tulisi siis käyttää yhdessä valkoisen laatikon testauksen kanssa, joka keskittyy sisäisen koodin testaamiseen. Näin voit olla varmempi siitä, että ohjelmisto on testattu kattavasti ja siinä on mahdollisimman vähän virheitä.
Have an account? Log In
5 mustan laatikon testaustekniikkaa
Käytämme näitä mustan laatikon testaustekniikoita testikattavuuden parantamiseen ja samalla testitapausten määrän vähentämiseen. Tunnistamalla oikeat testitiedot voimme luoda mahdollisimman vähän testejä, jotka kattavat mahdollisimman paljon.
Käsittelemiäni tekniikoita voidaan soveltaa kaikilla testaustasoilla, mukaan lukien yksikkötestaus, integraatiotestaus ja järjestelmätestaus sekä toiminnallinen ja ei-toiminnallinen testaus.
1. Ekvivalenssiluokkajako
Ekvivalenssiluokkajako on ohjelmistotestauksessa käytettävä tekniikka, jossa mahdolliset syötteet jaetaan ekvivalenssiluokkiin eli osioihin. Tavoitteena on löytää ja testata kustakin luokasta edustava joukko syötteitä. Kaikkien ekvivalenssiluokkaan kuuluvien elementtien odotetaan tuottavan saman tuloksen, joten yhden arvon testaamisen pitäisi riittää.
Tämä auttaa vähentämään luotavien ja suoritettavien testitapausten määrää ja tarjoaa silti hyvän kattavuuden. Luokat määritellään toiminnallisten tai ei-toiminnallisten vaatimusten perusteella, ja niissä voidaan ottaa huomioon esimerkiksi tietotyypit, arvovälit ja syötearvojen väliset suhteet.
Ekvivalenssiluokkia määritellessäsi varmista aina, että sisällytät mukaan myös virheelliset luokat, jotta myös negatiiviset testausskenaariot tulevat katetuiksi. Kokemukseni mukaan suurin osa virheistä löytyy virheellisiä syötteitä käytettäessä eikä positiivisissa tapauksissa.
Katso esimerkkiä:
Sinulla on valinnainen kenttä, joka hyväksyy vain kokonaislukuarvoja väliltä 1–10. Sinulla olisi seuraavat ekvivalenssiluokat:
- ei arvoa (kelvollinen osio)
- arvot väliltä 1–10 (kelvollinen osio)
- arvot, jotka ovat pienempiä kuin 1 (virheellinen osio)
- arvot, jotka ovat suurempia kuin 10 (virheellinen osio)
Tarvitsisit siis vain 4 testitapausta – yhden kutakin osiota kohden. Saman osion testaaminen uudelleen useilla arvoilla ei tuota lisäarvoa — jos testasit arvolla 5, saisit samat tulokset arvoilla 4, 8 ja niin edelleen.
2. Raja-arvoanalyysi
Raja-arvoanalyysi on ohjelmistotestauksessa käytettävä tekniikka, jolla tunnistetaan ja testataan ohjelman syötealueen reunalla eli ”rajalla” tai sen läheisyydessä olevia syötearvoja. Ajatuksena on, että nämä arvot aiheuttavat todennäköisemmin virheitä tai odottamatonta toimintaa, koska niihin liittyy usein erityis- tai poikkeustapauksia, joita ohjelmaa ei ehkä ole suunniteltu käsittelemään asianmukaisesti.
Jos esimerkiksi testataan ohjelmaa, joka hyväksyy kokonaislukuja väliltä 1–100, raja-arvoja ovat 1, 100 ja kaikki alueen juuri ulkopuolella olevat arvot, kuten 0 ja 101.
Rajatestauksen kaksi tyyppiä ovat:
- Sisäinen rajatestaus: keskittyy syötealueen reunan juuri sisäpuolella oleviin syötteisiin, kuten sallittuihin vähimmäis- ja enimmäisarvoihin.
- Ulkoinen rajatestaus: keskittyy syötealueen reunan juuri ulkopuolella oleviin syötteisiin, kuten arvoihin, jotka ovat hieman sallittuja vähimmäis- ja enimmäisarvoja suurempia tai pienempiä.
Raja-arvoanalyysi on tärkeä tekniikka virheiden löytämiseen ja sen varmistamiseen, että ohjelma toimii oikein kaikilla syötteillä, ei vain syötealueen keskellä olevilla arvoilla. Tämä voi auttaa tunnistamaan ja korjaamaan virheitä, jotka saattaisivat muuten jäädä huomaamatta.
3. Päätöstaulukkomallinnus
Päätöstaulukkomallinnuksessa testaamme ohjelmiston logiikkaa ja toimintaa tilanteissa, joissa käytettävissä on useita ehtoja. Se on tapa esittää syötteiden ja tulosteiden väliset suhteet taulukkomuodossa. Taulukossa on yleensä sarakkeet ehdoille ja rivit eri yhdistelmille. Jokaiselle riville on luotava tietty testitapaus. Testitapauksen odotettu tuloste on myös sisällytettävä taulukkoon.
Kuvitellaan esimerkki ohjelmistovaatimuksesta, jossa tätä tekniikkaa voidaan soveltaa: sovellus, joka laskee ostoksen hinnan tuotteen, määrän ja toimitustavan perusteella:

Tässä esimerkissä Tuote, Määrä ja Toimitustapa ovat syötteitä ja Hinta on tuloste. Taulukko näyttää kaikki mahdolliset syötteiden yhdistelmät ja kussakin tapauksessa vastaavan tulosteen. Tämän taulukon avulla voit nopeasti tunnistaa testitapaukset ja niiden odotetut tulokset, mikä helpottaa kaikkien käytettävissä olevien yhdistelmien testaamista ja tarkistamista.
Päätöstaulukkomallinnus on hyödyllistä, kun ohjelmalla on useita syötteitä ja ehtoja, jotka ovat vuorovaikutuksessa toistensa kanssa monimutkaisilla tavoilla. Jakamalla syötteet ja ehdot taulukkoon kaikkien mahdollisten yhdistelmien ja muunnelmien tunnistaminen ja testaaminen helpottuu.
4. Tilasiirtymätestaus
Tilasiirtymätestaus on mustan laatikon testaustekniikka, jossa testaamme ohjelman toimintaa sen siirtyessä eri tilojen tai toimintatilojen välillä. Tila on ehto tai ehtojen joukko, jossa ohjelma voi olla, ja siirtymä on muutos tilasta toiseen. Tilasiirtymätestauksen ajatuksena on tunnistaa kaikki mahdolliset tilat ja siirtymät, joiden kautta ohjelma voi kulkea, ja luoda sitten testitapaukset sen varmistamiseksi, että ohjelma toimii oikein kussakin tilassa ja tekee kelvollisia siirtymiä tilojen välillä.
Esimerkki tilasiirtymätestauksesta voisi liittyä verkkokauppasivustoon, jossa asiakkaat voivat lisätä tuotteita ostoskoriinsa, siirtyä kassalle, syöttää maksutietonsa ja toimitustietonsa sekä lopulta tehdä tilauksen. Tämän esimerkin tilat olisivat:
- Tuotteiden selaaminen
- Tuotteiden lisääminen ostoskoriin
- Siirtyminen kassalle
- Maksu- ja toimitustietojen syöttäminen
- Tilauksen vahvistaminen
Siirtymät näiden tilojen välillä olisivat:
- Tuotteiden selaaminen -> Tuotteiden lisääminen ostoskoriin
- Tuotteiden lisääminen ostoskoriin -> Siirtyminen kassalle
- Siirtyminen kassalle -> Maksu- ja toimitustietojen syöttäminen
- Maksu- ja toimitustietojen syöttäminen -> Tilauksen vahvistaminen

Tämä tekniikka auttaa tunnistamaan ja testaamaan kaikki mahdolliset reitit, joita käyttäjä voi kulkea järjestelmän läpi, ja se voi auttaa löytämään ja korjaamaan tiettyihin kulkuihin liittyviä virheitä. Tilasiirtymätestaus on erityisen hyödyllistä testattaessa järjestelmiä, joissa on monimutkaisia vuorovaikutuksia, kuten rahoitusjärjestelmiä, verkkokauppajärjestelmiä tai fyysisiä laitteita ohjaavia järjestelmiä.
More Articles
5. Pareittainen testaus
Pareittainen testaus on mustan laatikon testaustekniikka, jota käytetään luomaan testitapauksia kattamaan tietyn parametrijoukon syötearvojen kaikki mahdolliset pariyhdistelmät. Sitä käytetään, kun syötteiden määrä on suuri, jolloin kaikkien mahdollisten yhdistelmien testaaminen keskenään olisi erittäin vaikeaa.
Oletetaan, että meillä on sovellus, jossa on kolme kenttää: A, B ja C. Kukin kenttä voi hyväksyä kolme mahdollista arvoa: 1, 2 tai 3.
Perinteisillä testausmenetelmillä meidän pitäisi testata 27 (3^3) mahdollista syöteyhdistelmää yksitellen kaikkien mahdollisten yhdistelmien vahvistamiseksi. Tämä veisi erittäin paljon aikaa ja olisi tehotonta.

Pareittaisen testauksen avulla voit tunnistaa käyttötapaukset, jotka kattavat kaikki mahdolliset yksilölliset syöteyhdistelmät. Tämä näyttäisi suunnilleen tältä:

Kuten näet, testien määrä on vähentynyt huomattavasti 27:stä 9:ään. Testikattavuus ei ole muuttunut, vaan varmistamme edelleen, että kaikki mahdolliset arvojen yhdistelmät otetaan huomioon.
Saatavilla on useita pareittaisen testauksen työkaluja. Alla on muutamia esimerkkejä:
- AllPairs: Työkalu käyttäjän määrittämien parametriluetteloiden ja rajoitteiden perusteella muodostettavien parittaisten testitapausten luomiseen. Se on saatavilla sekä avoimen lähdekoodin että kaupallisena versiona.
- PICT (parittaisten yhdistelmien riippumaton testaus): Työkalu, joka käyttää geneettistä algoritmia parittaisten testitapausten luomiseen. Se on saatavilla avoimen lähdekoodin työkaluna.
- SmartBear TestComplete: kaupallinen testiautomaatiotyökalu, joka sisältää sisäänrakennetun tuen parittaiselle testaukselle.
- Parittaisten testitapausten generaattori: GitHubissa saatavilla oleva avoimen lähdekoodin työkalu, jolla voidaan luoda parittaisia testitapauksia.
- Parittaisia testitapauksia voidaan luoda myös Excelillä tai OpenOffice Calcilla makrojen tai laajennusten avulla.
Nämä ovat vain muutamia esimerkkejä, ja saatavilla voi olla myös muita työkaluja. Suosittelen tutustumaan saatavilla oleviin eri vaihtoehtoihin ja arvioimaan niitä, jotta voit selvittää, mikä työkalu sopii parhaiten tarpeisiisi ja vaatimuksiisi.
Lopuksi
Näiden tekniikoiden käyttö on hyvä tapa saavuttaa hyvä kattavuus ohjelmistokehityksen elinkaaren missä tahansa vaiheessa. Vielä parempia tuloksia voidaan saavuttaa, jos testausprosessiin lisätään myös muita testauksen muotoja, kuten tutkivaa testausta, virheiden arvaamista, yhteensopivuustestausta ja käytettävyystestausta.
Jos tuloksena syntyvät testitapaukset päätyvät osaksi regressiotestauspakettia, niiden automatisointia kannattaa harkita. Käyttöliittymätesteissä voit käyttää esimerkiksi Seleniumia, Cypressiä ja Appiumia. Ohjelmointirajapintojen testaukseen kehitystiimi voi kirjoittaa integraatiotestejä, tai voit käyttää esimerkiksi Postmania.
Jos pidit tätä artikkelia hyödyllisenä, suosittelen tilaamaan QA-vastaavan uutiskirjeen, jossa kerrotaan kaikesta uudesta laadunvarmistukseen ja testaukseen liittyvästä sisällöstä ja opastusmateriaaleista.



