20
15. Testaus 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.

TESTAUS

  • Upload
    beau

  • View
    47

  • Download
    5

Embed Size (px)

DESCRIPTION

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ä - PowerPoint PPT Presentation

Citation preview

Page 1: TESTAUS

15. Testaus

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.

Page 2: TESTAUS

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

Page 3: TESTAUS

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ä

Page 4: TESTAUS

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

Page 5: TESTAUS

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

Page 6: TESTAUS

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

Page 7: TESTAUS

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

Page 8: TESTAUS

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

Page 9: TESTAUS

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

Page 10: TESTAUS

15. Testaus

validointi-testaus

Testaustasot

ohjelmointi

järjestelmä-testaus

+

integrointi-testaus

yksikkö-testaus

vaatimus-määrittely ja määrittely

arkkitehtuuri-suunnittelu

moduuli-suunnittelu

testauksen suunnittelu

ja tulosten verifiointi

Page 11: TESTAUS

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.

Page 12: TESTAUS

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.)

Page 13: TESTAUS

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

Page 14: TESTAUS

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ä

Page 15: TESTAUS

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.

Page 16: TESTAUS

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ä

Page 17: TESTAUS

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).

Page 18: 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

Page 19: TESTAUS

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

Page 20: TESTAUS

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)