Dynaaminen analyysi III

Samankaltaiset tiedostot
Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

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

Ohjelmiston testaus ja laatu. Testausmenetelmiä

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

Dynaaminen analyysi I

Ohjelmistotuotanto, s

Dynaaminen analyysi II

Ohjelmistotuotanto, s2001 2/27/2003

Ehto- ja toistolauseet

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

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

58160 Ohjelmoinnin harjoitustyö

Java-kielen perusteita

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

Dynaaminen analyysi II Luento 4 Antti-Pekka Tuovinen

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

Ehto- ja toistolauseet

5. Kombinaatiotestaus (P&Y: 11)

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

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

Muistutus aikatauluista

Harjoitustyön testaus. Juha Taina

Ohjelmistotuotantoprojekti

13. Loogiset operaatiot 13.1

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

16. Ohjelmoinnin tekniikkaa 16.1

Tutoriaaliläsnäoloista

16. Ohjelmoinnin tekniikkaa 16.1

ITKP102 Ohjelmointi 1 (6 op)

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

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

Onnistunut Vaatimuspohjainen Testaus

Algoritmit 1. Luento 3 Ti Timo Männikkö

13. Loogiset operaatiot 13.1

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

Luento 5. Timo Savola. 28. huhtikuuta 2006

Kontrollipolkujen määrä

11. Javan toistorakenteet 11.1

811120P Diskreetit rakenteet

12. Javan toistorakenteet 12.1

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

12. Javan toistorakenteet 12.1

811120P Diskreetit rakenteet

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

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

Ohjelmistojen mallintaminen. Luento 11, 7.12.

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

Ohjelmistotestauksen perusteita Luento 1 Antti-Pekka Tuovinen

Ohjelmistotestauksen perusteita II

Ohjelmoinnin perusteet Y Python

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

5/20: Algoritmirakenteita III

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

Racket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014

Palautetta viime luennosta

Ohjelmointiharjoituksia Arduino-ympäristössä

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

5. Bugiraportoinnista

Staattinen testaus Dynaaminen testaus I Luento 3 Antti-Pekka Tuovinen

Java-kielen perusteita

Ohjelmistotuotanto s

Ohjelmoinnin perusteet Y Python

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

Testaaminen ohjelmiston kehitysprosessin aikana

Tietotyypit ja operaattorit

Python-ohjelmointi Harjoitus 2

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

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

Ohjelmoinnin peruskurssi Y1

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

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.

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

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

Laadunvarmistustekniikat

Ohjelmistotestauksen perusteita I Luento 1 Antti-Pekka Tuovinen

Algoritmit 2. Luento 8 To Timo Männikkö

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Convergence of messaging

Ohjelmoinnin perusteet Y Python

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

1. Omat operaatiot 1.1

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

Hohde Consulting 2004

7. Verifiointi ja validointi

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

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

11/20: Konepelti auki

Testaussuunnitelma Labra

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

Testauksen suunnittelu. Faculty of Science 30 April

Käyttötapausanalyysi ja testaus tsoft

UML -mallinnus TILAKAAVIO

Transkriptio:

Dynaaminen analyysi III Luento 8 Antti-Pekka Tuovinen 16 April 2013 1 Tavoitteet White box testitapausten suunnittelutekniikat Lausekattavuus Haarautumakattavuus Ehto- ja polkukattavuus Huomioita white box -tekniikoista 16 April 2013 2 1

White box -tekniikat Lause- ja haarautumakattavuus Ehtokattavuus Polkukattavuus 16 April 2013 3 Black box vs. White box Kurssikirjan kuva 5-2 s. 109 16 April 2013 4 2

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 vaatimukset 16 April 2013 5 White box tekniikoita testitapausten määrittelyyn Perustekniikat (ISTQB Foundation -taso) Lausekattavuus Valintakattavuus Edistyneemmät (ei käydä yksityiskohtaisesti läpi kurssilla) Ehtokattavuus Polkukattavuus 16 April 2013 6 3

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 16 April 2013 7 Kontrollivuoesimerkki Kurssikirja kuva 5-9, s. 144 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 16 April 2013 8 4

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? 16 April 2013 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 16 April 2013 10 5

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 16 April 2013 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 16 April 2013 12 6

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 16 April 2013 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? 16 April 2013 14 7

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 kaikkien mahdollisten lopputulosten evaluointiin 16 April 2013 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 16 April 2013 16 8

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? 16 April 2013 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 vastaavat testitapaukset tuottavat 100% haarautumakattavuuden (ja myös lausekattavuuden) Jotkin kaaret tulevat käydyksi läpi useampaan kertaan, mitä ei kuitenkaan voida välttää 16 April 2013 18 9

Testitapaukset Määritellään kuten tavallisesti Testioraakkelina edelleenkin vaatimukset, ei implentaatio Testitapauksiin on kuitenkin hyvä kirjata ylös, mitkä haarat tulevat suoritetuiksi Helpottaa vikojen löytämistä joissain tapauksissa esim. puuttuva koodi jostain (tyhjästä) haarasta 16 April 2013 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 16 April 2013 20 10

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 16 April 2013 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 16 April 2013 22 11

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 16 April 2013 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 16 April 2013 24 12

Ehtokattavuus Ehtokattavuustestauksesta on useita variaatiota riippuen siitä, minkälaisia atomisten ehtojen totuusarvojen kombinaatioita testataan Yksinkertainen ehtokattavuus Moniehtokattavuus Moniehtotuloskattavuus 16 April 2013 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 16 April 2013 26 13

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ä 16 April 2013 27 Moniehtotuloskattavuus (condition determination testing) Lievempi ehto atomisten ehtojen kombinaatioille ainoastaan sellaiset kombinaatiot on testattava, jotka vaikuttavat koko ehtolauseen evaluoinnin tulokseen 16 April 2013 28 14

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ä 16 April 2013 29 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 16 April 2013 30 15

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. 26-29), silmukan toistokertojen ollessa rajoitettu, kombinatorinen räjähdys voi tehdä kattavan testauksen mahdottomaksi 16 April 2013 31 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ä Polkukattavuuden testitapausten määrittely (tai sen yrittäminen) voi paljastaa vikoja valinta- ja toistolauseiden ehdoista 16 April 2013 32 16

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 16 April 2013 33 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 16 April 2013 34 17

Työkalut Työkalut laskevat automaattisesti kattavuudet pienentäen inhimillisten virheiden riskiä ja vähentäen manuaalisen työn määrää 16 April 2013 35 Tavoitteet White box testitapausten suunnittelutekniikat Lausekattavuus Haarautumakattavuus Ehto- ja polkukattavuus Huomioita white box -tekniikoista 16 April 2013 36 18