120 likes | 206 Views
Funktionaalisen aliohjelman mustalaatikkotestaus (1/12). Testaukseen tarvitaan tietysti aina oraakkeli (käsitellään erikseen). Yksittäinen testitapaus: syöte (parametri tai parametrilista).
E N D
Funktionaalisen aliohjelman mustalaatikkotestaus (1/12) Testaukseen tarvitaan tietysti aina oraakkeli (käsitellään erikseen). Yksittäinen testitapaus: syöte (parametri tai parametrilista). Jos parametrin arvoalue on diskreetti ja hyvin pieni, jokaisella arvolla voidaan testata (täysin kattava testaus). • Esim. luettelotyyppi Sukupuoli = (mies, nainen) Yleensä arvoja on liikaa, jotta ne kaikki voitaisiin käydä läpi. Testitapausten valinta perustuu virhehypoteesiin (tietoiseen tai tiedostamattomaan). Yksinkertaisimmat mahdollisuudet testitapausten valintaan: • Mielivaltainen (ad lib) – ei mitään ennakkokäsitystä siitä, mitkä syötearvot voisivat olla virheherkkiä.
Funktionaalisen aliohjelman mustalaatikkotestaus (2/12) • Satunnainen (random) – samoin, mutta syötteet valitaan satunnaisotannalla. • Järkevä silloin, jos tarkemmalle virhehypoteesille ei todellakaan ole perusteita. • Virheenarvaus (error guessing) – virhehypoteesi on vain testaajan päässä, perustuu yleensä kokemukseen. • Voi olla hyvä systemaattisempien menetelmien täydentäjä! Ekvivalenssiositus (Beizer: partition testing) • Virhehypoteesi: syötteiden arvoalue voidaan jakaa sellaisiin osiin (ekvivalenssiluokkiin), että aliohjelma toimii kaikilla saman luokan syötteillä samalla tavoin (oikein tai virheellisesti). • Myös tulosten arvoalue voidaan jakaa samalla tavoin. • Heikompi virhehypoteesi: aliohjelma toimii kaikilla saman luokan syötteillä todennäköisesti samalla tavoin. • Satunnaistestaus luokan sisällä voi kannattaa. • Lisäksi häiriöiden syynä voivat olla eri ekvivalenssiluokissa eri virheet.
Funktionaalisen aliohjelman mustalaatikkotestaus (3/12) Usein tiedetään tai on hyviä syitä olettaa, että syötearvojen eri osa-alueita käsitellään tai pitäisi käsitellä eri tavalla. • Ainakin virheelliset / kelvolliset syötteet. Jos parametri on kokonaisluku- tai reaalilukutyyppinen, ekvivalenssiluokiksi valitaan yleensä (yhtenäisiä) välejä. • Mielekästä, jos parametri esittää jotain vähintään järjestysasteikolla mitattavaa suuretta (myös luettelotyyppinä). • Ei yhtä mielekästä, jos parametrin arvot ovat vain nominaaliasteikolla (vaikka esitettäisiin kokonaislukuina). Rakenteinen parametrityyppi? • Tavallisen taulukon tai tietueen voidaan katsoa vastaavan useita yksinkertaisia parametrejä. • Esim. merkkijonojen jako voi perustua tilanteen mukaan eri seikkoihin (pituus, sanakirjajärjestys, ...). • Luokan olioiden jako voi perustua niiden abstraktiin tilaan.
Funktionaalisen aliohjelman mustalaatikkotestaus (4/12) Raja-arvoanalyysi • Liittyy yleensä ekvivalenssiositukseen (jossa luokat ovat välejä). • Virhehypoteesi: vaikka aliohjelma toimisi muuten oikein eri ekvivalenssiluokissa, se voi luokitella lähellä luokkien rajoja olevat arvot väärin. • Kokonaislukujen tapauksessa otetaan testitapauksiksi kunkin luokan pienin ja suurin arvo. • Reaalilukujen osituksessa raja-arvo kuuluu aina vierekkäisistä luokista vain toiseen. • Suljettu alue – avoin alue. • Tietokone-esityksessä avoimellakin alueella on itse asiassa oma raja-arvonsa (maksimi tai minimi). • Kultakin rajalta valitaan testitapauksiksi suljetulta alueelta itse raja-arvo, avoimelta alueelta hyvin lähellä rajaa oleva arvo. • Raja-arvo voidaan joskus katsoa myös omaksi ekvivalenssi-luokakseen. • Silloin tarvitaan kolme testitapausta.
Funktionaalisen aliohjelman mustalaatikkotestaus (5/12) • Ellei uskota virheiden liittyvän pelkästään rajoihin, on syytä valita kustakin ekvivalenssiluokasta myös testitapaus (ainakin yksi), joka ei ole lähellä rajoja. Esimerkki Parametrinä on reaalilukuna esitetty kulma, yksikkönä aste. • Vaaditaan, että -360 kulma 360. • Virhehypoteesi: on hyvin mahdollista, että aliohjelma käyttäytyy eri tavalla eri kvadranteissa ja myös silloin, kun parametrin arvo on tasan 90:n monikerta. • Kelvolliset ekvivalenssiluokat: n*90 <kulma <(n+1)*90, n = -4, -3, ..., 3; kulma =n*90, n = -4, -3, ..., 4. • Kielletyt ekvivalenssiluokat: kulma <-360, kulma > 360. • Valitsisin avoimista kelvollisista luokista 3 arvoa kustakin (yhden satunnaistetusti kaukaa rajoista). • Kummastakin kielletystä luokasta riittää vastaavasti kaksi arvoa. • Yhteensä siis 37 testitapausta.
Useampi kuin yksi parametri (syöte) Yksinkertaisimmassa tapauksessa parametrit ovat toisistaan riippumattomia. Minimaalinen lähestymistapa: • Jokaiselle parametrille erikseen tarkasteltuna tulee käydyksi kaikki tarpeelliset testitapaukset (ekvivalenssiluokat, raja-arvot). • Kelvollisia testitapauksia tarvitaan vain yhtä monta kuin vaativimmalle parametrille yksinään. • Lisäksi tapaukset, joissa yhdellä parametrillä on kielletty arvo. • Virhehypoteesi: • Eri parametreistä aiheutuvat virheetkin ovat todella toisistaan riippumattomia. • Johonkin parametrin liittyvän virheen ilmeneminen häiriönä ei riipu muiden parametrien arvoista. • Oletukset vaikuttavat kovin optimistisilta. Funktionaalisen aliohjelman mustalaatikkotestaus (6/12)
Funktionaalisen aliohjelman mustalaatikkotestaus (7/12) Maksimaalinen lähestymistapa: • Koko syötteen ekvivalenssiluokkien (tai yleensä tapausten) määrä on parametrien luokka- tai tapausmäärien tulo. • Koko syötteen testitapausten joukko on parametrien tapausjoukkojen karteesinen tulo. • Virhehypoteesi: eri parametreistä aiheutuvien virheiden ja niiden ilmenemisen välillä voi olla mielivaltaisia vuorovaikutuksia. • Eksponentiaalinen räjähdys, jos parametrejä on paljon. Kompromissi: • Valitaan tapaukset niin, että jokaiselle N parametrin joukolle käydään läpi kaikki mahdolliset arvokombinaatiot. • Virhehypoteesi: parametrien väliset vuorovaikutukset (ainakin merkittävät) ovat enintään N:nvälisiä. • Yleensä pidetään jo N = 2 riittävänä. • Testitapausten määrä pysyy kohtuullisena. • Menetelmistä (ainakin OATS, Orthogonal Array Testing System) puhutaan myöhemmin.
Funktionaalisen aliohjelman mustalaatikkotestaus (8/12) Yleisempi tapaus: parametrit (tai niiden haluttu vaikutus) eivät ole toisistaan riippumattomia. Hyvin yksinkertainen esimerkki: • Parametrit X ja Y (reaalilukuja). • Tuloksena pitää palauttaa 0, jos X < 4 ja Y 4 tai X 6 ja Y < 3, muuten 1. • Syötteen ekvivalenssiluokkia on kaksi: harmaa alue ja vinoviivoitettu alue. • Puhtaassa ekvivalenssiluokkatestauksessa riittää kaksi tapausta. Y 4 3 4 6 X
Jos parametrejä käsiteltäisiin toisistaan riippumattomina, tarvittaisiin minimaalisessa lähestymistavassa 3, maksimaalisessa 9 testitapausta. Osa-alueet voidaan esittää (päätöstaulussa) neljänä varianttina, joista kukin sisältää vain yksinkertaisen ehdon X:lle ja Y:lle: 1: X < 6 ja Y < 4 (harmaa) 2: X 4 ja Y 3 (harmaa) 3: X < 4 ja Y 4 (viivoitettu) 4: X 6 ja Y < 3 (viivoitettu Ei ole normalisoitu muoto: Variantit 1 ja 2 menevät osittain päällekkäin. Kattaa kuitenkin kaikki mahdollisuudet. Funktionaalisen aliohjelman mustalaatikkotestaus (9/12)
Muita vaihtoehtoja testitapausten valintaan: Varianttikattavuus: pisteet 1, 5 ja 3 riittävät. Kaikki yhdistelmät, joissa vain yksi ehto on tosi: 1, 5, 2 ja 4. Kaikki yksittäisten ehtojen arvojen yhdistelmät: 1, 5, 2, 3 ja 4. Funktionaalisen aliohjelman mustalaatikkotestaus (10/12)
Raja-arvotestaus ''Yksi kerrallaan'' (1×1) -strategia (Binder): Alueiden (ekvivalenssiluokkien) välisen rajan jokaiselta sivulta yksi rajapiste ja yksi rajan läheltä. Esimerkissä tarvitaan 8 testitapausta. Mustat ympyrät rajalla, valkoiset rajan lähellä. Tämä ei ota huomioon rajojen kärkipisteitä (kulmia). Niiden kohdalla voidaan epäillä omia luokitteluvirheitään. Funktionaalisen aliohjelman mustalaatikkotestaus (11/12) Y 4 3 X 4 6
Beizerin suositus: Rajan jokaiselta sivulta kaksi rajapistettä, läheltä kärkiä. Avoimelta osa-alueelta piste läheltä kunkin sivun keskikohtaa. Itse kärkipisteetkin ovat hyödyllinen lisä. Funktionaalisen aliohjelman mustalaatikkotestaus (12/12) Kolme parametriä, joiden välillä on riippuvuuksia? • Osa-alueet ovat kappaleita (3D), rajat pintoja (2D). • Lisäksi otettava edelleen huomioon särmät (1D) ja kärjet (0D). Tilanne tulee vielä monimutkaisemmaksi, jos parametrejä on enemmän. • Yleensä ei käsitellä useampia kuin kahta parametriä yhdessä.