Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Usein aliohjelman kutsun tulos ei riipu pelkästään eksplisiittisistä syötteistä vaan myös moduulin tai olion tilasta (state). ● Tila määräytyy yleensä.

Samankaltaiset esitykset


Esitys aiheesta: "Usein aliohjelman kutsun tulos ei riipu pelkästään eksplisiittisistä syötteistä vaan myös moduulin tai olion tilasta (state). ● Tila määräytyy yleensä."— Esityksen transkriptio:

1 Usein aliohjelman kutsun tulos ei riipu pelkästään eksplisiittisistä syötteistä vaan myös moduulin tai olion tilasta (state). ● Tila määräytyy yleensä moduulin tms. aiemmasta historiasta. ● Testitapaukseksi tarvitaan peräkkäisten kutsujen sarja. Äärimmäisen yksinkertainen esimerkki: interface Simppeli { void aseta (int arvo); int lue (); } ● Metodin lue pitää palauttaa se luku, joka on ollut viimeksi metodin aseta kutsun parametrinä. ● Metodin lue pitää aiheuttaa poikkeus, jos metodia aseta ei ole vielä kutsuttu. ● Miten testataan luokkaa L, joka toteuttaa tämän liittymän? ● Voidaan olettaa, että käyttäytyminen on kaikille kokonaisluvuille samanlainen. Tilapohjainen mustalaatikkotestaus (1/8)

2 Ensimmäinen testitapaus: Simppeli olio = new L; int tulos = olio.lue (); Tämän pitää aiheuttaa poikkeus. Toinen testitapaus: final int nayte1 =...; Simppeli olio = new L; olio.aseta (nayte1); int tulos = olio.lue (); Tämän jälkeen pitää tietysti olla tulos == nayte1. Mahdollinen kolmas testitapaus toisen jatkona: tulos = olio.lue (); Pitää saada sama tulos. ● Metodi lue ei saa muuttaa olion tilaa. ● Esim. yhden elementin pino ei kelpaa. Tilapohjainen mustalaatikkotestaus (2/8)

3 Mahdollinen neljäs testitapaus, samoin toisen jatkona: final int nayte2 =...; olio.aseta (nayte2); tulos = olio.lue (); ● Tarkistetaan, että aseta vaikuttaa muulloinkin kuin ensimmäisellä kerralla. ● Viidentenä tapauksena voitaisiin testata tätä ilman ensimmäistä lue- metodin kutsua. ''Tilalla'' on erilaisia merkityksiä. ● Moduulin tms. kaikkien muuttujien arvojen yhdelmä. ● Jokin abstraktio tästä – ekvivalenssiluokka. ● Määritellään usein tilainvariantin avulla. ● Muuttujista muodostettu looginen lauseke (predikaatti). ● Kiinnostava on sellainen erottelu, että moduulin käyttäytyminen on eri tiloissa erilaista. ● Esim. kiinteänkokoisen pinon tilat: tyhjä (alkioita == 0), vajaa (alkioita > 0 && alkioita < max), täysi (alkioita == max). Tilapohjainen mustalaatikkotestaus (3/8)

4 Tilapohjaista käyttäytymistä kuvataan yleensä tilakaavioilla. ● Useita muunnelmia. ● Voidaan esittää myös taulukkomuodossa. Moduulin tai olion tilakaaviossa on ainakin neljänlaisia elementtejä: ● Tila ● Tapahtuma (event): ulkoinen syöte tai heräte, esim. metodin kutsu ● Siirtymä (transition): tapahtuman aiheuttama siirtyminen tilasta toiseen (tai samaan tilaan) ● Toiminto (action): siirtymään liittyvä muu toiminto (esim. toiselle oliolle lähetetty tapahtuma). Kaavio kertoo, mitkä tapahtumat ovat sallittuja missäkin tilassa sekä minkä siirtymän ja toiminnon kukin niistä aiheuttaa. ● Siirtymän täytyy määräytyä yksikäsitteisesti (deterministisesti). ● Esim. UML:n tilakaavioissa kuhunkin siirtymään voidaan lisäksi liittää ehto. ● Tällöin voi olla vaihtoehtoisia siirtymiä, jos ehdot ovat toisensa poissulkevia. Tilapohjainen mustalaatikkotestaus (4/8)

