Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

Samankaltaiset tiedostot
Dynaaminen analyysi III

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa:

Dynaaminen analyysi IV

Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Dynaaminen analyysi I

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmistotuotanto, s

Dynaaminen analyysi II

Ehto- ja toistolauseet

Kombinaatiotestauksen tekniikat. 5. Kombinaatiotestaus (P&Y: 11) Luokittelutestauksen algoritmi. Luokittelutestaus. Pankkiautomaattiin kirjautuminen

Ohjelmistotuotanto, s2001 2/27/2003

Dynaaminen analyysi II Luento 4 Antti-Pekka Tuovinen

Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi. Verifiointi- ja validointitekniikat. Verifiointi- ja validointitekniikat II

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Java-kielen perusteita

58160 Ohjelmoinnin harjoitustyö

Harjoitustyön testaus. Juha Taina

5. Kombinaatiotestaus (P&Y: 11)

Ehto- ja toistolauseet

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Muistutus aikatauluista

Luokkatestauksen piirteitä: metodit. 4. Luokkatestaus (B, 10) Luokkatestauksen piirteitä: yliluokat. Luokan valmistelu. Alfa-Omega syklin vaiheet

13. Loogiset operaatiot 13.1

Kontrollipolkujen määrä

Ohjelmistotuotantoprojekti

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

16. Ohjelmoinnin tekniikkaa 16.1

Tutoriaaliläsnäoloista

Algoritmit 1. Luento 3 Ti Timo Männikkö

16. Ohjelmoinnin tekniikkaa 16.1

Onnistunut Vaatimuspohjainen Testaus

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

ITKP102 Ohjelmointi 1 (6 op)

811120P Diskreetit rakenteet

Ohjelmistotestauksen perusteita Luento 1 Antti-Pekka Tuovinen

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

13. Loogiset operaatiot 13.1

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe T1. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T1

811120P Diskreetit rakenteet

12. Javan toistorakenteet 12.1

Luento 5. Timo Savola. 28. huhtikuuta 2006

12. Javan toistorakenteet 12.1

Ohjelmistojen mallintaminen. Luento 11, 7.12.

11. Javan toistorakenteet 11.1

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

Lähdekoodin suorituksen malli. 2. Äärelliset mallit (P&Y: 5) Ohjausvuokaaviot. Atomiset ehdot OVK:ssa. Atomiset ehdot

2. Äärelliset mallit (P&Y: 5)

Staattinen testaus Dynaaminen testaus I Luento 3 Antti-Pekka Tuovinen

Ohjelmistotestauksen perusteita I Luento 1 Antti-Pekka Tuovinen

Ohjelmistotestauksen perusteita II

Ohjelmistotuotanto s

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Testauksen suunnittelu. Faculty of Science 30 April

Laadunvarmistustekniikat

Ohjelmoinnin perusteet Y Python

5. Bugiraportoinnista

7. Verifiointi ja validointi

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

5/20: Algoritmirakenteita III

Racket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 2: Vaiheet 3 & 4. Antti Jääskeläinen Matti Vuori

Palautetta viime luennosta

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 2: Vaiheet 3 & 4. Antti Jääskeläinen Matti Vuori

Ohjelmointiharjoituksia Arduino-ympäristössä

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Algoritmit 2. Luento 8 To Timo Männikkö

Java-kielen perusteita

Convergence of messaging

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Luento 1 Ti Timo Männikkö

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Python-ohjelmointi Harjoitus 2

Testaaminen ohjelmiston kehitysprosessin aikana

Käyttötapausanalyysi ja testaus tsoft

Tietotyypit ja operaattorit

Tietorakenteet ja algoritmit - syksy

Ohjelmiston testaus ja laatu. Testaustasot

Ohjelmoinnin peruskurssi Y1

Hohde Consulting 2004

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet )

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Ohjelmistojen testaus

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.

Transkriptio:

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen www.cs.helsinki.fi 16 April 2018 1

