Staattinen testaus Dynaaminen testaus I Luento 3 Antti-Pekka Tuovinen

Samankaltaiset tiedostot
Dynaaminen analyysi I

Staattinen testaus. Luento 5 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Dynaaminen analyysi IV

Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

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

Dynaaminen analyysi III

Harjoitustyön testaus. Juha Taina

Dynaaminen analyysi II

Dynaaminen analyysi II Luento 4 Antti-Pekka Tuovinen

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Kontrollipolkujen määrä

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

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

Onnistunut Vaatimuspohjainen Testaus

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

58160 Ohjelmoinnin harjoitustyö

Testaussuunnitelma. Pizzeria - Pitseria HAAGA-HELIA ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma. WebPizza

Ohjelmistotestauksen perusteita Luento 1 Antti-Pekka Tuovinen

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

Lohtu-projekti. Testaussuunnitelma

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

Laadunvarmistustekniikat

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

Tapahtuipa Testaajalle...

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

Ohjelmistotestauksen perusteita II

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti

Testaaminen ohjelmiston kehitysprosessin aikana

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmiston testaus ja laatu. Testaustasot

Ohjelmistotuotanto s

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori

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

LAATU, LAADUNVARMISTUS JA f RISKIEN HALLINTA JOUNI HUOTARI ESA SALMIKANGAS PÄIVITETTY

Harjoitus 7: NCSS - Tilastollinen analyysi

Kuopio Testausraportti Asiakkaat-osakokonaisuus

Ohjelmistojen virheistä

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Algoritmit 1. Luento 3 Ti Timo Männikkö

Käyttötapausanalyysi ja testaus tsoft

Convergence of messaging

Tietojärjestelmän osat

Tietorakenteet ja algoritmit - syksy

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

Turvakriittisen projektin menetelmät ja työkalut

Ohjelmoinnin perusteet Y Python

Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy

Ohjelmistotuotantoprojekti

Ohjelmistojen suunnittelu

Mihin kaikkeen voit törmätä testauspäällikön saappaissa?

Testaussuunnitelma Labra

T SEPA - STAATTISET MENETELMÄT Tuomas Tolvanen, 55382U Timo Töyry, 58578B

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Ohjelmistotestauksen perusteita I Luento 1 Antti-Pekka Tuovinen

Ohjelmistotestaus -09