5 Tietyssä tilassa kelpaamattoman tapahtuman käsittelyn mahdollisuuksia: ● Jätetään kokonaan huomiotta. ● Aiheuttaa poikkeuksen tai muun erikoistoiminnon. ● Pannaan jonoon ja käsitellään myöhemmin, jos olio tulee sellaiseen tilaan, jossa tapahtuma on sallittu. ● UML jättää valinnan avoimeksi. Pinoesimerkki: Tilapohjainen mustalaatikkotestaus (5/8) Empty Full Loaded pop / EmptyStackException push(x) / FullStackException pop [n==1] / return top(x) push(x) pop [n>1] / return top(x) pop / return top(x) push(x) [n<max-1] push(x) [n==max-1]

6 ● Kaavion ehdot perustuvat pelkästään pinon atribuutteihin. ● Käyttäytymiseen vaikuttava olion tila on siis esitetty osittain kaavion tiloina, osittain siirtymien ehtoina. ● Tiloja voisi olla max+1, jolloin ehtoja ei tarvittaisi. ● Toinen ääripää: vain yksi kaavion tila ja enemmän ehtoja. ● Ei kovin hyödyllinen. Testitapaukset? ● Toinen ääripää: yritetään ottaa alkio tyhjästä pinosta. ● Toinen ääripää: täytetään pino (max panoa) ja yritetään panna siihen vielä yksi alkio. ● Pano- ja ottosarjoja, joiden ei pitäisi aiheuttaa poikkeusta. ● Kaikissa tapauksissa ei ehkä tutkita, onko saatu alkio oikea. Tilapohjainen mustalaatikkotestaus (6/8) pop [n==0] / EmptyStackException FullStackException pop [n>0] / return top(x) push(x) [n<max] push(x) [n>=max] /

7 Tilakaavioihin liittyviä yksinkertaisia testauksen kattavuuskriteerejä: ● Paloittainen kattavuus: kaikki tilat, kaikki tapahtumat, kaikki toiminnot. ● Liian heikkoja (Binder). ● Kaikki eksplisiittiset siirtymät (ts. kussakin tilassa sallitut tapahtumat). ● Paloittainen kattavuus seuraa tästä automaattisesti. ● Kaikki siirtymät (ts. kaikki tapahtumat kaikissa tiloissa). ● Suositellaan vähimmäisvaatimukseksi (Binder). Polkukattavuuskriteerejä: ● Kaikki N-siirtymäiset: jokainen mahdollinen N siirtymän sekvenssi käydään läpi ainakin kerran. ● Kaikki silmukat: jokainen mahdollinen silmukka (jostakin tilasta takaisin samaan tilaan toistamatta mitään siirtymää) käydään läpi ainakin kerran. ● Nämä ovat vahvempia vaatimuksia kuin kaikki siirtymät, mikäli kaavio on vahvasti yhtenäinen (jokaisesta tilasta on polku jokaiseen). Tilapohjainen mustalaatikkotestaus (7/8)

8 Raja-arvotestaus ● Jos tilat on määritelty tilainvarianttien avulla, niihin voi soveltaa samoja periaatteita kuin syötteen ekvivalenssiluokkiin. ● Puhtaassa mustalaatikkotestauksessa voi olla vaikeaa tai mahdotonta saada aikaan tilainvarianttien raja-arvoja. Sellaisia luokkia, joiden käyttäytyminen riippuu tilasta (historiasta), sanotaan modaalisiksi, muita luokkia ei-modaalisiksi. ● Testattavuuden kannalta olisi hyvä, että ohjelmistossa olisi mahdollisimman vähän modaalisia luokkia. ● Varmuuden vuoksi ei-modaalistakin luokkaa voidaan testata myös samanlaisilla metodinkutsusarjoilla kuin modaalista. ● Voi olla perusteita epäillä tietynlaisia toimintoketjuja virhealttiiksi. Tilapohjainen mustalaatikkotestaus (8/8)


Lataa ppt "Usein aliohjelman kutsun tulos ei riipu pelkästään eksplisiittisistä syötteistä vaan myös moduulin tai olion tilasta (state). ● Tila määräytyy yleensä."

Samankaltaiset esitykset


Iklan oleh Google