Tavoitteet White box testitapausten suunnittelutekniikat Lausekattavuus Haarautumakattavuus Ehto- ja polkukattavuus Huomioita white box -tekniikoista www.cs.helsinki.fi 16 April 2018 2

White box -tekniikat Lause- ja haarautumakattavuus Ehtokattavuus Polkukattavuus www.cs.helsinki.fi 16 April 2018 3

Black box vs. White box Kurssikirjan kuva 5-2 s. 109 www.cs.helsinki.fi 16 April 2018 4

White box A.k.a koodiin perustuva testaus (code based testing), rakenteellinen testaus (structural testing) Yleisenä tavoitteena testin kohteen implementaation kattava testaus Jokainen kohta koodista suoritetaan ainakin kerran Testioraakkelina ei ole kuitenkaan koodi vaan spesifikaatio (esim. API-kuvaus) Implementaation verifiointi www.cs.helsinki.fi 16 April 2018 5

White box tekniikoita testitapausten määrittelyyn Perustekniikat (ISTQB Foundation -taso) Lausekattavuus (C0) Valintakattavuus (C1) Edistyneemmät (ei käydä yksityiskohtaisesti läpi kurssilla) Ehtokattavuus Polkukattavuus www.cs.helsinki.fi 16 April 2018 6

Lausekattavuus Tavoitteena on suorittaa tietty vähimmäismäärä (tai kaikki) testikohteen sisältämistä ohjelmointikielen lauseista Sijoituslause, valintalause (if, case), toisto (for, while), funktio-/metodikutsu (f( )), koottu lause ({...; ; ; }) Testin suunnittelua varten testikohde (ohjelmakoodi) muutetaan kontrollivuoverkoksi (control flow graph) Tarkoituksena on erityisesti tunnistaa kontrollin haarautumakohdat, jotka johtavat eri lauseryhmien suorittamiseen ajon aikana www.cs.helsinki.fi 16 April 2018 7

Kontrollivuoesimerkki Kurssikirja kuva 5-9, s.?? Peräkkäin suoritettavat lauseet kootaan samaan solmuun Lausekattavuus saavutetaan, kun kaikissa verkon solmuissa on käyty Suorituksen kulkua haaroittavasta lauseesta tulee oma solmunsa, samoin kuin kohdista, joissa haarautuneet suorituspolut yhtyvät www.cs.helsinki.fi 16 April 2018 8

Testitapaukset Testitapausten syötteet ja olosuhteet määritellään siten, että tapausten suorituksen aikana käydään läpi vähintään tavoiteltu määrä lauseita eli verkon solmuja Kuinka monta testitapausta tarvitaan tarvitaan, että saavutetaan 100% lausekattavuus esimerkin verkossa? www.cs.helsinki.fi 16 April 2018 9

Testitapaukset Esimerkkiverkolla saavutetaan täysi lausekattavuus yhdellä testitapauksella, joka käy läpi verkon kaaret järjestyksessä: a, b, f, g, h, d, e Muillakin suorituspoluilla ja/tai niiden yhdistelmillä saavutetaan lausekattavuus Pyritään kuitenkin minimoimaan testitapausten määrä Voi olla, että jo black box testitapauksilla saavutetaan lausekattavuus, mutta asia on varmistettava www.cs.helsinki.fi 16 April 2018 10

Testitapaukset Yleisesti ottaen kaikkien testitapausten suorituksen pitäisi johtaa kaikkien lauseiden suoritukseen vähintään kerran Vain suoritetuista lauseista voidaan löytää vikoja! Kaikkea koodia (esimerkiksi harvinaisten poikkeusten käsittely) ei välttämättä saada testattua ilman erityistyökaluja Ei-kriittistä koodia ei välttämättä tarvitse testata lausekattavasti www.cs.helsinki.fi 16 April 2018 11

