Dynaaminen analyysi IV Luento 9 Antti-Pekka Tuovinen 16 April 2013 1 Tavoitteet Kokemusperäinen testitapausten suunnittelu Yhteenvetoa suunnittelutekniikoista 16 April 2013 2 1
Testitapausten kokemusperäinen suunnittelu 16 April 2013 3 Systemaattisuutta tarvitaan, mutta Kurssilla käsitellyillä testitapausten suunnittelutekniikoilla pyritään systemaattiseen ja tietyllä tavalla mekaaniseen prosessiin Ennakkosuunnittelu, toistettavuus, testien uudelleenkäytettävyys Testien suunnittelun ja suorituksen erottaminen toisistaan (alihankinta, ulkoistus) Automatisointi 16 April 2013 4 2
Systemaattisuutta tarvitaan, mutta Testitapausten laatu eli kyky paljastaa vikoja testattavasta ohjelmasta riippuu monesta seikasta Vaatimusten ja spesifikaatioiden tarkkuudesta Testien suunnittelijoiden kyvyistä ja kokemuksesta Käytetyistä työkaluista Virheitä voi tapahtua 16 April 2013 5 Systemaattisuutta tarvitaan, mutta Spesifikaatioihin perustuvilla testeillä on vaikea löytää vaatimusmäärittelyn puutteisiin liittyviä vikoja Mitä ei ole vaadittu, sitä ei myöskään testata Myös testausprosessin ja testitapausten hallinnan ongelmat heikentävät testauksen tehoa Testitapaukset eivät pysy ajan tasalla 16 April 2013 6 3
Systemaattisuutta tarvitaan, mutta Ennakkoon laadituilla testitapauksilla ja niistä koostetuilla testiajoilla ja testiskenaarioilla suoritusohjeineen (scripted testing) on siis omat rajoitteensa ja puutteensa ( Scripted testing: http://en.wikipedia.org/wiki/test_script ) 16 April 2013 7 Intuitio ja kokemus apuun Kokeneilla kehittäjillä ja testaajilla on kyky arvata, minkälaisia vikoja testattavassa ohjelmassa voisi olla (error guessing) He tuntevat ongelma-alueen ja ovat testanneet samanlaisia ohjelmia aikaisemminkin Heillä on hiljaista (mahdollisesti myös dokumentoitua) tietoa tyypillisistä vioista ja niiden aiheuttamista oireista He tuntevat toteutusteknologiat ja organisaation He keksivät uusia tapoja rikkoa ohjelman 16 April 2013 8 4
Intuitio ja kokemus apuun Intuitiivinen testaus täydentää systemaattisin menetelmin kehitettyjä testitapauksia ja on hyvin suositeltavaa Intuitiota itse asiassa käytetään paljon testitapausten suunnittelussa Tutkiva testaus (exploratory testing) on tunnettu ja nykyään suosittu intuitiivisen testauksen menetelmä 16 April 2013 9 Tutkiva testaus Kokemusperäinen testausmenetelmä, joka sopii käytettäväksi myös silloin, kun ohjelman dokumentaatio puutteellista tai sitä ei ole Tai kun aikaa on vain vähän käytettävissä Testaustaso: järjestelmä- ja hyväksyntätestaus 16 April 2013 10 5
Tutkiva testaus Ideana on suunnitella ja suorittaa testit sitä mukaa, kun testaaja tutustuu testattavaan ohjelmaan Ei erillisiä testauksen suunnittelu- ja suoritusvaiheita Testaaja tutkii (explore) ohjelman toimintaa ja käyttöä ja päättää, minkälaisia testejä hän tekee tutkimuksen edetessä 16 April 2013 11 Tutkiva testaus Testaaja ei siis mekaanisesti käy läpi ennalta annettua testitapausten joukkoa (scripted testing), vaan käyttää intuitiotaan ja kokemustaan hyväksi Ei rajoita testaajan oman mielikuvituksen käyttöä ja oivalluksia 16 April 2013 12 6
Tutkivan testauksen kulku Testaaja tutustuu aluksi yleisesti testin kohteeseen Hän päättää sitten, mihin tiettyihin toimintoihin keskittyy Testaaja tekee muutamia alustavia testejä suunnitellen testitapaukset lennosta Hän analysoi tulokset ja havaintonsa, ja yrittää tunnistaa erityistä huomiota vaativia piirteitä ohjelman toiminnasta Testaaja päättää sitten, mitä hän seuraavaksi testaa Jne 16 April 2013 13 Tutkivan testauksen kulku Näin testaaja rakentaa pala palalta käsitystään ohjelman toiminnasta ja käytöstä ja mahdollisista laatuongelmista Testaajan havaintoja voidaan käyttää hyväksi myös muihin tekniikoihin perustuvien testien suunnittelussa (ja tekniikoiden valinnassa), jos niitten suorittamiseen on aikaa 16 April 2013 14 7
Testi-istunnot Tutkiva testaus kannattaa yleensä kohdistaa vain tiettyihin ohjelmaan osiin tai toimintoihin (käyttäjän tehtävät, task) Testattava toiminnot tarkennetaan testausta varten konkreettisiin tavoitteisiin tai aiheisiin (goal, charter) Yhden aiheen testaukseen saisi kulua korkeintaan pari tuntia Kutakin aihetta kohden pidetään oma testiistuntonsa (test session) 16 April 2013 15 Testi-istunnot Testi-istuntoa ohjaavat seuraavat kysymykset Miksi? Mikä on istunnon tavoite? Mikä on testin kohde? Miten? Mitä testaustekniikkaa pitäisi käyttää? Minkälaisia ongelmia pitäisi löytää? Testi-istunnon aikana on luonnollisesti pidettävä kirjaa löydetyistä mahdollisista vioista ja niiden havaitsemiseen johtaneista testitapauksista Istunnon jälkeen löydökset käydään läpi ja laaditaan vikaraportit 16 April 2013 16 8
Tutkivan testauksen pääideat Yhden testitapauksen suorituksen tulokset vaikuttavat seuraavien testitapausten valintaan Testaaja muodostaa ohjelmasta itselleen testin aikana sisäisen ( mentaalisen ) mallin, joka kertoo miten ohjelma toimii ja miten sen tulisi käyttäytyä Testaaja suorittaa testejä Täydentääkseen muodostamaansa mallia Löytääkseen ohjelmasta mallista poikkeavia piirteitä ja käyttäytymistä 16 April 2013 17 Testitapausten määrittely Testaajat käyttävät kaikkea tietoaan ja kokemustaan testitapausten määrittelyyn testi-istuntojen aikana Testitapauksilla on luonnollisesti esi- ja jälkiehdot, tietyt syötteet ja odotettu tulos, kuten etukäteen suunnitelluilla testeilläkin Erilaiset vihje- ja tarkistuslistat usein esiintyvistä virheistä ja vioista ja epäilyttävistä tilanteista auttavat testaajaa testi-istunnon aikana Listoista on hyötyä myös ohjelmistokehittäjille 16 April 2013 18 9
Testin lopetusehto Testauksen päättämiselle on vaikea suoraan määritellä lopetusehtoa Ei etukäteen määrättyjä testitapauksia, joiden suoritustilannetta seurataan Ei kattavuusmittareita Session-based testing pyrkii tuomaan tutkivaan testaukseen keinoja arvioida ja ohjata testauksen edistymistä: http://en.wikipedia.org/wiki/sessionbased_testing 16 April 2013 19 Tekniikan arviointia Kokemusperäinen ja intuitiivinen testaus auttaa löytämään ohjelmasta virheitä, jotka systemaattisilla menetelmillä voivat jäädä huomaamatta Tekniikan tuloksellisuus ja tehokkuus riippuvat paljon testaajien taidosta, kokemuksesta ja intuitiivisesta kyvystä Taito asettua käyttäjän asemaan Täydentää hyvin muita menetelmiä, mutta ei yksinään riitä ainoaksi testausmenetelmäksi 16 April 2013 20 10
Tekniikan arviointia Lisää tietoa tutkivasta testauksesta: http://www.testingeducation.org/bbst/explorato ry/ Kannattaa katsoa video (kesto16 min.) 16 April 2013 21 Yhteenveto testien suunnittelutekniikoista 16 April 2013 22 11
Tekniikoiden valinnasta Yleinen tavoite Määritellään riittävän (toisiinsa verrattuna) erilaisia testitapauksia käyttäen sovellettavissa olevia menetelmiä vikojen löytämiseksi testin kohteesta halutulla todennäköisyydellä ja mahdollisimman vähällä työllä. 16 April 2013 23 Valintaan vaikuttavia tekijöitä Valinnassa on otettava huomioon monia erilaisia seikkoja ja rajoitteita Testikohteen luonne Ohjelmien kompleksisuus vaihtelee suuresti jopa ohjelman sisällä Jotkin kriittiset moduulit, joissa esiintyvillä vioilla on suuri vaikutus ohjelman laatuun, vaativat perusteellisempaa white box -testausta kuin vähemmän kriittiset osat 16 April 2013 24 12
Vaikuttavia tekijöitä Formaalin dokumentaation ja työkalujen saatavuus Formaalit spesifikaatiot tai mallit voivat toimia syötteenä työkaluille, jotka osaavat generoida testitapauksia automaattisesti (model-driven testing) Standardien noudattaminen Viranomaiset ja tietyt teollisuudenalat saattavat vaatia tiettyjen testausmenetelmien ja testikattavuuksien käyttöä 16 April 2013 25 Vaikuttavia tekijöitä Testaajien kokemus Testaajien aiemmat myönteiset kokemukset voivat johtaa tiettyjen tekniikoiden valintaan Asiakkaan toiveet Asiakas saattaa vaatia tiettyjen testausmenetelmien ja testikattavuuksien käyttöä, mikä asettaa tietyn vähimmäistason toimittajan tekemälle testaukselle Riskianalyysin tulokset Suuri riski oikeuttaa ja vaatii suuren panostuksen testaukseen 16 April 2013 26 13
Vaikuttavia tekijöitä Muut tekijät Spesifikaatioiden ja muun dokumentaation saatavuus ja laatu Testaajien osaaminen Aika- ja budjettirajoitteet Tarvittavat testaustasot ja kokemukset siitä, millaisia vikoja niillä yleensä esiintyy ja millaisilla tekniikoilla niitä on aikaisemmin löydetty 16 April 2013 27 Neuvoja valintaan Testaustekniikoiden valinnan pitäisi aina perustua huolelliseen tapauskohtaiseen harkintaan, ei oletusratkaisuihin One size does not fit all Toiminnallisuuden riittävä verifiointi on aina taattava Testitapausten suunnitteluun (menetelmästä riippumatta) kuuluu testin kohteen tuottaman odotetun tuloksen tai käyttäytymisen määrittely 16 April 2013 28 14
Neuvoja valintaan Syötteiden jakoa ekvivalenssiluokkiin ja raja-arvoanalyysiä on aina syytä käyttää Testitapausten suoritukseen on hyvä yhdistää kattavuusmittareiden käyttö Tilamallitekniikkaa on käytettävä, jos testikohteella on sen käyttäytymiseen vaikuttavia selvästi erillisiä tiloja Jos syötteille on määritelty keskinäisiä riippuvuuksia, ne voidaan mallintaa syyseurausverkoilla tai päätöstauluilla 16 April 2013 29 Neuvoja valintaan Koko ohjelmiston käyttötapauksia voi käyttää testitapausten suunnittelun pohjana Yksikkö- ja integrointitestauksesta pitäisi kerätä koodikattavuustietoa Suorittamatta jäänyt koodi on kandidaatti white box testaukselle (erikoistapauksia, poikkeustilanteita, virheellisesti koodattuja ehtoja jne) 100% lausekattavuus on vähimmäistavoite Silmukat pitäisi suorittaa useampaan kertaan 16 April 2013 30 15
Neuvoja valintaan Polkukattavuus on lähinnä teoreettinen mittari testauksen intensiteetille Ei voida käytännössä yleensä saavuttaa White box tekniikat sopivat alemmille testaustasoille, kun taas black box tekniikat sopivat kaikille tasoille Testaajien intuitioon ja kokemukseen perustuvia menetelmiä ei pidä väheksyä 16 April 2013 31 White box subsumption (sisältyvyys) -suhteet Korkea luottamustaso moniehtokattavuus polkukattavuus haarautumakattavuus moniehtotuloskattavuus ehtokattavuus lausekattavuus Matala luottamustaso Lähde: G. Bath, J. McKay: The Software Test Engineer's Handbook. Rocky Nook, 2008. 16 April 2013 32 16