testauksen suunnittelu - helsinki

41
www.cs.helsinki.fi Testauksen suunnittelu 30 April 2018 Faculty of Science Department of Computer Science 21

Upload: others

Post on 07-Apr-2022

4 views

Category:

Documents


0 download

TRANSCRIPT

www.cs.helsinki.fi

Testauksen suunnittelu

30 April 2018Faculty of ScienceDepartment of Computer Science 21

www.cs.helsinki.fi 30 April 2018 22Faculty of ScienceDepartment of Computer Science

Testauksen suunnittelu

§ Testaus on (usein tärkein tai jopa ainoa)osa laadunvarmistusta (quality assurance)§ Testauksella saadaan analyyttistä, konkreettista

dataa ohjelmiston laadusta ja laadun kehittymisestäprojektin aikana

§ Testaussuunnitelma on osalaatusuunnitelmaa (QA plan)

www.cs.helsinki.fi 30 April 2018 23Faculty of ScienceDepartment of Computer Science

Testauksen suunnittelu

§ Suunnitteluun sisältyy seuraavia toimia§ Testaussuunnitelman tekeminen§ Testien priorisointi§ Testin aloitus- ja lopetusehtojen määrittely§ Miljoonan taalan kysymys: milloin on testattu

tarpeeksi?

www.cs.helsinki.fi 30 April 2018 24Faculty of ScienceDepartment of Computer Science

Testaussuunnitelma

§ IEEE 829-1998 –standardi antaa mallintestisuunnitelman sisällölle§ Kurssikirjassa liite A§ Standardi ISO/IEC/IEEE 29119 korvaa tämän§ Testauksen yleissuunnittelu

§ Testausstandardeja on kritisoitu paljonkaavamaisuudesta ja yleisestä raskaudesta§ Ne ovat toisaalta suosituksia, eivät pakollisia

käyttää

www.cs.helsinki.fi 30 April 2018 25Faculty of ScienceDepartment of Computer Science

Testien priorisointi

§ Kävi projektin aikataulun ja rahoituksenkanssa miten kävi, testit on priorisoitavaniin, että tärkeimmät testit tulevat ainasuoritetuksi

§ Priorisointiperusteita§ Toimintojen odotettu käyttötiheys ja virheiden

todennäköisyys käytön aikana§ Vikariski = vian vakavuus x todennäköisyys§ Vikojen näkyvyys käyttäjälle

www.cs.helsinki.fi 30 April 2018 26Faculty of ScienceDepartment of Computer Science

Testien priorisointi

§ Priorisointiperusteita (jatkuu)§ Laatuvaatimusten painotukset ja tärkeys asiakkaalle§ Toiminnon/ominaisuuden arvo käyttäjälle ja/tai

liiketoiminnalle§ Implementaation kannalta kriittiset komponentit ja

toiminnot§ Ohjelman osien kompleksisuus§ Ohjelman osat, joihin liittyy suuri projektiriski

§ Epäselvät vaatimukset, alihankkijan kyky toimittaa,kehitysorganisaation kyvyt, uusien teknologioiden käyttö,käytettävien ulkoisten ohjelmistokomponenttien jaohjelmistokehysten laatu jne. jne.

www.cs.helsinki.fi 30 April 2018 27Faculty of ScienceDepartment of Computer Science

Testien priorisointi

§ Priorisointia on oltava valmis muuttamaanprojektin kuluessa§ Vioilla on tapana kasaantua§ Paljon vikoja sisältäneiden testikohteiden

testitapausten prioriteettia on syytä nostaa

www.cs.helsinki.fi 30 April 2018 28Faculty of ScienceDepartment of Computer Science

Testien aloitus- ja lopetusehdot

§ Tiettyjen edellytysten on yleensä oltavavoimassa, ennen kuin testausta voidaanaloittaa§ Testausympäristö on olemassa ja valmiina käyttöön§ Testaustyökalut ovat käyttövalmiina

testausympäristössä§ Testin kohde on asennettu ja valmiina§ Testin tarvitsema data on saatavilla

§ Ehdot pitää kirjata testisuunnitelmaan

www.cs.helsinki.fi 30 April 2018 29Faculty of ScienceDepartment of Computer Science

Testien aloitus- ja lopetusehdot

§ Testauksen lopetusehtojen eksplisiittinenmäärittely auttaa torjumaan seuraavia riskejä§ Ilman selkeitä kriteereitä testauksen lopettamisesta

