Dynaaminen analyysi II Luento 7 Antti-Pekka Tuovinen 9 April 2013 1 Tavoitteet Black-box testitapausten suunnittelutekniikat II Tilamallien käyttö Syys-seurausverkot ja päätöstaulut Käyttötapaukset Yhteenveto black-box -tekniikoista 9 April 2013 2 1
Tilamallit testitapausten suunnittelussa 9 April 2013 3 Tilamalli Ohjelman tilamalli on abstraktio, jolla kuvataan miten ohjelman suoritushistoria vaikuttaa sen käyttäytymiseen tietyllä ajan hetkellä Ulkoisesti havaittavan käyttäytymisen malli - ei sisäisen implementaation 9 April 2013 4 2
Tilamalli Sopii käytettäväksi, jos ohjelman suorituksessa on selviä vaiheita tai jaksoja, joissa sen käyttäytyminen on oleellisesti erilaista kuin muissa vaiheissa Hyväksytyt syötteet, tuotetut tulosteet, tietosisällön muutokset ja tuetun liiketoimintaprosessin vaiheet Siirtymiseen vaiheesta toiseen voi liittyä herätteitä, toimintoja ja ehtoja 9 April 2013 5 Tilamallin määrittely tilakoneena Tilakone eli äärellinen automaatti (finite state machine) Kiinnitetty, äärellinen määrä tiloja ja syötteitä Koostuu tiloista, siirtymistä, syötteistä ja tulosteista Mallinnetaan yleensä tilojen ja niiden välisten siirtymien välisenä verkkona Tilakaavio (state diagram) Tilakoneen graafinen esitys Näyttää mahdolliset tilat sekä tapahtumat ja olosuhteet, jotka aiheuttavat siirtymän tilasta toiseen tai jotka seuraavat tilasiirtymistä 9 April 2013 6 3
Esimerkki pinon tilakaavio kurssikirja kuva 5-3, s. 128 9 April 2013 7 Tilamallin perusteella tehtävä testaus Testin kohde (test object) Koko ohjelma tai jokin yksittäinen komponentti/palvelu, usein myös yksittäinen olio Testin suoritus koostuu sarjasta kohteelle annettuja syötteitä Testauksen kattavuus Testin vähimmäisvaatimus on, että kaikissa tiloissa käydään vähintään kerran Vahvempi ehto on, että jokaisen tilan kaikki toiminnot ja tilasiirtymät tulisi suorittaa ainakin kerran Myös reagointi odottamattomiin tai vääriin syötteisiin on testattava jokaisessa tilassa 9 April 2013 8 4
Testitapausten suunnittelu Esimerkki vähimmäistestistä (pinon maksimikoko on 4) 1. Esiehto: pino on alustettu ja tilassa empty 2. Syöte: vie pinoon (push) hello 3. Syöte: vie pinoon (push) hello 4. Syöte: vie pinoon (push) hello 5. Syöte: vie pinoon (push) hello 6. Tulos: pinon huipulla (top) on hello 7. Jälkiehto: pino on tilassa full 9 April 2013 9 Testitapausten muodostaminen Testitapausten suunnittelua helpottaa (syklisen) tilakaavion purkaminen tilasiirtymäpuuksi Algoritmi 1. Aseta tilamallin alkutila puun juureksi 2. Lisää uusi oksa puuhun jokaista alkutilasta lähtevää tilasiirtymää kohden siten, että siirtymän kohdetila tulee uudeksi lehdeksi puuhun 3. Toista askelta kaksi jokaiselle puun lehdelle, kunnes jompikumpi ehdoista täyttyy: i. Uusi tila on lopputila (ei enää siirtymiä muihin tiloihin) ii. Uusi tila esiintyy jo puussa polulla juuresta lisättyyn tilaan (eli on löytynyt sykli) 9 April 2013 10 5
Pinon siirtymäpuu initial initialize empty filled push delete deleted pop push push pop top empty filled full filled filled top push* top full full filled 9 April 2013 11 Testitapausten muodostaminen Puun jokainen polku juuresta lehteen vastaa yhtä testitapausta Siirtymiin liittyvät ehdot (guard) on otettava huomioon testitapauksia muodostettaessa Jotakin tiettyä polun segmenttiä on mahdollisesti toistettava: Initial empty filled filled filled full Myös odottamattomia syötteitä on kokeiltava jokaisessa tilassa Puuta laajennetaan sisältämään vääriä syötteitä vastaavat tilat 9 April 2013 12 6
Virhetilat pinon siirtymäpuussa initial initialize FAIL pop pop FAIL empty delete top push deleted filled delete push push pop top FAIL empty filled full filled filled delete top push* top full full filled FAIL 9 April 2013 13 Tilamallit järjestelmätestauksen apuna Tilamallit sopivat luontevasti kuvaamaan siirtymiä ohjelman erilaisten loppukäyttäjän näkymien jadialogien välisten siirtymien kuvaukseen 9 April 2013 14 7
Esimerkki - DreamCar GUI kurssikirja kuva 5-6, s. 133 9 April 2013 15 Testitapausten rakenne Testitapauksessa määritellään Testin kohteen alkutila ennen testitapauksen suoritusta Annettava syöte Odotettu testikohteen tuottama tulos tai käyttäytyminen Odotettu testikohteen lopputila suorituksen jälkeen Tilasiirtymistä pitää tietää Tila, josta siirtymä tapahtuu Tapahtuma tai olosuhde, joka laukaisee siirtymän Odotettu reaktio tai toiminto, jonka siirtymä käynnistää Seuraava tila, johon siirtymä johtaa 9 April 2013 16 8
Testauksen lopetusehto Yleinen ehto heikommasta vahvempaan 1. Jokainen tila on saavutettu vähintään kerran testin aikana 2. Jokainen siirtymä on suoritettu vähintään kerran (sisältää 1:n) 3. 2 + Jokaista odottamatonta/väärää syötettä on kokeiltu kaikissa tiloissa Kriittisille ohjelmille voidaan määritellä vielä kattavampiakin siirtymiä ja niiden kombinaatioita koskevia ehtoja (esim. tiedonsiirtoprotokollien testaus) 9 April 2013 17 Tekniikan arviointia Sopii käytettäväksi, kun testin kohteella on selvästi tilapohjaista käyttäytymistä (suoritushistoria vaikuttaa toimintaan) ja prosessoinnin vaiheet tai tilat ovat erotettavissa toisistaan Erityisen luontevaa olioperustaisille järjestelmille, jossa jokainen olio tavallaan on pieni tilakone Kapseloi tilan (attribuuttien/propertyjen arvot) ja siihen kohdistuvat operaatiot (metodit) 9 April 2013 18 9
Syy-seurausverkot ja päätöstaulut testitapausten suunnittelussa 9 April 2013 19 Syötteiden väliset riippuvuudet Aiemmin esitellyt tekniikat eivät ota huomioon ohjelman/komponentin eri syötteiden välisiä riippuvuuksia ja yhteisvaikutusta testin kohteen toimintaan Syötteitä tarkastellaan erillisinä (esim. ekvivalenssiluokat) Syy-seurausverkkojen (cause-effect graph) avulla voidaan kuvata tiettyyn ohjelmiston käyttäytymiseen (action, effect) johtavat tilanteet ja syyt (condition, cause) ja niiden kombinaatiot 9 April 2013 20 10
Esimerkki pankkiautomaatin toiminta kurssikirja kuva 5-7, s.136 9 April 2013 21 Päätöstaulut Testitapausten määrittelyä varten syyseurausverkko muunnetaan päätöstauluksi Algoritmi kurssikirjassa s. 137 Päätöstaulusta voidaan suoraviivaisesti muodostaa loogiset testitapaukset, jotka kuvaavat ohjelman eri käyttäytymisvaihtoehdot ja niihin johtavat ehdot ja tapahtumapolut Konkreettiset testitapaukset vaativat syötteet ja askeleet, joilla halutut tilanteet saavutetaan 9 April 2013 22 11
Esimerkki päätöstaulu kurssikirja kuva 5-7, s.136 9 April 2013 23 Testauksen lopetusehto Jokainen päätöstaulun sarake on suoritettava vähintään yhdellä testitapauksella Verifioi kaikki järkevät ehtojen kombinaatiot ja niitä vastaavan toiminnan 9 April 2013 24 12
Tekniikan arviointia Syitten ja seurausten huolellinen analysointi syy-seurausverkkojen ja päätöstaulujen avulla voi paljastaa ehtojen kombinaatioita, jotka eivät tule esiin muilla tekniikoilla Loogisten testitapausten muodostaminen helppoa Päätöstaulun muodostamisessa ja optimoinnissa voi tapahtua virheitä Verkot ja taulut voivat kasvaa suuriksi ja niiden hallinta vaatii erityisiä työkaluja Algoritmisia ratkaisuja kuitenkin löytyy 9 April 2013 25 Käyttötapausmallit testitapausten suunnittelussa 9 April 2013 26 13
Käyttötapausmallit Käyttötapauksia (use case) ja UML:n käyttötapausmalleja käytetään yleisesti ohjelmiston toiminnalliseen määrittelyyn Käyttötapaus kuvaa ulkopuolisen toimijan (actor) vuorovaikutuksen (syötteet ja vastaukset) ohjelmiston kanssa jonkin toimijan tavoitteen saavuttamiseksi Käyttötapauksen suoritus tuottaa jotain arvoa toimijalle 9 April 2013 27 Käyttötapausmallit UML kuvaa käyttötapaukset nimeämällä toimijat ja käyttötapaukset, sekä osoittamalla käyttötapausten väliset suhteet UML-mallit eivät kuvaa yksityiskohtaisesti käyttötapaukseen liittyvää vuorovaikutusta (toimijan antamia syötteitä ja ohjelmiston tuottamia vastauksia) Yksityiskohtaiset kuvaukset valituista käyttötapauksista kannattaa kirjoittaa erikseen: http://www.agilemodeling.com/artifacts/systemus ecase.htm 9 April 2013 28 14
Esimerkki pankkiautomaatti kurssikirja kuva 5-8, s. 140 9 April 2013 29 Käyttötapausmallit Käyttötapauksiin liittyy aina tiettyjä esiehtoja ja jälkiehtoja Käyttötapausmallit ja yksityiskohtaiset käyttötapauskuvaukset soveltuvat järjestelmä- ja hyväksyntätestauksen testitapausten suunnittelun pohjaksi Käyttötapauksia voi käyttää myös ohjelmiston alijärjestelmien välisen vuorovaikutuksen määrittelyyn, jolloin ne sopivat myös integrointitestien suunnitteluun 9 April 2013 30 15
Mallinnettu toiminnallisuus Käyttötapaukset keskittyvät ohjelmiston normaalin toiminnan ja tyypillisten tilanteiden kuvaamiseen Järjestelmän vakaa ja luotettava käyttäytyminen tärkeää Usein myös tärkeimmät vaihtoehtoiset tapahtumakulut kuvataan Käyttötapauksiin perustuvat testit ovat erittäin relevantteja asiakkaan ja loppukäyttäjän kannalta! 9 April 2013 31 Testitapausten muodostaminen Käyttötapaukseen liittyy toimijan jokin tavoite, joka on tarkoitus saavuttaa (lopputulos) Toimijan ja ohjelmiston välisen vuorovaikutuksen kulku koostuu aktioreaktio askeleista, joista osa voi olla vaihtoehtoisia tai johtaa muihin aktiviteetteihin (tai käyttötapauksiin) 9 April 2013 32 16
Testitapausten muodostaminen Käyttötapauksen kuvaukseen kuuluu Lähtötilanne ja esiehdot Muut mahdolliset ehdot tai olosuhteet Odotettu tulos Jälkiehdot Konkreettiset syötteet ja tulosteet täytyy erikseen määritellä testitapauksia varten Vaihtoehtoisia tapahtumankulkuja varten on myös määriteltävä testitapaukset 9 April 2013 33 Lopetusehto Jokainen käyttötapaus sekä sen vaihtoehtoiset kulut ja laajennukset on käyty läpi vähintään yhdessä testitapauksessa 9 April 2013 34 17
Tekniikan arviointia Hyödyllinen menetelmä tyypillisten toimintojen testaamiseen Sopii parhaiten järjestelmä- ja hyväksyntätestaukseen Käyttötapaukset voivat sisältää myös vaihtoehtoisia tapahtumakulkuja ja poikkeustilanteiden kuvauksia Asioita, joita käyttötapaukset eivät kuvaa, ei voi niiden perusteella testata Tarvitaan täydentäviä tekniikoita, esim raja-arvo analyysi 9 April 2013 35 Huomioita black-box tekniikoista 9 April 2013 36 18
Black-box testauksen rajoituksia Tekniikoiden lähtökohtana ovat järjestelmän vaatimukset ja spesifikaatiot Vaatimusten ja spesifikaatioiden virheet eivät tule helposti esille, koska black-box testit voivat vain osoittaa toimiiko ohjelmiston vaatimusten mukaisesti Tarkkaavainen testien suunnittelija voi kuitenkin havaita vaatimuksissa puutteita ja ristiriitaisuuksia Määrittelyvirheitä voidaan löytää katselmoinneilla (staattisen analyysin keino) 9 April 2013 37 Black-box testauksen rajoituksia Ylimääräisen, ei-vaaditun toiminnallisuuden löytäminen black-box testeillä on sattuman kauppaa Testauksen kattavuus- ja lopetusehdot perustuvat tunnettuihin vaatimuksiin ja spesifikaatioihin, eivätkä siihen mitä on tullut implementoitua 9 April 2013 38 19
Lopuksi Black-box testaus keskittyy ohjelmiston toiminnallisuuden verifointiin Ohjelmiston oikea toiminta on kiistämättä sen kaikkein tärkein ominaisuus Sen vuoksi black-box tekniikoita on aina syytä käyttää! 9 April 2013 39 20