Raja-arvoanalyysi – Black Box -testaustekniikka
Tiedämme jo, että Black Box -testauksessa validoidaan järjestelmä tuntematta sen sisäistä suunnittelua. Olemme myös keskustelleet ekvivalenssiosioinnin sudenkuopista ja siitä, miten ne voivat epäonnistua osion rajoilla. Jos et ole lukenut artikkeliamme ekvivalenssiosioinnista, suosittelen lukemaan sen ennen tämän artikkelin lukemista. Tässä artikkelissa käsittelemme toista mustan laatikon testaustekniikkaa, joka tunnetaan nimellä Boundary Value Analysis. Näemme myös, miten tämä tekniikka täydentää ekvivalenssiosiointia.
- Mitä on raja-arvoanalyysi?
- Miten raja-arvoanalyysiä tehdään?
- Raja-arvoanalyysi ekvivalenssipartitioinnin avulla
- Raja-arvoanalyysin sudenkuopat
Mitä on raja-arvoanalyysi?
Raja-arvoanalyysin (BVA) lähtökohtana on rajojen testaaminen partitioilla (Muista ekvivalenssipartitiointi !). BVA on ekvivalenssiosioinnin laajennus. Se on kuitenkin käyttökelpoinen vain silloin, kun osio on järjestetty ja koostuu numeerisesta tai peräkkäisestä datasta. Osioinnin minimi- ja maksimiarvot ovat sen raja-arvoja.
Olemme nähneet, että on suuri mahdollisuus löytää virheet osioiden rajoilta (Esim. kehittäjä käyttää ehdossa >10 eikä >= 10). Pelkkä ekvivalenssiosiointi ei riittänyt tällaisten vikojen havaitsemiseen. Siksi syntyi tarve määritellä uusi tekniikka, jolla voidaan havaita poikkeamat osioiden rajoilla. Näin raja-arvoanalyysi tuli kuvaan.
Raja-arvoanalyysi voidaan suorittaa kaikilla testitasoilla, ja sitä käytetään ensisijaisesti numeroiden, päivämäärien ja ajan vaihteluvälille.
Miten tehdään raja-arvoanalyysi?
Nyt kun olemme saaneet käsityksen raja-arvoanalyysistä, ymmärretäänpä nyt, miten testiehdot johdetaan tätä tekniikkaa käyttäen. Viittaamme samaan esimerkkiin jumppamuodosta (Katso artikkeliamme Equivalence Partitioning), jossa meidän täytyy syöttää Age.
Raja-arvoanalyysin ensimmäinen vaihe on luoda Equivalence Partitioning, joka näyttäisi alla olevan kaltaiselta.
Nyt keskity kelvolliseen Partitioningiin, joka vaihtelee välillä 16-60. Meillä on kolmivaiheinen lähestymistapa rajojen tunnistamiseen:
- Tunnista tämän osioluokan tarkka raja-arvo – joka on 16 ja 60.
- Löydä raja-arvo, joka on yhtä pienempi kuin tarkka raja-arvo – joka on 15 ja 59.
- Saa Raja-arvo, joka on yksi enemmän kuin tarkka Raja-arvo – joka on 17 ja 61.
Jos yhdistämme ne kaikki, saamme alla olevat yhdistelmät Ikäkriteerien Raja-arvolle.
Kelpoiset reunaehdot : Ikä = 16, 17, 59, 60
Väärät reunaehdot : Age = 15, 61
On suoraviivaista huomata, että kelvolliset reunaehdot kuuluvat Valid partition class -luokkaan ja epäkelvolliset reunaehdot kuuluvat Invalid partition class -luokkaan.
Voitteko selvittää, miksi emme ole käyttäneet 16.1, 15.9, 59.9 ja 60.1 raja-arvon lisäys- ja vähennysarvoja? Se on käsite, jonka selitys on useimmissa artikkeleissa riittämätön. Otetaan siis toinen esimerkki tämän selittämiseksi. Oletetaan, että syötät painosi verkkosivustolle. Sivusto kertoo painosi ja pituutesi perusteella painoindeksin (Body Mass Index, BMI). Voit syöttää painon syöttökenttään arvoja 30-150 kg. Painon syöttökenttä sallii vain luonnolliset luvut eli positiiviset kokonaisluvut!
Tässä tapauksessa, jos luot rajat käyttäen samaa menetelmää – päädyt tulokseen
Valid Boundary Conditions : Age = 30, 31, 149, 150
Invalid Boundary Conditions : Age = 29, 151
Katsotaan nyt samaa skenaariota, mutta painon syöttökenttä sallii desimaaliluvut yhden desimaalin tarkkuudella. Tällöin reunaehdot tulevat seuraavasti:
Valid Boundary Conditions : Ikä = 30, 30.1, 149.9, 150
Väärät reunaehdot : Ikä = 29.9, 150.1
Havaitsitko eron? Otamme pienimmän hyväksyttävän arvon rajan kummaltakin puolelta. Jos otamme arvoksi 30,01, päädymme testaamaan ohjelmistoa kahdella desimaalilla, kun vaatimuksena on yksi desimaali. Se on erillinen testausehto, eikä sitä pidä sekoittaa raja-arvoon.
Osion raja-arvon kattavuuden mittaaminen voi tapahtua siten, että testattujen raja-arvojen määrä jaetaan tunnistettujen raja-arvojen kokonaismäärällä.
Raja-arvoanalyysi ekvivalenssiosioinnilla
Olemme nyt ymmärtäneet raja-arvoanalyysin melko hyvin. Katsotaanpa siis, miten voimme yhdistää sen ekvivalenssipartitioinnin kanssa saadaksemme täydellisen joukon testiolosuhteita.
Palataan aiempaan esimerkkiin ja käydään kaavio uudelleen läpi.
Välialue on 16 – 60, ja raja-arvoanalyysin tuloksena saamme testiolosuhteiksi 15, 16, 17, 59, 60, 61. Jos katsot tarkkaan, eikö mielestäsi olemme jo käsitelleet kelvollisen ekvivalenssijaottelun kattamalla 17, 59, ja epäkelvollisen ekvivalenssijaottelun kattamalla 15 ja 61? Loppujen lopuksi ekvivalenssiosioinnissa sanotaan, että meidän on valittava numero väliltä 16-60 kelvollista ositusta varten ja pienempi kuin 16 tai suurempi kuin 60 epäkelvollista ositusta varten. Jos siis raja-arvo kattaa jo ekvivalenssipartitioinnin, miksi tarvitsemme partitiointia erillisenä tekniikkana? Tämä on käsite, joka ei ole selvä suurimmalle osalle ihmisistä, eivätkä monet artikkelit ole selittäneet sitä selkeästi.
Teoreettisesti raja-arvo on tosiaan kattanut ekvivalenssiosioinnin, mutta tarvitsemme silti osiointia. Jos sovellamme vain Raja-arvoa, ja se epäonnistuu, emme koskaan tiedä, epäonnistuiko reunaehto vai koko osio. Ymmärretään se esimerkin avulla. Jatketaan kuntosalilomakkeestamme, oletetaan, että kehittäjä on kirjoittanut alla olevan logiikan :
If (ikä < = 17 ) Then Don’t allow Gym Membership
If (ikä > 60) Then Don’t allow Gym Membership
Jos tarkastelet logiikkaa, huomaat, että logiikan olisi pitänyt olla If (ikä <17), mutta kehittäjä lisäsi väärän merkin =. Huomasitko myös, että koko kelvollisen osion logiikka puuttuu? If (ikä>=16 ja ikä <= 60 ) Then allow Gym membership !
Jos käytämme vain reunaehdon arvoa 17, testin suoritus epäonnistuu. Se ei kuitenkaan kerro, epäonnistuiko reunaehto vai epäonnistuiko koko osio. Näin ollen on olennaista käyttää Equivalence-osion arvoa, joka ei ole raja-arvo. Tässä tapauksessa, jos käytämme arvoa 20, suoritus epäonnistuu. Se antaa selvän merkin siitä, että kehittäjä on laiminlyönyt koko osion toteuttamisen.
Jos siis yhdistämme sekä raja-arvon että ekvivalenssiosion, testiolosuhteemme ovat :
Valid Boundary Conditions : Ikä = 16, 17, 59, 60
Väärät reunaehdot : Ikä = 15, 61
Validi ekvivalenssipartitio : Ikä = 25
Epävalidi ekvivalenssipartitio : Ikä = 5 , 65
BVA:n sudenkuopat
Käytettyämme sekä reuna-arvo- että ekvivalenssipartitiointia, voimmeko luottavaisin mielin sanoa saaneemme vaaditun kattavuuden? Valitettavasti se ei ole niin yksinkertaista! Raja-arvo- ja ekvivalenssiosioinnissa oletetaan, että sovellus ei salli muiden merkkien tai arvojen syöttämistä. Tällaisia merkkejä, kuten @- tai negatiivisia arvoja tai jopa aakkosia, ei saa syöttää. Tämä oletus ei kuitenkaan päde kaikkiin sovelluksiin, ja näitä on ehdottomasti testattava, ennen kuin voidaan sanoa, että kentän arvo toimii täysin.
Sen lisäksi voi olla tilanteita, joissa syötetty arvo riippuu toisen arvon päätöksestä. Esim. jos kuntosalilomakkeessa on toinen kenttä Mies ja Nainen, ja ikäraja vaihtelee tämän valinnan mukaan. Pelkkä raja-arvo ei pysty käsittelemään tällaisia vaihteluita, ja tämä johtaa meidät toiseen mustan laatikon tekniikkaan, jota kutsutaan päätöstaulukkotestaukseksi. Käsittelemme sitä yksityiskohtaisesti seuraavassa artikkelissamme. Pysy kuulolla!