päätetään epäjohdonmukaisin ja satunnaisinperustein

§ Vältetään liika testaaminen, joka johtuu siitä, etteitiedetä, mitä testauksella tavoitellaan

www.cs.helsinki.fi 30 April 2018 30Faculty of ScienceDepartment of Computer Science

Yleisiä lopetuskriteereitä

§ Testikattavuus§ Kuinka monta testitapausta on suoritettu onnistuneesti,

kuinka monta vaatimusta on testattu, mikäkoodikattavuus on saavutettu

§ Tuotteen laatu§ Löydettyjen vikojen määrä, vikojen kriittisyys, vikojen

löytymistahti, luotettavuus jne.§ Jäännösriski§ Suorittamattomien testien määrä, korjaamattomat viat,

epätäydellinen kattavuus§ Taloudelliset rajoitteet§ Kulut, projektiriski, toimitusaikataulu, markkinatilanteen

muutokset

www.cs.helsinki.fi

Kustannukset,Testausstrategia,Testausaktivteetit

30 April 2018Faculty of ScienceDepartment of Computer Science 31

www.cs.helsinki.fi 30 April 2018 32Faculty of ScienceDepartment of Computer Science

Testauksen kustannukset

§ Testaus voi viedä suuren osanohjelmistoprojektin budjetista (jopa ~50%)

§ Jotta testauksen käytetyt resurssit ja aikaosataan asettaa oikealle tasolle, onymmärrettävä mitä kustannuksia testauksessalöytymättä jääneet viat voivat aiheuttaa

www.cs.helsinki.fi 30 April 2018 33Faculty of ScienceDepartment of Computer Science

Vikojen aiheuttamatkustannukset

§ Suorat kustannukset§ Asiakkaan liiketoimintaprosessille välittömästi

aiheutuvat kulut ja tappiot virhetoiminnoista(taloudelliset tappiot ja suoranaiset vahingot laitteilleja henkilöstölle); menetetty liikevaihto

§ Uusien, korjattujen ohjelmistoversioidenasennuksesta, käyttöönotosta jauudelleenkoulutuksesta aiheutuvat menot

www.cs.helsinki.fi 30 April 2018 34Faculty of ScienceDepartment of Computer Science

Vikojen aiheuttamatkustannukset

§ Epäsuorat kustannukset (asiakkaannäkökulmasta)§ Ohjelmiston toimittajalle aiheutuvat suorat kulut

(sopimussakot, hinnan alennukset, käyttäjätuenkysynnän kasvu)

§ Vahingot liiketoiminnalle; asiakkaiden ja maineenmenetys, oikeudelliset kulut ja seuraamukset

§ Vikojen korjaamisen kustannukset§ Toimittajan tekemän lisätyön hinta (vikojen jäljitys ja

korjaus, testaus, uusien versioiden jakelu ja asennus)§ Resurssien (usein parhaiden) sitoutuminen

korjaustyöhön uuden kehittämisen sijaan

www.cs.helsinki.fi 30 April 2018 35Faculty of ScienceDepartment of Computer Science

Testauksen kulut

§ Moni tekijä vaikuttaa testauksen hintaan§ Kehitysprosessin kypsyys (organisaation vakaus,

tekemisen ennustettavuus)§ Ohjelmiston laatu ja testattavuus§ Testausinfrastruktuuri§ Henkilöstön osaaminen§ Laatuvaatimukset§ Testausstrategia§ Testauspäällikkö ei juuri voi vaikuttaa kuin

testausstrategiaan ja jossain määrininfrastruktuuriin ja henkilövalintoihin

www.cs.helsinki.fi 30 April 2018 36Faculty of ScienceDepartment of Computer Science

Testauksen työmäärän jakustannusten arviointi

§ Kustannuksia voi yleisesti arvioida kahdellatavalla§ Jakamalla koko testaustyö erillisiin tehtäviin ja

pyytämällä tehtävien vastuuhenkilöitä ja/taiasiantuntijoita arvioimaan työmäärää ja muitakustannuksia

§ Käyttämällä aiemmista projekteista kertynyttä dataatyömääristä ja kuluista arvioinnin pohjana

§ Jälkimmäinen tapa tuottaa yleensä parempiaarvioita, koska testauksen vaatima työmääräyleensä aliarvioidaan!