Katselmoinnit. review) Katselmoinnit (review( Mitä ovat katselmoinnit? Katselmoinnin määritelmä (IEEE 1988)

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Uudelleenkäytön jako kahteen

tsoft Tarkastusmenettelyt ja katselmukset Johdanto Vesa Tenhunen

TAMPEREEN TEKNILLINEN YLIOPISTO

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

UCOT-Sovellusprojekti. Testausraportti

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Ohjelmistojen mallintaminen, mallintaminen ja UML

Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy

Ohjelmiston testaus ja laatu. Testaus yleistä

Testausprosessin vaatimukset. 2. Testausprosessi (Artikkelit) Vesiputousmallin ongelmia. V-mallin neljä osavaihetta. Testausprosessimalli V-malli

Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi

Menetelmäraportti Ohjelmakoodin tarkastaminen

T Testiraportti - integraatiotestaus

Testiautomaatio tietovarastossa. Automaattisen regressiotestauksen periaate ja hyödyt

Ohjelmistojen testaus

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0

TIE Ohjelmistojen testaus 2016 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori

Katselmoinnin määritelmä. Katselmoinnit osa 1. ja vielä ajatuksia katselmoinneista. Katselmointi. Katselmointi, katselmus (review) IEEE Std

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmistotuotteen hallinnasta

Tietorakenteet ja algoritmit

Yksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Automaattinen yksikkötestaus

Testaussuunnitelma. PUSU-ryhmä. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Arviointi ja mittaaminen

SEPA: Staattiset menetelmät Timo Sallinen, 51134F & Risto Kunnas, 50498T. Sisällysluettelo. 1 Johdanto. 2 SEPA harjoittelu käytännössä.

T Testiraportti - järjestelmätestaus

TESTIRAPORTTI - XMLREADER-LUOKKA Virtuaaliyhteisöjen muodostaminen Versio 1.0 (luonnos 2)

Ohjelmistotuotanto, verifiointi ja validointi Syksy Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi

Ohjelmiston toteutussuunnitelma

Santeri Saarinen Korjattu testaustasoja ja tehty tarkennuksia I1-testaukseen

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

Transkriptio:

Staattinen testaus Dynaaminen testaus I Luento 3 Antti-Pekka Tuovinen 25 March 2018 1

Oppimistavoitteet Staattinen testaus Katselmoinnit Ohjelmakoodin ja spesifikaatioiden staattinen analyysi Dynaaminen testaus I Testitapausten suunnittelun lähtökohdat Black-box ja White-box (tai Glass-box ) Black-Box -testien suunnittelumenetelmiä Ekivalenssiluokat Raja-arvo analyysi 25 March 2018 2

Staattinen testaus 25 March 2018 3

Staattinen testaus Testauksen kohdetta ei suoriteta, vaan sitä tutkitaan ihmismielen ja analyysityökalujen avulla Mitä tahansa kehitysprojektin tuotosta voidaan tutkia manuaalisesti Tavoitteena on nostaa tutkittujen artefaktien (dokumentit, koodi) laatua ja poistaa vikoja mahdollisimman aikaisessa vaiheessa Ongelmien ennaltaehkäisy 25 March 2018 4

Katselmoinnit 25 March 2018 5

Katselmoinnit Käytetään ihmisten analyyttisiä kykyjä mutkikkaiden asioiden arviointiin ja tarkastamiseen Asiantuntijat tutkivat huolellisesti katselmoitavan artefaktin (dokumentti, koodi, suunnitelma tms.) ja yrittävät ymmärtää sen ja löytää siitä ongelmia Löydösten läpikäynti ja johtopäätösten tekeminen on ryhmätyötä, jossa monet eri näkökulmat yhdistyvät 25 March 2018 6

Katselmoinnit Katselmointi (review) on yleistermi ihmisten tekemälle kaikenlaisten artefaktien arvioinnille Sopimukset, vaatimusmäärittelyt, ohjelmakoodi, testaussuunnitelmat, manuaalit jne Tarkastus (inspection) on erityinen muodollinen katselmointi, jolla on omat sääntönsä Katselmoijat ovat yleensä saman työyhteisön jäseniä, joten katselmoinneista käytetään usein engl. termiä peer review (= vertaisarviointi) 25 March 2018 7

Katselmoinnin hyödyt Vikojen vähentäminen, kuten testauksessa yleensä Aikainen vikojen löytyminen vähentää tarvetta analysointiin ja korjauksiin myöhemmin projektissa Kehitysaika lyhenee Koska ohjelmistossa on vähemmän vikoja, dynaamista testausta tarvitsee tehdä vähemmän (uudelleentestaus, regressiotestaus) Kustannukset laskevat koko elinkaaren ajalla Mahdollisuus löytää vikoja, jotka eivät paljastu muilla (dynaamisilla) testaustavoilla Tekninen velka, huono ylläpidettävyys, riskialtis koodi 25 March 2018 8

Katselmoinnin hyödyt Vähemmän käytön aikaisia häiriöitä Organisaatio oppii Tekijät oppivat parantamaan työskentelyään Tieto tulevasta katselmoinnista saa tekijän tuottamaan selkeän dokumentin ja huomaamaan itsekin puutteita Katselmointiin osallistuva ryhmä muodostaa yhteisen näkemyksen dokumentin kuvaamasta asiasta ja tuntee yhteistä vastuuta siitä Kustannukset 10-15% projektin kuluista, säästö 14-25% (katselmoinnit mukaan laskien) 25 March 2018 9

Katselmoinnin kulku Prosessikaavio ja yleiskuvaus IEEE 1028-1997 Standard for Software Reviews standardin mukaan (kurssikirjan teksti perustuu samaan) http://www.the-software-experts.de/e_dta-sw-testinspection.htm Monivaiheinen ja suhteellisen raskas menetelmä Vaatii aikaa ja resursseja 25 March 2018 10

Katselmointien ongelmia Asiantuntijoiden saatavuus Katselmointeihin ei varata tarpeeksi aikaa tai tulee muuten kiire, jolloin katselmoinnin teho kärsii Väärien katselmoijien valinta Ei ehdi, ei osaa, ei kiinnosta Dokumentaation puutteet Johdon puuttuva tuki Resurssointi, tulosten hyödyntäminen 25 March 2018 11

Katselmointityyppejä Katselmoinnit jaetaan raskautensa mukaan seuraaviin ryhmiin Tarkastukset (inspection) Tekninen katselmointi (technical review) Läpikäynnit (walkthrough) Epämuodollinen katselmointi (informal review) 25 March 2018 12

Tarkastus Kaikkein muodollisin katselmointi Yksityiskohtaiset säännöt ja tarkistuslistat Huolellisesti valitut osallistujat, jotka voivat tarkastella asiaa eri näkökulmista Keskittyy etukäteen päätettyihin asioihin tarkastuksen kohteessa Perusteellinen valmistautuminen ennen katselmointikokousta 25 March 2018 13

Tekninen katselmointi Pääasioina tarkastuksen kohteen Verifiointi spesifikaation suhteen Soveltuvuuden arviointi käyttötarkoitukseensa Standardien mukaisuuden arviointi Katselmoijien valintaperusteena tekninen pätevyys Myös projektin ulkopuolelta on hyvä olla joku asiantuntija mukana Suurin työ tehdään valmistautumisvaiheessa, katselmointikokouksessa kirjataan löydökset Tekijä itse ei osallistu katselmointikokoukseen 25 March 2018 14

Läpikäynti Epämuodollinen katselmointi, jossa tekijä esittelee katselmoinnin kohteen ryhmän arvioitavaksi tavoitteena Poikkeavuuksien löytäminen (anomaliat) Laadun parantaminen Vaihtoehtoisten ratkaisujen löytäminen Standardien ja spesifikaatioiden mukaisuuden arviointi Tärkeimpien käyttötapausten simulointi Tekijä toimii moderaattorina Sopii pienille tiimeille, ei vaadi valmistautumista eikä jälkitöitä 25 March 2018 15

Epämuodollinen katselmointi Katselmoinnin kevytversio Usein katselmoinnin kohteen tekijä itse kutsuu osallistujat ja pyytää heiltä kommentit tiettyyn ajankohtaan mennessä Katselmointikokousta ei välttämättä järjestetä, vaan kukin osallistuja toimittaa havaintonsa tiedoksi tekijälle Nettityökaluja esimerkiksi koodin katselmointiin Yleinen katselmoinnin muoto, jossa on matala osallistumiskynnys Pariohjelmointi, kaveritestaus 25 March 2018 16

Huomioita Katselmointia on monenlaista ja eri tyyppien väliset rajat ovat häilyvät Samoja termejä käytetään eri tarkoituksissa Katselmointikäytännöt räätälöidään organisaation tarpeiden ja katselmoinnin kohteen mukaan Virtuaalikatselmoinnit ja on-line kokoukset helpottavat hajautettujen organisaatioiden toimintaa Kun kehittäjät tutkivat myös toistensa työn tuloksia, vikoja yleensä huomataan enemmän Pariohjelmointi on tavallaan jatkuvaa parikatselmointia 25 March 2018 17

Staattinen analyysi 25 March 2018 18

Staattinen analyysi Kuten katselmoinneissa, tarkoituksena on löytää vikoja tai vioille alttiita kohtia tarkasteltavasta artefaktista ajamatta/kokeilematta sitä Kohteena on lähdekoodi, malli, määrittely jne. Analysointiin käytetään automaattisia työkaluja eli algoritmisia menetelmiä käsin tehtävän analyysin sijaan Analysoitavuus edellyttää, että kohde on koodattu jollain formaalilla kielellä, jota voi automaattisesti käsitellä (Java, XML, UML ) Analyysityökaluja voidaan käyttää myös mittausten tekemiseen kohteesta laadun arvioimiseksi Mittausten tulokset vaativat aina tulkintaa Esimerkki kaupallisesta analysointituotteesta: http://www.castsoftware.com/products/application-intelligenceplatform 25 March 2018 19

Staattinen analyysi Staattinen analyysi ei voi löytää kaikkia vikoja Teoreettinen mahdottomuus (yleisessä tapauksessa) Staattisella analyysillä voidaan kuitenkin löytää seuraavanlaisia potentiaalisesti ongelmallisia rakenteita Syntaksivirheet Poikkeamat koodauskäytännöistä ja standardeista Kontrollivuon poikkeavuudet Datavuon poikkeavuudet Eräät tietoturvan/suorituskyvyn/ylläpidettävyyden kannalta vaaralliset/haitalliset koodirakenteet 25 March 2018 20

Kääntäjä analyysityökaluna Kääntäjä löytää ohjelmasta syntaksivirheet ja muut ohjelmointikielen kieliopin mukaan virheelliset ilmaisut Näiden lisäksi kääntäjä tekee muitakin tarkistuksia ja tuottaa paljon informaatiota Tyyppitarkistukset kielestä riippuen (staattinen tyypitys, tyyppien päättely) Määrittelemättömät ja alustamattomat muuttujat Saavuttamaton koodi jne 25 March 2018 21

Datavuoanalyysi Analysoidaan datan käyttöä eri suorituspoluilla ohjelmayksikön läpi Voidaan havaita erikoisia datan käyttötilanteita (anomaly), jotka voivat johtaa virheelliseen suoritukseen tai sitten ei Tarkastellaan esimerkiksi muuttujien käyttöä ohjelmassa Undefined (u) muuttujan arvo määrittelemätön Defined (d) muuttujalle annetaan arvo (sijoitus) Referenced (r) muuttujan arvoa käytetään 25 March 2018 22

Datavuoanalyysi Anomaliat UR arvoltaan määrittelemättömän (u) muuttujan arvoa käytetään (r) jollain suorituspolulla DU muuttujalle annetaan arvo (d), jota ei käytetä kertaakaan ennen sen muuttumista määrittelemättömäksi (u) DD muuttujalle annetaan uusi arvo (d) ilman, että sen edellistä arvoa on välillä käytetty 25 March 2018 23

Datavuoanalyysi Kurssikirjan esimerkki luvussa 4.2.3 Datavuoanalyysin löytämät anomaliat eivät välttämättä johda ohjelman virheelliseen käyttäytymiseen, mutta löydökset kannattaa joka tapauksessa tutkia 25 March 2018 24

Kontrollivuoanalyysi Ohjelman kontrollivuoverkosta voi helposti nähdä riskialttiita rakenteita Hypyt pois silmukan keskeltä Monimutkaiset, sisäkkäiset valintarakenteet Monta erilaista tapaa poistua rakenteesta (return) A 1 2 3 4 B C D E 5 G F 25 March 2018 25

Kompleksisuusmetriikat McCabe cyclomatic number v(g) = e n +2 e = verkon kaarien lukumäärä n = verkon solmujen lukumäärä A 1 2 3 4 B C D E F 5 G 25 March 2018 26

Kompleksisuusmetriikat McCabe:n luku voi osoittaa kohtia ohjelmasta, joiden testaukseen kannattaa kiinnittää enemmän huomiota Yleisestä trendistä poikkeavat tapaukset tutkittava Puuttumiskynnys (raja-arvo) haettava kokemuksen kautta (10, 15, 20,?) Muunkinlaisia metriikoita on kehitetty ja niiden tilastollista yhteyttä löydettyihin vikoihin on analysoitu Kts. Ohjelmistoprosessit ja ohjelmistojen laatu -kurssi Kompleksisuusmetriikat eivät ole absoluuttista laadun mittareita! 25 March 2018 27

Dynaaminen testaus 25 March 2018 28

Dynaaminen testaaminen Ohjelman tai ohjelman osan (test object) suorittamista Tunnetuissa olosuhteissa Tietyillä syötteillä Todeten, vastaako saatu tulos odotettua tulosta 25 March 2018 29

Testien suunnittelu Tuloksellinen ohjelman tai sen osan testaus vaatii järjestelmällistä ja vaiheittaista työtapaa Kiinnitä testin tavoitteet ja reunaehdot Määrittele yksittäiset testitapaukset Päätä, miten testi suoritetaan (automatisointi, testipeti) Muodollisuuden ja dokumentaation määrä sekä automaation aste riippuvat Sovellusalueesta, prosessikäytännöistä, aikarajoitteista, osaamisesta ja teknologisesta valmiudesta jne. 25 March 2018 30

Testin tavoitteet ja reunaehdot Mitä pitää testata ja miten? Testausstrategia Vaatimusten täyttymisen osoittaminen Esiehdot ja olosuhteet Esim. testidatan saatavuus Jäljitettävyys Mitä vaatimuksia testit koskevat? 25 March 2018 31

Testitapausten määrittely Syötteiden (test input) määrittely Esi- ja jälkiehdot ennen ja jälkeen testitapauksen suorituksen Odotetun tuloksen/käyttäytymisen määrääminen 25 March 2018 32

Testitapausten suunnittelutekniikat Suunnittelutekniikat jaetaan kahteen peruskategoriaan Black-box eli musta laatikko -tekniikat White-box eli lasilaatikko tekniikat (joskus myös Glass-box) 25 March 2018 33

Black-box Testitapausten suunnittelu perustuu testin kohteen spesifikaatioon Toiminnot, käyttäytyminen Testin kohteen rakennetta ja implementaatiota ei oteta huomioon Testin kohteesta nähdään vain sen ulkoinen käyttäytyminen ja sen tuottamat tulokset annetuilla syötteillä, ei sen sisäistä tilaa (Point of Observation) Kohteen käyttäytymistä voidaan kontrolloida vain syötteillä (Point of Control) 25 March 2018 34

White-box Testin kohteen sisäisen toteutuksen huomioon ottava tekniikka Kontrolli- ja datavuot Kohteen sisäistä tilaa havainnoidaan ja sitä voidaan manipuloida testin suorituksen aikana Tavoitteena testin kohteen rakenteen kattava testaus 25 March 2018 35

Black box vs. White box [4] Andreas Spillner, Tilo Linz, Hans Schaefer: Software testing foundations - a study guide for the certified tester exam : foundation level, ISTQB compliant, 4th Edition. Santa Barbara, CA : Rocky Nook, Inc., 2014. 25 March 2018 36

Black box vs. White box Black box -tekniikat sopivat kaikkien testaustasojen testien suunnitteluun White box -tekniikat sopivat paremmin komponentti- ja integraatiotestien suunnitteluun 25 March 2018 37

Black box -tekniikat Ekvivalenssiluokkiin jako Raja-arvo analyysi 25 March 2018 38

Ekvivalenssiluokkiin jaon lähtökohdat Testin suunnittelun perusteena on testin kohteen toiminnallinen määrittely Syötteet, tulosteet, ulkoisesti havaittava käyttäytyminen Kurssin alussa nähtiin, että pienenkin funktion täydellinen testaaminen sen kaikilla mahdollisilla syötteillä on mahdotonta Testien suunnittelijan on valittava järkevä joukko syötteitä testitapauksiinsa Määrä ja (oletettu) kyky löytää vikoja 25 March 2018 39

Ekvivalenssiluokkiin jaon perusidea Jokaisen syötteenä olevan erillisen parametrin tai syöte-elementin koko arvoalue jaetaan ekvivalenssiluokkiin Jaon perusteena on oletus, että testin kohde käsittelee kaikki samaan ekvivalenssiluokkaan kuuluvat arvot samalla tavoin - esimerkiksi Tuottaa tulosarvon käyttäen samaa laskentakaavaa Antaa virheilmoituksen väärästä syötteestä 25 March 2018 40

Ekvivalenssiluokkiin jaon perusidea Testattaviksi syötearvoiksi riittää siis valita vain yksi edustaja kustakin ekvivalenssiluokasta Testin suorittaminen jollain toisella saman ekvivalenssiluokan arvolla ei aiheuta oleellisesti erilaista testikohteen reaktiota tai käyttäytymistä Myös epävalidit eli väärät syötteet täytyy jakaa ekvivalenssiluokkiin! 25 March 2018 41

Ekvivalenssiluokkiin jako Esimerkki kurssikirja, luku 5.1.1 25 March 2018 42

Ekvivalenssiluokkien määrittely 1. Vaihe syötteiden ekvivalenssiluokiin jako Määritetään jokaisen syöte-elementin (parametrin, syötekentän) mahdollisten arvojen alue (input domain) Arvoalue jaetaan alustavasti kahteen ekvivalenssiluokkaan Oikeat syötteet, jotka testin kohde käsittelee spesifikaationsa mukaan Väärät syötteet 25 March 2018 43

Ekvivalenssiluokkien määrittely 2. Vaihe ekvivalenssiluokkien tarkentaminen Tutkitaan testin kohteen spesifikaatiota tarkemmin, ja jokaista eri tavalla käsiteltävää syötearvojoukkoa kohden määritellään uusi ekvivalenssiluokka Kun jako ei enää tarkennu, valitaan kustakin ekvivalenssiluokasta yksi arvo luokan edustajaksi eli testitapauksissa käytettäväksi konkreettiseksi syötearvoksi myös luokan raja-arvot on syytä testata Testitapausten laatu eli kyky löytää virheitä riippuu siitä, miten hyvin eri ekvivalenssiluokat on tunnistettu ja miten luokkien edustajat on valittu 25 March 2018 44

Ekvivalenssiluokkien määrittely Esimerkki kurssikirjasta s. 116-119 (luku 5.1.1) 25 March 2018 45

Joukkojen ja diskreettien arvoalueiden ekvivalenssiluokat Ekvivalenssiluokat primitiivisille tietotyypeille löytyvät yleensä melko helposti (esim. luvuille) Syötteenä voi olla myös rakenteisia olioita ja dataa tai joukkojen alkioita Ekvivalenssiluokat pitää tällöin määritellä tapauskohtaisesti järkevällä tavalla Syöteolioiden niitten ominaisuuksien (property, attribute) perusteella, jotka vaikuttavat olion käsittelyyn testin kohteessa Esim. matkustajan alennusryhmän vaikutus matkan hinnan laskentaan 25 March 2018 46

Testitapausten määrittely Testin kohteella on yleensä useita syötteitä (parametreja), joista jokaisella on vähintään kaksi ekvivalenssiluokkaa (validit ja väärät syötteet) ja jokaisella luokalla yksi tai useampi edustaja Konkreettisissa testitapauksissa jokaiselle eri syöteparametrille pitää antaa jokin arvo Täytyy siis valita, mitkä erillisten syötteiden ekvivalenssiluokkien edustajat yhdistetään testitapausten syötteiksi 25 March 2018 47

Syötekombinaatioiden valinnan perussäännöt Kaikki valideja syötteitä edustavien ekvivalenssiluokkien edustajien kombinaatiot on testattava Positiiviset eli validit testitapaukset 25 March 2018 48

Syötekombinaatioiden valinnan perussäännöt Jokainen ei-validi eli vääriä syötteitä edustava ekvivalenssiluokka on myös testattava, mutta niiden edustajia ei saa yhdistää toisten ei-validien luokkien edustajien kanssa Valitaan siis jokin positiivinen testitapaus, johon vaihdetaan täsmälleen yksi väärä syöte, jolloin saadaan negatiivinen eli ei-validi testitapaus Jos vääriä syötteitä on useita, voi olla vaikea todentaa, minkä syötteen käsittely aiheuttaa havaitun virheilmoituksen tai poikkeuksen Jokin poikkeuskäsittely voi myös jäädä testaamatta! 25 March 2018 49

Kombinaatioiden määrän hallinta Jos syöteparametreja on useita ja valideja ekvivalenssiluokkia on monta, kombinaatioiden määrä kasvaa nopeasti Määrää voidaan rajoittaa seuraavilla heuristiikoilla Järjestetään ja priorisoidaan kombinaatiot k.o. tapausten oletetun esiintymistiheyden mukaan (tyypilliset tapaukset testataan) Suositaan ekvivalenssiluokkien raja-arvoja sisältäviä kombinaatioita Tarkastellaan parametreja pareittain ja valitaan niiden ekvivalenssiluokkien edustajien kaikki pariyhdistelmät sisältävät kombinaatiot Jokaisen ekvivalenssiluokan jokainen edustaja on vähintään yhdessä testitapauksessa mukana 25 March 2018 50

Testauksen lopetusehto Ekvivalenssiluokkien avulla voidaan määritellä testauksen lopetusehto EL-kattavuus = (testattujen EL:ien lukumäärä / EL:ien kokonaismäärä) * 100 % 25 March 2018 51

Ekvivalenssitekniikan arviointia Ekvivalenssiluokkien määrittely on kriittinen tekijä testitapausten tehon kannalta Puutteellinen analyysi voi jättää luokkia löytymättä Johtaa vaatimuksissa esiintyvien ehtojen ja rajoitusten kattavaan testaukseen Minimoi turhia testitapauksia (kustakin ekvivalenssiluokasta poimitaan vain muutama edustaja) Voidaan soveltaa kaikilla testaustasoilla Ei ota huomioon riippuvuuksia ja vuorovaikutuksia eri syöteparametrien välillä Voidaan käsitellä tulosteiden ekv.-luokkien kautta 25 March 2018 52

Raja-arvo analyysi Ekvivalenssiluokkia täydentävä tekniikka Lähtökohtana havainnot, joiden mukaan vikoja esiintyy usein ekvivalenssiluokkien rajoilta peräisin olevilla syötearvoilla Rajoja ei ole ehkä määritelty selvästi Ohjelmoija on ymmärtänyt väärin, missä luokkien rajat kulkevat Loogisten lausekkeiden koodausvirheet Ei voida käyttää parametreille, joiden e-luokilla ei ole reuna-alkioita (joukot) 25 March 2018 53

Raja-arvo analyysi Jos e-luokalla on tunnistettava raja (reuna-alkio), testataan 1) Raja-arvolla 2) Raja-arvoa lähimpänä olevalla samaan e-luokkaan kuuluvalla arvolla 3) Raja-arvoa lähimpänä olevalla e-luokan ulkopuolisella arvolla Jos varsinaista raja-arvoa ei ole olemassa, testataan 2) ja 3) Liukulukuarvoille täytyy määritellä tarkkuus (pienin arvon muutos), jolla raja-arvotestaus tehdään 25 March 2018 54