Testitapaukset Testitapauksiin määritellään normaaliin tapaan syötteet, odotettu tulos ja mahdolliset esi- ja jälkiehdot Odotettu tulos määritetään vaatimusten/spesifikaation perusteella Testitapausten onnistunut suoritus (pass) on tärkeää - virheiden takia jotkin lauseet voivat jäädä suorittamatta Testitapausten suorituksesta on silti saatava tieto siitä, mitkä lauseet todella suoritettiin www.cs.helsinki.fi 16 April 2018 12

Testauksen lopetusehto Lausekattavuus = (suoritettujen lauseiden määrä / kaikkien lauseiden määrä) * 100% Lausekattavuus tunnetaan C0 -kattavuutena (C0-coverage) Suhteellisen heikko ehto! 100% kattavuuden saavuttaminen voi silti olla vaikeaa, esimerkiksi poikkeustilanteiden aiheuttaminen voi vaatia erikoistyökaluja www.cs.helsinki.fi 16 April 2018 13

Tekniikan arviointia Voi auttaa löytämään testikohteesta kuollutta koodia Tavoiteltua suurempi osuus koodista jää suorittamatta testissä Tyhjät kontrollivuoverkon haarat jäävät suorittamatta (ei testitapauksia niille) Esim If lauseen else haara on tyhjä ei ole tarpeen muodostaa testitapausta, joka käy tämän haaran läpi Mutta pitäisikö else haarassakin olla jotain koodia? Onko tässä vika? www.cs.helsinki.fi 16 April 2018 14

Haarautumakattavuus Valinta- eli haarautumakattavuus (decision / branch coverage) on lausekattavuutta vahvempi tekniikka, joka takaa kaikkien kontrollivuoverkon kaarien läpikäynnin Lauseiden sijasta keskitytäänkin haarautumasolmujen valintaehtojen arvojen evaluointiin www.cs.helsinki.fi 16 April 2018 15

Haarautumakattavuus Tavoitteena on määritellä testitapauksia, jotka johtavat jokaisen valintaehdon kaikkien vaihtoehtojen toteutumiseen vähintään kerran Esimerkiksi Jokaisen If valintalauseen sekä then että else -haara tulee valituksi vähintään kerran testitapausten suorituksen aikana while -toistolauseen rungon ohitus suorittamatta sitä kertaakaan ja toisaalta rungon suoritus vähintään kerran www.cs.helsinki.fi 16 April 2018 16

Esimerkki Aiemmin esitetyssä kontrollivuoverkossa 100%:n lausekattavuuteen riitti kaarien (a, b, f, g, h, d, e) muodostaman suorituspolun läpikäynti Kaaret c, i ja k jäävät käymättä läpi Kuinka monta testitapausta tarvitaan täyden haarautumakattavuuden saavuttamiseksi? www.cs.helsinki.fi 16 April 2018 17

Esimerkki Testitapauksia tarvitaan kolme 1. a, b, c, d,e 2. a, b, f, g, i, g, h, d, e 3. a, k, e Näitä suorituspolkuja vastaavien testitapausten suorittaminen tuottaa 100% haarautumakattavuuden Ja samalla lausekattavuuden, jolloin aikaisemmin määritelty testitapaus voidaan jättää suorittamatta Jotkin kaaret tulevat käydyksi läpi useampaan kertaan, mitä ei kuitenkaan voida välttää www.cs.helsinki.fi 16 April 2018 18

Testitapaukset Määritellään kuten tavallisesti Testioraakkelina edelleenkin vaatimukset (jos ovat olemassa), ei implementaatio On myös syytä pitää kirjaa siitä, mitkä haarat tulevat suoritetuiksi testin aikana Helpottaa vikojen löytämistä joissain tapauksissa esim. puuttuva koodi jostain (tyhjästä) haarasta www.cs.helsinki.fi 16 April 2018 19

Testauksen lopetusehto Haarautumakattavuus = (suoritettujen kaarien määrä / kaikkien kaarien määrä) * 100% Haarautumakattavuus tunnetaan C1 - kattavuutena (C1-coverage) Sisältää C0 kattavuuden, eli on sitä vahvempi ehto www.cs.helsinki.fi 16 April 2018 20