www.cs.helsinki.fi 30 April 2018 37Faculty of ScienceDepartment of Computer Science

Testausstrategia ja kustannukset

§ Testausstrategian tavoitteena on§ Optimoida testauksen kustannukset suhteessa

löytymättömien virheiden aiheuttamiin kustannuksiin§ Minimoida riskit

§ Käytännössä laskelmien tekeminen voi ollavaikeaa puuttuvan kokemusperäisen datantakia

§ Strategiapäätökset tehdään usein pikemminkinintuition kuin rationaalisen tiedon varassa

www.cs.helsinki.fi 30 April 2018 38Faculty of ScienceDepartment of Computer Science

Testausstrategia

§ Ennaltaehkäisevä vs. reaktiivinen§ Ennaltaehkäisevässä lähestymistavassa testaajat ovat

mukana projektin alusta alkaen, jolloin testauksensuunnittelussa voidaan antaa riittävästi painoaaikaisessa vaiheissa tehtäville katselmoinneille jaanalyyseille

§ Reaktiivisessa toimintatavassa testauksen suunnittelutulee mukaan vasta ohjelman toteutuksen ollessa jopitkällä; tässä tapauksessa tutkiva testaus voi olla parasja ainoa toimiva strategia

§ Ennaltaehkäisevä toiminta on kuitenkinkustannustehokkainta koko ohjelmiston elinkaartaajatellen

www.cs.helsinki.fi 30 April 2018 39Faculty of ScienceDepartment of Computer Science

Testausstrategia

§ Analyyttinen vs. heuristinen menetelmä§ Analyyttinen testauksen suunnittelu yrittää kvantifoida

kustannukset ja kulut sekä niiden väliset riippuvuudetja tuottaa optimoidun strategian laskelmien avulla

§ Heuristinen suunnittelu nojaa asiantuntijoidenkokemukseen ja peukalosääntöihin

§ Käytännössä ollaan jossain näiden ääripäidenvälillä ja mukana on muitakin elementtejä§ Malliperustainen testaus, tilastolliset mallit,

riskianalyysit, standardit, uudelleenkäyttö,tarkistuslistat, asiantuntijoiden takapuolituntuma

www.cs.helsinki.fi 30 April 2018 40Faculty of ScienceDepartment of Computer Science

Testausaktiviteetit,Vikaraporttien käsittely

§ Kurssikirja luvut 6.5 – 6.8.§ Kuuluu koealueeseen

www.cs.helsinki.fi

Testauspäällikön rooliketterässä kehityksessä

30 April 2018Faculty of ScienceDepartment of Computer Science 41

www.cs.helsinki.fi 30 April 2018 42Faculty of ScienceDepartment of Computer Science

Ketterä kehitys ja testaus

§ Ei kurssikirjassa§ Video: Agile Test Management by Fran O’Hara§ http://www.youtube.com/watch?v=4WngZa3efaU

www.cs.helsinki.fi 30 April 2018 43Faculty of ScienceDepartment of Computer Science

Ketterä kehitys ja testaus

§ Siirtymä ketterään reaktiivisessa moodissa – oleproaktiivinen

§ Kaksi roolia§ Linjaesimies – rekrytointi, sopivuus ketteriin

kehitystiimeihin, valmennus§ Testauksen johtaminen projekteissa

§ Testaus tapahtuu projekteissa, ei erillisessä siilossa§ Testausstrategian muodostamisessa pitäisi pyrkiä

ennaltaehkäisevään strategiaan§ Automatisointistrategia, automaation rooli (mitkä tasot)

www.cs.helsinki.fi 30 April 2018 44Faculty of ScienceDepartment of Computer Science

Ketterä kehitys ja testaus

§ Älä ole liian määräävä testausprosessinmäärittelyssä projektille; tarjoa neuvoja ja tukea jaohjeita ja katso että tehdään järkeviä valintoja

§ ”Definition of done” määrittely avainasemassa –riskit, testaus

§ Testaajat ovat mukana projekteissa alusta alkaen,mikä korostaa testauksen merkitystä ja testaajienroolia

§ Laatuvaatimusten testauksen haasteet – mitensaadaan mukaan näitten testaus heti alusta alkaeneikä vasta projektin lopussa§ Profilointi ym.

www.cs.helsinki.fi 30 April 2018 45Faculty of ScienceDepartment of Computer Science

