19
14.3.2013 1 www.cs.helsinki.fi Ohjelmistotestauksen perusteita II Luento 2 Antti-Pekka Tuovinen 14 March 2013 Faculty of Science Department of Computer Science 1 www.cs.helsinki.fi Testausprosessin perustoiminnot Testauksen psykologiaa Testauksen seitsemän periaatetta 14 March 2013 2 Faculty of Science Department of Computer Science Luennon oppimistavoitteet

Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 2: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 3: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 4: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 5: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 6: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 7: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 8: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 9: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 10: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 11: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 12: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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ä

Page 13: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 14: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 15: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 16: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 17: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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ö

Page 18: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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

Page 19: Ohjelmistotestauksen perusteita II · 14.3.2013 4 Testauksen ohjaus (test control) tarkoittaa testausaktiviteettien seurantaa suhteessa testaussuunnitelmaan Poikkeamien raportointi

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