Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen 23 April 2018 1
Tavoitteet Kokemusperäinen testitapausten suunnittelu Yhteenvetoa suunnittelutekniikoista 23 April 2018 2
Testitapausten kokemusperäinen suunnittelu 23 April 2018 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 23 April 2018 4
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 23 April 2018 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 23 April 2018 6
Systemaattisuutta tarvitaan, mutta Ennakkoon laadituilla testitapauksilla ja niistä koostetuilla testiajoilla ja testiskenaarioilla yksityiskohtaisine suoritusohjeineen (scripted testing) on siis omat rajoitteensa ja puutteensa ( Scripted testing: http://en.wikipedia.org/wiki/test_script ) 23 April 2018 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 23 April 2018 8
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ä 23 April 2018 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 23 April 2018 10
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ä 23 April 2018 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 23 April 2018 12
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 23 April 2018 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 Esimerkki: Spotify-sovelluksen offline-tilan tutkivaa testausta: https://www.youtube.com/watch?v=o0mxe8on kh4 23 April 2018 14
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) 23 April 2018 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 23 April 2018 16
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ä 23 April 2018 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 23 April 2018 18
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 23 April 2018 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 23 April 2018 20
Tekniikan arviointia Lisää tietoa tutkivasta testauksesta: http://www.testingeducation.org/bbst/explorato ry/ Kannattaa katsoa video (kesto16 min.) 23 April 2018 21
Yhteenveto testien suunnittelutekniikoista 23 April 2018 22
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ä. 23 April 2018 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 23 April 2018 24
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öä 23 April 2018 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 23 April 2018 26
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 23 April 2018 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 23 April 2018 28
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 23 April 2018 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% haarautumakattavuus on vähimmäistavoite Silmukat pitäisi suorittaa useampaan kertaan 23 April 2018 30
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ä 23 April 2018 31
White box subsumption (sisältyvyys) -suhteet Korkea luottamustaso polkukattavuus moniehtokattavuus haarautumakattavuus moniehtotuloskattavuus Matala luottamustaso ehtokattavuus lausekattavuus Lähde: G. Bath, J. McKay: The Software Test Engineer's Handbook. Rocky Nook, 2008. 23 April 2018 32