Ketterä kehitys ja testaus

§ Esteiden poistaminen testauksen tieltä§ Testaajat voivat opettaa kehittäjiä laatimaan

parempia testejä

www.cs.helsinki.fi

Testaustyökalut

30 April 2018Faculty of ScienceDepartment of Computer Science 46

www.cs.helsinki.fi

§ Työkalujen käytön tavoitteet§ Käsin tehtävän, samanlaisena mekaanisesti toistuvan

ja/tai aikaa vievän työn automatisointi (ihmiset ovathuonoja automaatteja)

§ Sellaisten testien tekeminen, joita on vaikeaa taimahdotonta tehdä manuaalisesti (rasitus- jasuorituskykytestit)

§ Inhimillisten virheiden riskin vähentäminen esimerkiksisuurten testi- ja tulosdatamäärien käsittelyssä

30 April 2018 47Faculty of ScienceDepartment of Computer Science

Työkalut ja testaus

www.cs.helsinki.fi

§ Testien suorituksen automatisointi,testidatan generointi, testitapaustengenerointi, testausprosessin hallinta, testinkohteen monitorointi, monikäyttötyökalut,jne.

§ Yleiskäyttöisiä ja hyvin erikoistuneita§ Kaupallisia ja avoimia§ Esimerkiksi OSS työkaluja löytyy osoitteesta

http://www.opensourcetesting.org/§ Muita http://www.imbus.de/english/test-tool-list/

30 April 2018 48Faculty of ScienceDepartment of Computer Science

Työkalutyyppejä

www.cs.helsinki.fi

§ Testitapausten määrittely, luokittelu,priorisointi ja muu hallinta

§ Testien suorituksen tilan seuranta§ Mahdollisesti linkitys vaatimushallintaan§ Vikaraporttien luonti- ja seurantatyökalut

ovat välttämättömiä (incident management,bug tracking)

§ Hallintatyökalujen integrointi muihin§ Testiraporttien ja –dokumenttien generointi

30 April 2018 49Faculty of ScienceDepartment of Computer Science

Testauksen hallintatyökalut

www.cs.helsinki.fi

§ Testia Tarantula –demohttps://www.youtube.com/watch?v=OiVTh2-R7w4

30 April 2018 50Faculty of ScienceDepartment of Computer Science

Testauksen hallintatyökalut

www.cs.helsinki.fi

§ Testitapauksen määrittelyyn kuuluvat esi- jajälkiehdot, syöte ja odotettu tulos

§ Testitapausten ja –datan generointityökaluthelpottavat testien laatijan työtä tuottamallatestisyötteitä tai kokonaisia testitapauksiaautomaattisesti

30 April 2018 51Faculty of ScienceDepartment of Computer Science

Testien määrittelytyökalut

www.cs.helsinki.fi

§ Tietokantarakenteen määrittely (data baseschema)§ Tuotetaan skeeman mukainen testitietokanta

§ Testikohteen koodi (white box)§ Testioraakkeli tarvitaan§ Pelkkä koodi (toteutus) on huono lähtökohta

testaukselle

30 April 2018 52Faculty of ScienceDepartment of Computer Science

Testitapausten generoinninperuste

www.cs.helsinki.fi

§ Testikohteen rajapinta (black box)§ Automaattinen ekvivalenssiluokkiin jako ja raja-arvo

analyysi rajapinnan määrittelyn perusteella (API, GUI)§ Negatiivisten testitapausten automaattinen generointi

(myös heuristiset säännöt)§ Testioraakkeli tarvitaan

§ Testikohteen (formaali) spesifikaatio§ Model based testing§ Testisyötteiden ja tulosten generointi UML mallin avulla§ Malli toimii oraakkelina

30 April 2018 53Faculty of ScienceDepartment of Computer Science

Testitapausten generoinninperuste

www.cs.helsinki.fi

§ AgitarOne: Junit –yksikkötestienautomaattinen generointi§ Yhdistää black-box ja white-box menetelmiä§ Kaupallinen työkalu§ http://www.agitar.com/solutions/products/agitarone.html

§ Menetelmän yksityiskohdat ja analyysialgoritmitliikesalaisuuksia, mutta tutkimustietoa aihepiiristälöytyy

30 April 2018 54Faculty of ScienceDepartment of Computer Science

Esimerkki

