220 likes | 490 Views
TESTAUS. ”Paras mahdollinen työ.” ”Kaikista hankalin tapa kuluttaa työpäivääsi.” Ed Kit, Software Testing in the Real World Tavoitteena löytää mahdollisimman paljon virheitä Myers: Testaus on prosessi, jossa ohjelmaa suoritetaan ja yritetään löytää siitä virheitä
E N D
TESTAUS • ”Paras mahdollinen työ.” • ”Kaikista hankalin tapa kuluttaa työpäivääsi.” Ed Kit, Software Testing in the Real World • Tavoitteena löytää mahdollisimman paljon virheitä • Myers: • Testaus on prosessi, jossa ohjelmaa suoritetaan ja yritetään löytää siitä virheitä • Hyvä testausmenetelmä on sellainen, joka suurella todennäköisyydellä paljastaa ohjelmasta uuden virheen • Onnistunut testi on sellainen, joka paljastaa uuden virheen. 15. Testaus
Miksi? Miksi ei? • tiukka ohjelmistotuotannon aikataulu kiritään testauksen kustannuksella • tuotteen menestymismahdollisuudet • aikainen aloittaminen • monimutkaistuu koko ajan • korjausten aiheuttamat muutokset kasvaa • työllistävyys • testien uusiminen • projektiryhmä koolla 15. Testaus
Virheiden eliminointi • suunnitelmallinen virheiden etsiminen • testauksen määrä testauksen tehokkuus • testin onnistuminen • saatu tulos on oikein (= oletettu tulos) • ”sisäinen tila” , muuttujien, rekisterien yms. arvot ovat muuttuneet oikein • testauksen avulla voidaan osoittaa ohjelman virheet, mutta ei virheettömyyttä 15. Testaus
Virheet, viat, häiriöt • testauksen yhteydessä virhe (error, bug) • poikkeama spesifikaatiosta (toiminnallinen määrittely, tekninen määrittely) • virhe ohjelmassa voi aiheuttaa vian (fault) • voi korjautua itsestään jonkin toisen toiminnon seurauksena tai • vika voi kumoutua • pahimmassa tapauksessa vika voi aiheuttaa häiriön (failure) • näkyy ulkoisessa toiminnassa 15. Testaus
Testauksen periaatteita • testit tulisi johtaa asiakaan vaatimuksista • testaus pitää suunnitella ennen aloittamista • 80% virheistä löytyy 20%:sta komponenteista • aloitetaan osista ja jatketaan kokonaisuuksiin • täysin kattavaa testausta ei voi toteuttaa • ulkopuolinen löytää parhaiten virheet 15. Testaus
Testattavuus • Suoritettavuus (operability) • pystytään suorittamaan • Havainnoitavuus (observability) • testauksen tulokset ovat havainnoitavissa • Osittaminen (decomposability) • testaus voidaan kohdentaa johonkin komponettiin • Yksinkertaisuus (simplicity) • toiminnot, rakenne ja koodi yksinkertaista • Vakaus (stability) • testaus ei vaadi muutoksia • Ymmärrettävyys (understandability) • selkeä ja dokumentoitu suunnittelu 15. Testaus
Testausprosessi • suunnitellaan testiaineisto • suoritetaan testi • verrataan tuloksia odotettuihin tuloksiin • jos saatiin virheellisiä tuloksia, niin • jäljitetään virhe ohjelmistosta • korjataan virhe • toistetaan testi samalla aineistolla 15. Testaus
Testauksen lähestymistavat • Sisäinen testaus, lasilaatikkotestaus (White Box Testing, Class Box Testing) • testataan ohjelmamoduulien sisäinen toiminta • tämä testaus liittyy vahvasti toteutusvaiheeseen • sisäinen testaus suunnitellaan suunnitteluvaiheessa • Ulkoinen testaus, toimintatestaus (Black Box Testing) • testataan ohjelman toiminta suhteessa määrityksiin • ulkoinen testaus suunnitellaan määrittely (analyysi) vaiheessa 15. Testaus
Testausstrategiat • yhdistää erilaiset testaustekniikat hyvin suunnitelluiksi vaiheiksi • testaus on joukko toimintoja, jotka voidaan suunnitella etukäteen ja suorittaa systemaattisesti • yleistä testausstrategiasta: • Testaus alkaa yksikkötasolla, ja laajenee sen kautta koko systeemin integrointiin. • Erilaiset testaustekniikat ovat sopivia eri aikoina. • Testauksen suorittaa järjestelmän kehittäjä, suuremmissa ohjelmistoissa erillinen testiryhmä. • Testaus ja virheenjäljitys ovat eri toimintoja, mutta virheenjäljitys täytyy mukauttaa jokaiseen testausstrategiaan. • tarvittavan testauksen määrää vaikea arvioida • tuotekehitystyössä testauksen lopettaminen: • kompromissi tuotteessa olevien vikojen aiheuttamien kustannusten ja markkinoilta myöhästymisen aiheuttaman tuoton menetyksen välillä • lopettamiselle hyväksymiskriteerit, jotka määritellään testaussuunnitelmassa 15. Testaus
Testaustasot järjestelmä-testaus + vaatimus-määrittely ja määrittely validointi-testaus testauksen suunnittelu arkkitehtuuri- suunnittelu integrointi-testaus ja tulosten verifiointi moduuli- suunnittelu yksikkö-testaus ohjelmointi 15. Testaus
Yksikkötestaus • liitetään yleensä koodausvaiheeseen • lähdekoodi on kirjoitettu ja käännetty, yksikkötestaus voi alkaa • jokainen yksittäinen moduuli käydään läpi vähintään kerran • pitää olla tiedossa odotetut tulokset, eli tieto siitä miten ohjelman pitäisi toimia. • jos moduulit (funktiot, aliohjelmat, oliot) eivät ole itsenäisesti toimia ohjelmia, täytyy yksikkötestaukseen kehittää ohjausohjelmia ja/tai aliohjelmien runkoja (tynkäohjelmia, stubeja) • ohjausohjelma ns. pääohjelma, joka antaa testattavalle moduulille kutsun ja syöttöarvot, sekä myös usein tulostaa lopputuloksia ja moduulin palautusarvoja • kattavuusperiaatteita yms. osoitteesta: http://cs.joensuu.fi/pages/saja/tSoft/testaus.htm • Yksikkötesti tehdään yleensä lasilaatikkoperiaatteella, jolloin testaaja voi myös tarkastaa ohjelmakoodin. 15. Testaus
MUISTA! • Virheiden arvaaminen: oman kokemuksen perusteella testaaja voi arvata, mitkä seikat ovat vaikeita ja joissa siten arvattavasti esiintyy virheitä. • Testatessasi muista: • toimi väärin (eli käyttöohjeen vastaisesti) • käytä vääriä yhdistelmiä • älä tee tarpeeksi • älä tee mitään • tee liikaa • mutta älä unohda normaalitapauksiakaan! • Lisäksi määritysmuutosten jälkeen on aina (suoritettava taantumatesti ja) testattava muuttuneet kohdat (esim. kun kenttä on aiemmin ollut pakollinen vaan ei ole enää jne.) 15. Testaus
Integrointitestaus • yksikkötestauksen jälkeen moduulit täytyy saada toimimaan yhdessä • vaikka moduulit toimisivatkin moitteettomasti itsenäisessä tilassa, yhteistoiminnassa saattaa esiintyä ongelmia • tietoa saattaa hukkua, moduuleilla saattaa olla ennustamattomia vaikutuksia toisiinsa • moduulien välisten rajapintojen toimivuuden tutkimisessa • integraatio, jossa kaikki moduulit yhdistetään kerralla testaus kaaos (big bang -menetelmä) • virheitä havaitaan, mutta korjaaminen hankalaa • yhden virheen korjaaminen aiheuttaa joukon muita virheitä • suositeltavampaa koostaa ohjelma pienistä osista ja testata jokainen osa kerralla – joko osittaen tai koostaen 15. Testaus
Validointitestaus (Hyväksymistestaus) • onko ohjelmisto asiakkaan vaatimusten mukainen • kriteereinä vaatimusmäärittely • tehdään suorittamalla ulkoinen testaus • tarkoituksena osoittaa järjestelmän toimivuus ja vastaavuus asetettuihin vaatimuksiin nähden • vaatimuksiin kuuluu mm. funktionaalinen toimivuus, dokumentoinnin kattavuus, siirrettävyys ja ylläpidettävyys • mikäli tuote ei vastaa vaatimuksia, tehdään luettelo, josta ilmenee mitä on korjattava • kehittäjän on mahdotonta ennustaa miten käyttäjät todellisuudessa reagoivat ohjelmistoon • sitoutuvat sen käyttöön • alfa- ja beetatestaus • ohjelmistolla useita (kymmeniä) käyttäjiä 15. Testaus
Järjestelmätestaus • joukko erilaisia testejä • virheistä toipumisen selvittämiseen • kyettävä selviytymään virhetilanteista tietyssä ajassa • järjestelmän täytyy sietää tietty määrä virhetilanteita • virhe yhdessä prosessissa ei saa kaataa koko järjestelmää • Toipumistestauksessa (recovery testing) • aiheutetaan tiettyjä virhetilanteita ja katsotaan käyttäytyykö järjestelmä vaaditulla tavalla • jos systeemin toipumismekanismi on automaattinen, tarkastetaan uudelleen käynnistys, tarkastuspiste mekanismi ja tiedon suojaus • jos selviytyminen vaatii ihmisen toimintaa, lasketaan onko keskimääräinen selviytymisaika sopivissa rajoissa. 15. Testaus
Järjestelmätestaus • Turvallisuustestaus (security testing) • käsittelevät luottamuksellista tietoa • taloudellisia tai haitaksi yrityksen luotettavuudelle • tunkeutumista ulkopuolelta osa sisäpuolelta • päätavoite tehdä tunkeutuminen niin vaikeaksi, että onnistumisen hyödyt ovat pieniä verrattuna kulutettuun aikaan ja vaivaan. • Kestävyystestaus (stress testing) • epätavallisia tilanteita • voidaan mitata antamalla epätavallisia syötteitä • Esim. testissä voidaan aiheuttaa kymmenen keskeytystä, kun keskimääräinen määrä on yksi tai kaksi • tiedon syöttönopeuksia voidaan kasvattaa • muistinhallintaa yritetään järkyttää syöttämällä maksimimuistia vaativaa aineistoa. • Suorituskykytestaus (performance testing) • reaaliaika- tai upotettuihin järjestelmiin • tehdään jokaisessa testauksen vaiheessa • koko järjestelmä valmis, voidaan sen todellinen suorituskyky mitata • liitetty osaksi kestävyystestiä 15. Testaus
Dokumentaatio • ISO 9000-3 standardin mukaan testaussuunnitelma ja raportit tulisi kirjoittaa sekä integrointi- että järjestelmätestauksesta • yksikkötestauksen testaussuunnitelman korvaa laatukäsikirjan ohjeistus; käytänteet; testitulokset silti raportoitava! • pienissä projekteissa riittänee yksi testaussuunnitelma, joka kattaa kaikki testauksen vaiheet • testaussuunnitelmat voidaan sisällyttää myös projektisuunnitelmaan (yleiskuvaus), toiminnalliseen määrittelyyn (järjestelmätestaus) ja tekniseen määrittelyyn (integrointi- ja yksikkötestaus). 15. Testaus
Testaussuunnitelman sisältö • mitä testejä tehdään ja milloin • miten ne järjestetään ja millaisia lopputuloksia odotetaan • tärkeää määritellä lopettamiskriteerit • yhdistetyn integrointi- ja järjestelmätestauksen sisältö voisi olla: • Johdanto • Testauksen kohde ja tavoitteet • Testausympäristö • Testauksen organisointi ja raportointi • Testausstrategia ja integrointisuunnitelma • Testattavat toiminnot • Toimintojen testitapaukset, hyväksymiskriteerit • Ei-toiminnallisten ominaisuuksien testaus • Erikoistilanteet • Ominaisuudet, joita ei testata 15. Testaus
Testauksen raportointi • virheet tulisi raportoida ja analysoida • mm. virheen kuvaus, • miten vakavasta virheestä on kysymys, • milloin se löydettiin, • miten se olisi voitu löytää aikaisemmin, • milloin virhe oli tehty ja • miten se olisi voitu estää • asiakkaalta tulevia virheilmoituksia varten käytetään yleensä erityistä lomaketta • virheiden raportoinnissa voidaan käyttää esimerkiksi virhepäiväkirjaa • testauspäiväkirja 15. Testaus
Esimerkki testaussuunnitelmasta • http://www.cs.helsinki.fi/group/lohtu/dokumentit/Testaussuunnitelma.doc • Harjoitustyössä • keskittykää järjestelmätestauksen suunnitteluun • testataan järjestelmän toimintaa ( = käyttötapaukset, niiden kuvaukset ja näytöt) • käyttötapauksittain ( = toiminnoittain) • testattava kohde (tyhjät tiedot, olemassa olevat tiedot, …) • millaisin testitapauksin voi toimintaa todentaa • mitä odotetaan kustakin testitapauksesta tulokseksi • laatikaa testiaineisto vähintään kahdelle käyttötapaukselle (=toiminnolle, käyttöliittymälle) 15. Testaus