Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
14.3.2013
1
www.cs.helsinki.fi
Ohjelmistotestauksenperusteita II
Luento 2Antti-Pekka Tuovinen
14 March 2013Faculty of ScienceDepartment of Computer Science 1
www.cs.helsinki.fi
Testausprosessin perustoiminnotTestauksen psykologiaaTestauksen seitsemän periaatetta
14 March 2013 2Faculty of ScienceDepartment of Computer Science
Luennon oppimistavoitteet
14.3.2013
2
www.cs.helsinki.fi 14 March 2013 3Faculty of ScienceDepartment of Computer Science
Ohjelmistokehitysprosessit
www.cs.helsinki.fi
Kurssikirja, kuva 2-4 Fundamental test process
14 March 2013 4Faculty of ScienceDepartment of Computer Science
Testauksen yleinen kulku
14.3.2013
3
www.cs.helsinki.fi
Testauksen suunnittelu ja ohjausTestaustarpeiden analysointi ja testiensuunnitteluTestien implementointi ja suoritusTestauksen lopetusehtojen täyttymisentoteaminen ja raportointiTestauksen päättäminen
14 March 2013 5Faculty of ScienceDepartment of Computer Science
Testauksen perustoiminnot
www.cs.helsinki.fi
Testaus on työmäärältään ja tarkoitukseltaanniin merkittävä osa ohjelmistoprojektia, että sevaatii oman suunnitelmansa
Suunnitelmaa on myös varauduttava muuttamaanprojektin edetessä
On mietittäväTestauksen tavoitteetTarvittavat resurssit – henkilöstö, aika, laitteet jne.KoulutustarpeetTestauksen organisointi ja hallinto
14 March 2013 6Faculty of ScienceDepartment of Computer Science
Testauksen suunnittelu ja ohjaus
14.3.2013
4
www.cs.helsinki.fi
Testauksen ohjaus (test control) tarkoittaatestausaktiviteettien seurantaa suhteessatestaussuunnitelmaan
Poikkeamien raportointiKorjaavat toimetSuunnitelman päivitys
Testauksen hallintatehtäviin (test management)kuuluvat testausprosessin, testi-infran jatestiohjelmistojen hallinto ja ylläpito
14 March 2013 7Faculty of ScienceDepartment of Computer Science
Testauksen suunnittelu ja ohjaus
www.cs.helsinki.fi
Testauksen suunnittelun päätehtävä ontestausstrategian laatiminenKuten aikaisemmin nähtiin, täydellinen (exhaustive)testaus ei ole mahdollistaTestauskohteet ja testit on siis priorisoitavariskianalyysin perusteella
Kriittisiksi luokitellut ohjelmiston osat on testattavaperusteellisimmin
Tavoitteena on testauksen optimaalinenkohdentaminen ”oikeisiin paikkoihin”Esimerkki – VSR –järjestelmän testausstrategia(kurssikirja s. 20)
14 March 2013 8Faculty of ScienceDepartment of Computer Science
Testausstrategia
14.3.2013
5
www.cs.helsinki.fi
Testauksen suunnittelun kuuluu myös senpäättäminen, milloin testaus voidaan lopettaa (exitcriteria)Lopetuskriteerien tarkka muoto riippuu käytetyistätestausmenetelmistä - esimerkiksi
Tietyn lausekattavuuden (90%) saavuttaminenTietty osuus (70%) kaikista järjestelmän transaktioistatestattu vähintään kerran
Lopetuskriteerien määrääminen kuvaa samallatestauksen intensiteetin (test intensity) jakautumisen eriosa-alueille (alijärjestelmät/toiminnot)
14 March 2013 9Faculty of ScienceDepartment of Computer Science
Testauksen suunnittelu ja ohjaus
www.cs.helsinki.fi
Ajan hallinta – kun tulee taas kiire…Testien priorisointi ohjaa testaamaan kriittisimmät osaensin, joten ne tulevat ainakin testatuiksi
Testausympäristöjen hallintaTestaustyökalujen valinta ja hankintaTestikehikkojen ja -alustojen (test harness, test bed)kehittäminen otettava mukaan kehitystiimien työlistoillejo aikaisessa vaiheessa, jotta ohjelmistoa voidaantestata osissa kehitysprosessin aikana
14 March 2013 10Faculty of ScienceDepartment of Computer Science
Testauksen suunnittelu ja ohjaus
14.3.2013
6
www.cs.helsinki.fi
Testien suunnittelun lähtökohtia (test basis)VaatimuksetOhjelmiston arkkitehtuuriRiskianalyysit (virheiden/vikojen ”hinta”)
Ensimmäinen askel on arvioida, onko riittävä pohjaolemassa testien suunnittelulle
Esimerkiksi - onko tietty vaatimus kuvattu niin, että senperusteella tiedetään, mikä on ohjelmiston odotettukäyttäytyminen/tuottama tulos ao. tilanteessa?
14 March 2013 11Faculty of ScienceDepartment of Computer Science
Testaustarpeiden analysointi jatestien suunnittelu
www.cs.helsinki.fi
Vaatimusten lisäksi myös testattavan ohjelmiston elitestin kohteen (test object) ominaisuuksilla onvaikutusta testien suunnitteluunOhjelmiston testattavuus (testability) tarkoittaa
Miten hyvin ohjelmisto on jaettavissa erikseentestattavissa oleviin osiinMiten hyvin testien tarvitsemat ohjelmalliset rajapinnat(toiminnot ja data) ovat olemassa ja käytettävissä
Testattavuuden tarpeet onkin syytä ottaa huomioonohjelmiston kehityksessä alusta lähtien
14 March 2013 12Faculty of ScienceDepartment of Computer Science
Testaustarpeiden analysointi jatestien suunnittelu
14.3.2013
7
www.cs.helsinki.fi
Jäljitettävyys (traceability) vaatimusten/määrittelyjenja konkreettisten testien välillä on tärkeää
Tiedetään mitkä testitapaukset (test case) liittyvätminkäkin vaaditun ominaisuuden testaamiseen
14 March 2013 13Faculty of ScienceDepartment of Computer Science
Testien suunnittelu
www.cs.helsinki.fi
Valittu testausstrategia määrittelee, mitätestaustekniikoita käytetään
Turvallisuuskriittisen ohjelmiston testaaminen täytyytehdä erittäin systemaattisesti, huolellisesti jakattavasti
Myös testattavan ohjelman kompleksisuus vaikuttaatestaustekniikoiden valintaanKäytettävät testaustekniikat vaikuttavatluonnollisesti testien ja testitapausten suunnitteluun
14 March 2013 14Faculty of ScienceDepartment of Computer Science
Testien suunnittelu
14.3.2013
8
www.cs.helsinki.fi 14 March 2013 15Faculty of ScienceDepartment of Computer Science
Testaustermien määritelmiä
Testiobjekti, testin kohde (test object)Ohjelma tai ohjelman osa, jota varten testisuunnitellaan
Testiajo (test run, test suite)Yhden tai useamman testitapauksen suoritus koottunayhteen ajoon
Testiskenaario (test scenario)Ketjuttaa yhteen useita testitapauksia siten, ettäedellisen tapauksen tuottamat tulokset toimivatseuraavan tapauksen lähtötilanteena
www.cs.helsinki.fi 14 March 2013 16Faculty of ScienceDepartment of Computer Science
Testaustermien määritelmiä
Testitapaus (test case)Määrittelee lähtötilanteen eli alkuehdot testitapauksensuoritukselle (test conditions)Määrittelee syötteet ja odotetut tulokset / testiobjektinodotetun käyttäytymisenHyvällä testitapauksella on suuri todennäköisyyspaljastaa aiemmin tuntemattomia vikoja
14.3.2013
9
www.cs.helsinki.fi 14 March 2013 17Faculty of ScienceDepartment of Computer Science
Testaustermien määritelmiä
Testioraakkeli (test oracle)Testitapauksen odotetun/oikean tuloksen kertova(”ennustava”) lähdeEsimerkiksi ohjelman toimintaa kuvaava käyttötapaus(use-case) tai sen vaatimusmäärittelyssä annettulaskentakaavaTestitapauksen suunnittelija tarvitsee oraakkeliajohtaakseen testitapauksen odotetun tuloksen, johontestiobjektin testin suorituksen aikana tuottamaatulosta verrataan
www.cs.helsinki.fi 14 March 2013 18Faculty of ScienceDepartment of Computer Science
Testitapausten suunnittelusta
Suunnittelu etenee yleensä yleisemmistätapauksista (logical test case) yksityiskohtaisempiin,konkreettisiin tapauksiin (concrete test case)
Ensiksi määritetään kullekin testitapaukselle vainarvoalueet, joista syötteet valitaan (looginentestitapaus, ei voida sellaisenaan suorittaa)Myöhemmin kirjoitetaan konkreettiset suoritettavattestitapaukset, joihin valitaan tietyt syötearvot
14.3.2013
10
www.cs.helsinki.fi 14 March 2013 19Faculty of ScienceDepartment of Computer Science
Testitapausten suunnittelusta
Testitapauksia voidaan määritellä projektinmonessa eri vaiheessa
Käyttötapauksiin pohjautuvia toiminnallisiatestitapauksia voidaan alkaa määritellä heti kunkäyttötapaukset ovat selvilläOhjelman sisäiseen rakenteeseen perustuvat white-box testitapaukset voidaan määritellä vasta kuntestattava koodi on olemassa
www.cs.helsinki.fi 14 March 2013 20Faculty of ScienceDepartment of Computer Science
Testitapausten suunnittelusta
Testitapauksia on kahta perustyyppiäTestiobjektin toimintaa ja käyttäytymistä odotetuissakäyttötilanteissa ja odotetuilla syötteillä testaavattapauksetTestiobjektin toimintaa ja käyttäytymistäodottamattomilla ja virheellisillä syötteillä testaavattapaukset
Spesifioitujen virhetilanteiden ja poikkeustenkäsittelyn testitapaukset kuuluvat ensimmäiseenkategoriaan
Ne ovat osa järjestelmän määrittelyä – ne kuvaavatodotettua käyttäytymistä tietyissä erikoistilanteissa
14.3.2013
11
www.cs.helsinki.fi 14 March 2013 21Faculty of ScienceDepartment of Computer Science
Testien implementointi jasuoritus
AkitiviteetitLuodaan konkreettiset testitapauksetTestausympäristö valmistellaan käyttöönTestit suoritetaan, jaTulokset kirjataan ylös
www.cs.helsinki.fi 14 March 2013 22Faculty of ScienceDepartment of Computer Science
Testien suorituksen valmistelu
Testitapauksiin voi olla syytä liittää selkeät ohjeet,kuinka ne suoritetaan
Jos kehittäjä itse ajaa testit, hän todennäköisesti jotietää mitä tehdä
Testitapausten priorisointi on tärkeää, jottavarmistetaan tärkeimpien testien suorittaminenviivästysten sattuessa (ajan puutteen tai teknistenongelmien vuoksi)Yksittäiset testitapaukset on syytä koota testiajoihin(test suite) testauksen tehostamiseksi
14.3.2013
12
www.cs.helsinki.fi 14 March 2013 23Faculty of ScienceDepartment of Computer Science
Testien suorituksen valmistelu
Usein testauksessa tarvitaan testikehikkoja (testharness), -ajureita tai simulaattoreita testiensuorittamista varten
Varsinkin kun testataan osatoimintoja/alijärjestelmiäohjelmiston kehitysversioissa
Testikehikkojenkin toiminta on testattava
www.cs.helsinki.fi 14 March 2013 24Faculty of ScienceDepartment of Computer Science
Testien suoritus
Testiobjekti asennetaan testausympäristöön javarmistutaan, että kaikki tarvittavat osat ovatmukana ja ne latautuvat/käynnistyvätOn suositeltavaa aloittaa testin suoritus aivanperustoimintoja testaavista tapauksista (smoke test)
Jos savu nousee, testausta ei ole mielekästä jatkaa,ennen kuin pahimmat virheet on korjattuJos yksinkertaiset perustapaukset menevät läpi,voidaan suorittaa loputkin testistä
14.3.2013
13
www.cs.helsinki.fi 14 March 2013 25Faculty of ScienceDepartment of Computer Science
Testauksen kirjanpito
Jokaisen testitapauksen suorituksen tulos täytyykirjata testilogiinTestilogin perusteella pitää voida nähdä, ettätestausstrategian mukaiset testit on tehty
Kuka on testannut minkäkin osan, milloin, kuinkaintensiivisesti ja millaisin tuloksin
Testilogin avulla voidaan perustella asiakkaille jajohdolle, että ohjelmisto on testattu vaaditullakattavuudella
www.cs.helsinki.fi 14 March 2013 26Faculty of ScienceDepartment of Computer Science
Virheen löytyessä
Testien toistettavuus on tärkeää, joten kaikki testiensuoritukseen liittyvät oleelliset parametrit onkirjattava ylös (ohjelmistoversio, suoritusympäristönkokoonpano jne.)Testitapauksen epäonnistuessa (saatu tulos eivastaa odotettua ”fail”) on ensiksi tutkittava,onko kyseessä todella virhe testiobjektissa vai testinsuorituksessaJos kyseessä todella on virhe, löydös ondokumentoitava (incident handling)korjaustoimenpiteitä varten
14.3.2013
14
www.cs.helsinki.fi 14 March 2013 27Faculty of ScienceDepartment of Computer Science
Virheen korjauksen jälkeen
Jos löydetty virhe todettiin korjausta vaativaksi,siihen johtanut vika aikanaan korjataanKorjauksen jälkeen on suoritettava uudelleen testit,joiden tuloksena virhe löytyi, ja varmistettava, ettävirhe on poistunutRiippuen vian laadusta ja laajuudesta, on joskusmyös varmistettava, että vian/vikojen korjaus ei oleaiheuttanut uusia virheitä (regression test)
Voidaan joutua suorittamaan uudelleen isokin joukkotestejä
www.cs.helsinki.fi 14 March 2013 28Faculty of ScienceDepartment of Computer Science
Virheen korjauksen jälkeen
Käytännössä jokaisen yksittäisen virheenkorjauksen jälkeen ei tehdä heti uudelleentestausta,vaan testaus tehdään testiobjektin seuraavankehitysversion julkaisulleTestiobjektin kehitysversiot sisältävät yleensämonien virheiden korjauksia
Korjauksilla voi olla ennalta arvaamattomiayhteisvaikutuksia, jotka johtavat kokonaan uusiinvirheisiin tai aikaisemmin paljastumatta jääneidenvikojen paljastumiseen
Uutta koodia varten voidaan joutua määrittelemäänuusia testitapauksia
14.3.2013
15
www.cs.helsinki.fi 14 March 2013 29Faculty of ScienceDepartment of Computer Science
Testauksen päättäminen
Osana testauksen suunnittelua päätettiintestauksen päättävistä lopetusehdoista (exit criteria)Yksinkertaistaen: kun kaikki testit on suoritettu jalopetusehdot täyttyvät (testien tulosten suhteen)testaus voidaan lopettaaJos tavoitteet eivät kuitenkaan täysin täyty, on syytäarvioida pitääkö testausta jatkaa, vai voidaankokriteerejä löysentää
Saadaanko resurssien lisäkäytöstä sittenkään riittäväähyötyä?
www.cs.helsinki.fi 14 March 2013 30Faculty of ScienceDepartment of Computer Science
Testauksen päättäminen
Muita käytettyjä kriteereitäFailure rate (kurssikirja kuva 2-5) eli uusien virheidenlöytymisen tahti putoaa tietyn kynnysarvon alapuolelle
Virheiden vakavuus otettava kuitenkin huomioon
Ajan ja loppuminen ja kustannusten nousu!Valitettava mutta yleinen peruste lopettaa testaus
14.3.2013
16
www.cs.helsinki.fi 14 March 2013 31Faculty of ScienceDepartment of Computer Science
Lopetustoimet
”Lessons learned” eli Mitä tästä opittiin?Poikkeamat suunnitelmista ja niiden syytKoko testausprosessin tulosten evaluointiParannusehdotusten kerääminen
Testitapausten, -datan ja työkalujen ym. (testware)arkistointi tai luovutus ylläpitoa varten
www.cs.helsinki.fi
Testaajan tehtävä on löytää virheitäMissio: Keksi mahdollisimman monta tapaarikkoa tämä softa
Testausta pidetään helposti destruktiivisenatoimintana, vaikka se vaatii luovuutta ja älyäErityisesti tutkiva testaus (exploratorytesting) korostaa testaajan omaa panosta jaasiantuntemusta testauksenonnistumisessa
14 March 2013 32Faculty of ScienceDepartment of Computer Science
Testauksen psykologiaa
14.3.2013
17
www.cs.helsinki.fi
Useimmat kehittäjät haluavat mieluumminnäyttää, että heidän koodinsa toimii kuin että seei toimiTehokkaan (= virheitä löytävän) testauksenkannalta kehittäjä ei ehkä pysty ottamaanriittävää etäisyyttä omaan koodiinsa
Testitapauksista tulee helposti liian optimistisia jatodella ilkeät tapaukset jäävät testaamattaPerustavanlaatuiset vaatimustenväärinymmärrykset jäävät löytymättä!
14 March 2013 33Faculty of ScienceDepartment of Computer Science
Testaava kehittäjä?
www.cs.helsinki.fi
Ohjelmistokehittäjistä riippumattomantestaustiimin käyttö yleensä parantaatestauksen laatua ja kattavuutta
Ei ennakkoasenteita testiobjektia kohtaanErityisosaamista ja kokemusta testauksesta
Vaatii kuitenkin perehtymistä testattavaanohjelmaan
14 March 2013 34Faculty of ScienceDepartment of Computer Science
Erillisen testaustiimin käyttö
14.3.2013
18
www.cs.helsinki.fi
Virheiden raportointi vaatii huolellisuutta jaasiallisuutta
Vältettävä vastakkainasettelun syntymistäkommunikoinnissaVirheraporttien täytyy sisältää riittävät tiedotvirheen toistamiseksi kehittäjien ympäristössä
Täytyy sopia etukäteen siitä mikä katsotaanvirheeksi ja mikä ei
”It’s a feature””Works as specified”
Tarvitaan molemminpuolista kunnioitusta jaymmärrystä toisten työn luonteesta
14 March 2013 35Faculty of ScienceDepartment of Computer Science
Testauksen löytämien virheidenraportointi
www.cs.helsinki.fi
1. Testauksella voi vain osoittaa, että vikojaon, mutta sillä ei voi osoittaa, että niitä eiole
2. Täydellinen (exhaustive) testaaminen eiole mahdollista
3. Testausaktiviteetit tulisi aloittaamahdollisimman aikaisin projektissa
4. Viat kerääntyvät usein yhteen
14 March 2013 36Faculty of ScienceDepartment of Computer Science
Testauksen seitsemänperiaatetta
14.3.2013
19
www.cs.helsinki.fi
5. Samanlaisina toistetut testit menettävättehoaan ajan mittaan
6. Testaus on kontekstiriippuvaa7. Virheettömyys ei välttämättä tarkoita sitä,
että testattu järjestelmä on käyttäjilleenhyödyllinen
14 March 2013 37Faculty of ScienceDepartment of Computer Science
Testauksen seitsemänperiaatetta
www.cs.helsinki.fi
Testausprosessin perustoiminnotTestauksen psykologiaaTestauksen seitsemän periaatetta
14 March 2013 38Faculty of ScienceDepartment of Computer Science
Luennon oppimistavoitteet