Testauksen lopetusehto Esimerkkimme tapauksessa kolmannen lisätestitapauksen suorittamatta jättäminen tuottaa vain 90% haarautumakattavuuden, vaikka 100% lausekattavuus saavutettiin jo yhdellä testitapauksella Kattavuustavoite voidaan perustaa arvioituun riskiin ja testikohteen kriittisyyteen Miten prosenttiluvut sitten valitaan, onkin Advanced tason asiaa www.cs.helsinki.fi 16 April 2018 21

Tekniikan arviointia Vaatii yleensä enemmän testitapauksia kuin lausekattavuus 100% haarautumakattavuus 100% lausekattavuus Mutta ei päinvastoin! Puuttuvan implementaation havaitseminen tyhjistä haaroista on mahdollista Hyöty voi olla rajallinen olio-ohjelmissa, jossa metodit ovat yleensä lyhyitä ja kompleksisuus piilee olioiden vuorovaikutuksessa www.cs.helsinki.fi 16 April 2018 22

Ehtokattavuus Haarautumakattavuus ei ota lainkaan huomioon valintaehtojen evaluoinnin monimutkaisuutta Ollaan kiinnostuneita vain koko ehdon evaluoinnin tuloksesta (true tai false) Valintaehdot ovat kuitenkin välillä mutkikkaita loogisia lausekkeita, joiden evaluoinnin tulos riippuu monen eri muuttujan tai parametrin arvosta www.cs.helsinki.fi 16 April 2018 23

Ehtokattavuus Perusideana on jakaa ehtolauseke atomisiin osiinsa Lausekkeen atominen osa ei sisällä loogisia operaattoreita AND, OR tai NOT, mutta se voi sisältää vertailuoperaattoreita ( >, == ) x > 3 AND x <= 10 x < 3 OR x >= 10 x < 3 AND (x > 0 OR x ==0) www.cs.helsinki.fi 16 April 2018 24

Ehtokattavuus Ehtokattavuustestauksesta on useita variaatiota riippuen siitä, minkälaisia atomisten ehtojen totuusarvojen kombinaatioita testataan Yksinkertainen ehtokattavuus Moniehtokattavuus Moniehtotuloskattavuus www.cs.helsinki.fi 16 April 2018 25

Yksinkertainen ehtokattavuus (condition testing and coverage) Määritelmä Ehtolausekkeiden jokaisen atomisen osan pitää saada (vähintään) kerran arvo TRUE ja arvo FALSE testien aikana Ei vaadi, että koko ehto evaluoituu sekä TRUE että FALSE arvoihin On siis teoriassa heikompi kattavuudeltaan kuin lause- tai haarautumakattavuus ( x < 3 OR x >= 10 ) www.cs.helsinki.fi 16 April 2018 26

e 1 e 2 e 1 V e 2 X : Yksinkertainen ehtokattavuus (condition testing and coverage) E : ( x < 3 OR x >= 10 ) e 1 e 2 X : www.cs.helsinki.fi 16 April 2018 27

Moniehtokattavuus (multiple condition coverage) Määritelmä Ehtolausekkeiden atomisten osien kaikki TRUE - FALSE kombinaatiot pitää testata Takaa, että koko ehto evaluoituu sekä TRUE että FALSE arvoihin On siis teholtaan lause- ja haarautumakattavuuteen vertautuva Voi olla kuitenkin hyvin työlästä (jopa mahdotonta) saada kaikki kombinaatiot aikaiseksi testin syötteillä Lisäksi ehtolausekkeen kaikkia osia ei välttämättä edes evaluoida suoritusaikana (jos niillä ei ole enää vaikutusta koko lausekkeen arvoon - tämä riippuu ohjelmointikielestä) www.cs.helsinki.fi 16 April 2018 28

Moniehtokattavuus (multiple condition coverage) E : ( x < 3 OR x >= 10 ) e 1 e 2 e 1 e 2 e 1 V e 2 X : X : X : X : www.cs.helsinki.fi 16 April 2018 29