www.cs.helsinki.fi

§ Katselmoinnit§ Spesifikaatioiden ja mallien staattinen

analyysi§ Model checking§ UML-mallin täydellisyys ja ristiriidattomuus

§ Koodin staattinen analyysi§ Datavuoanomaliat, turvallisuusongelmat§ …ja kymmeniä muita, katso. esimerkiksi

http://findbugs.sourceforge.net/bugDescriptions.html

30 April 2018 55Faculty of ScienceDepartment of Computer Science

Staattisen testauksen työkalut

www.cs.helsinki.fi

§ Testien suorittamisen automatisointi§ Testitapaukset syötteineen ja odotettuine tuloksineen

koodataan testiskripteiksi tai –ohjelmiksi (JUnit -testitapausluokat)

§ Työkalu ajaa testit automaattisesti ja kirjaa tulokset(JUnit –laajennokset NetBeans ja Eclipse -ympäristöissä)

§ Debuggerit§ Kehittäjän työkaluja pääasiassa, mutta voivat olla

tarpeellisia tiettyjen virhetilanteiden luomiseksi

30 April 2018 56Faculty of ScienceDepartment of Computer Science

Dynaamisen testauksen työkalut

www.cs.helsinki.fi

§ Testikehikot ja –ajurit (test framework, testharness)§ Testiympäristön automaattinen generoiminen

testikohteen analysoinnin perusteella§ Tuki ajurien kirjoittamista varten§ Riippuvuuksien analysointi ja tynkien (stubs) tai

jäljittelijöiden (mock object) automaattinen (osittainen)generointi§ http://en.wikipedia.org/wiki/Mock_object

§ Google Test C++ testing frameworkhttp://code.google.com/p/googletest/wiki/Primer

30 April 2018 57Faculty of ScienceDepartment of Computer Science

Dynaamisen testauksen työkalut

www.cs.helsinki.fi

§ Simulaattorit, emulaattorit§ Testausrobotit (capture and replay)§ Käyttöliittymätapahtumien nauhoitus ja toisto

testitapausten määrittelyn avuksi§ Selenium on suosittu työkalu selaimessa toimivien

sovellusten testitapausten muodostamiseen jasuorittamiseenhttp://www.youtube.com/watch?v=OeyeY6gaDVg

30 April 2018 58Faculty of ScienceDepartment of Computer Science

Dynaamisen testauksen työkalut

www.cs.helsinki.fi

§ Datalähtöinen testaus (data driven testing)§ Periaatteessa sama testitapaus suoritetaan monta kertaa

peräkkäin vain syötteiden vaihtuessa§ Syötedata ja odotettu tulos talletetaan tiedostoon,

tietokantaan tai taulukkon, josta testiskripti lukee datarivitja ajaa testitapauksen

§ Komento- tai avainsanatestaus(command/keyword driven testing)§ Testitapaukset ja -skenaariot koostuvat abstrakteista

toiminnoista (”enter login credentials”) ja niiden syötteistä§ Testiä suoritettaessa abstrakti toiminto korvataan

konkreettisella testikohteen toiminteella/dialogilla

30 April 2018 59Faculty of ScienceDepartment of Computer Science

Dynaamisen testauksen työkalut

www.cs.helsinki.fi

§ Vertailijat (comparator)§ Suurien tietomassojen vertailuun (testin tuottama

tulosdata vs. oraakkelin tuottama data)

§ Dynaamiset analysaattorit testikohteensuorituksen aikana§ Muistin käyttö jne.

§ Kattavuusanalyysi testitapausten suorituksesta§ Lause- ja haarautumakattavuus jne.§ Työkaluissa paljon eroja§ Esimerkiksi EclEmma coverage plugin for Eclipse

30 April 2018 60Faculty of ScienceDepartment of Computer Science

Dynaamisen testauksen työkalut

www.cs.helsinki.fi

§ Kuormitustestaus, vasteajat§ Datan ja tapahtumien generointi

§ Määrä, frekvenssi

§ Monitorointi§ Testin aikaisen käyttäytymisen mittaaminen ja

mittausdatan kerääminen§ Profilointi§ Vaatii erikoistuneita ja joskus kalliita välineitä

§ Turvauhkien testaus§ http://www.metasploit.com

30 April 2018 61Faculty of ScienceDepartment of Computer Science

Suorituskyvyn testaus jamonitorointi