Vinkkejä raja-arvo analyysiin Syötteen pituus on rajoitettu 1 ja 100 alkion välille; testataan 1, 100, 0 ja 101 alkion mittaisilla syötteillä Jos testin kohteen tuottamalla tuloksella (output) on tietty arvoalue rajoineen, kannattaa yrittää löytää syötteet, jotka tuottavat raja-arvot sekä niiden lähimmät arvot Järjestettyjen kokoelmien ensimmäiset ja viimeiset alkiot ovat kiinnostavia Tyhjät kokoelmat ja taulukot ovat hyviä syötteitä Samoin täydet kokoelmat ja taulukot 25 March 2018 55

Vinkkejä raja-arvo analyysiin Hyvin suuret syötteenä annettavat tietorakenteet ja datamäärät testaavat kohteen käsittelykapasiteetin rajoja Hyvin lähellä toisiaan olevat arvot sekä toisistaan hyvin kaukana olevat arvot testaavat numeeristen funktioiden erottelukykyä 25 March 2018 56

Testauksen lopetusehto RA-kattavuus = (testattujen RA:jen lukumäärä / RA:jen kokonaismäärä) * 100 % 25 March 2018 57

Raja-arvo analyysin arviointia Hyvin tehokas menetelmä yhdessä ekvivalenssiluokkien kanssa käytettynä Vikojen löytymisen todennäköisyys on suurin rajatapausten käsittelyssä Raja-arvot ja niiden lähimmät arvot riittävät teoriassa e-luokkien edustajiksi Tekniikka vaikuttaa yksinkertaiselta, mutta syötearvojen määrittely ei ole aina helppoa rajatapausten käsittelyn liipaisemiseksi testikohteessa 25 March 2018 58