Moniehtotuloskattavuus (condition determination testing) Lievempi ehto atomisten ehtojen kombinaatioille ainoastaan sellaiset kombinaatiot on testattava, jotka vaikuttavat koko ehtolauseen evaluoinnin tulokseen www.cs.helsinki.fi 16 April 2018 30

Tekniikoiden arviointia Monimutkaiset ehdot, jotka ovat loogisten lausekkeiden yhdistelmiä, ovat erityisen alttiita vioille Monimutkaiset ehdot ovat vaikeita ymmärtää ja vaikeita koodata oikein Erityisesti raja-arvojen käsittelyssä tulee helposti tehdyksi virheitä www.cs.helsinki.fi 16 April 2018 31

Tekniikoiden arviointia Niiden testaukseen kannattaa siis panostaa, mutta moniehtokattavuudet voivat osoittautua hyvin kalliiksi menetelmiksi (työmäärältään) Ehtoja voi yrittää yksinkertaistaa ja hajoittaa valintalauseet osiin ja turvautua haarautumakattavuuteen Ehtojen testauksen sijaan ne voi katselmoida www.cs.helsinki.fi 16 April 2018 32

Polkukattavuus Kaikki eri polut testattavan koodin läpi on suoritettava Jos polulla on silmukka, erilaisia (eri mittaisia ja eri haaroja/kaaria) sisältäviä polkuja voi olla rajattomasti Kuten ensimmäisellä luennolla nähtiin (Luento 1, s. 36-39), silmukan toistokertojen ollessa rajoitettu, kombinatorinen räjähdys voi tehdä kattavan testauksen mahdottomaksi www.cs.helsinki.fi 16 April 2018 33

Polkukattavuus Toisin kuin haarautumakattavuus, polkukattavuus ottaa huomioon kontrollivuoverkon haarojen keskinäisen suoritusjärjestyksen Testitapauksilla on siis suuremmat mahdollisuudet löytää vikoja, joitten esiintyminen riippuu testattavan koodin eri osien välisistä riippuvuuksista ja silmukoiden toistojen määristä Esimerkiksi muistivuodot, ajoitus- ja lukitusongelmat rinnakkaisessa suorituksessa jne. Polkukattavuuden testitapausten määrittely (tai sen yrittäminen) voi paljastaa vikoja valinta- ja toistolauseiden ehdoista www.cs.helsinki.fi 16 April 2018 34

Huomioita white box -tekniikoista Testattavan koodin kompleksisuus vaikuttaa testitekniikoiden ja intensiteetin valintaan Riittääkö lausekattavuus vai onko syytä käyttää myös haarautuma- tai polkukattavuutta? Soveltuvat parhaiten yksikkötestaukseen, miksei myös integrointitestaukseen kriittisten komponenttien osata Integrointitestauksessa voidaan vaatia tiettyä kattavuutta yksittäisten luokkien tai komponenttien osalta www.cs.helsinki.fi 16 April 2018 35

Työkalut Kattavuustestien käyttö vaatii työkalutukea testien suorituksen aikana Testin suorituksen jälkeen on aina todettava, mitkä lauseet ja valintaehdot ovat todella tulleet testissä suoritetuksi Testitapausten syötteet on toki suunniteltu tietyn kattavuuden saavuttamiseksi, mutta testin suunnittelijahan on voinut erehtyä Testattava koodi on yleensä instrumentoitava laskureilla, jotka pitävät kirjaa koodifragmenttien suorituksesta www.cs.helsinki.fi 16 April 2018 36

Työkalut Työkalut laskevat automaattisesti kattavuudet pienentäen inhimillisten virheiden riskiä ja vähentäen manuaalisen työn määrää www.cs.helsinki.fi 16 April 2018 37

Tavoitteet White box testitapausten suunnittelutekniikat Lausekattavuus Haarautumakattavuus Ehto- ja polkukattavuus Huomioita white box -tekniikoista www.cs.helsinki.fi 16 April 2018 38