19.01.2015 Views

Testaussuunnitelma - SoberIT

Testaussuunnitelma - SoberIT

Testaussuunnitelma - SoberIT

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Testaussuunnitelma</strong><br />

AgilElephant<br />

<strong>Testaussuunnitelma</strong><br />

Tekijä: Petri Kalsi ja Heikki Salminen<br />

Omistaja: ElectricSeven<br />

Dokumentti: <strong>Testaussuunnitelma</strong>.doc Päiväys: 08.02.2005<br />

Projekti: AgileElephant<br />

Omistaja: ElectricSeven Status: Ehdotus<br />

Aihe: <strong>Testaussuunnitelma</strong> Sivu 1 / 11


<strong>Testaussuunnitelma</strong><br />

Dokumenttihistoria<br />

Muutoshistoria<br />

Revision Revision Yhteenveto muutoksista<br />

Revision tekijä<br />

Numero Päiväys<br />

0.1 04.11.04 Ensimmäinen versio, dokumentin rakenne Petri Kalsi<br />

0.2 06.11.04 I1-vaiheen suunnitelmaa täydennetty Heikki Salminen<br />

0.3 07.11.04 Tuotokset, kirjoitusvirheitä korjattu Petri Kalsi<br />

0.4 29.11.04 I2-vaiheen suunnitelmaa päivitetty Heikki Salminen<br />

0.5 09.01.05 Dokumentin rakennetta muutettu Esa Mommo<br />

0.6 02.02.05 I2-vaiheen suunnitelmaan muutoksia, HTTPUnit pois Petri Kalsi<br />

Hyväksyjät<br />

Tämä dokumentti vaatii seuraavien henkilöiden hyväksymiset<br />

Nimi<br />

Juha Kaarlas<br />

Tehtävä<br />

Projektipäällikkö<br />

Katselmoinnit<br />

Tämä dokumentti vaatii seuraavien henkilöiden katselmoinnin<br />

Nimi<br />

Tehtävä<br />

Jakelu<br />

Tämä dokumentti jaetaan seuraaville henkilöille<br />

Nimi<br />

Projektiryhmä<br />

Tehtävä<br />

Dokumentti: <strong>Testaussuunnitelma</strong>.doc Päiväys: 08.02.2005<br />

Projekti: AgileElephant<br />

Omistaja: ElectricSeven Status: Ehdotus<br />

Aihe: <strong>Testaussuunnitelma</strong> Sivu 2 / 11


<strong>Testaussuunnitelma</strong><br />

Sisällysluettelo<br />

1. Esittely....................................................................................................................4<br />

1.1 Tarkoitus .........................................................................................................................................4<br />

1.2 Kuvaus ............................................................................................................................................4<br />

1.3 Viittaukset........................................................................................................................................4<br />

2. Testauslähestymistapa...........................................................................................5<br />

2.1 Menetelmät .....................................................................................................................................5<br />

2.1.1 Automaattiset yksikkötestit ......................................................................................................5<br />

2.1.2 Automatisoitu toiminnallinen testaus HTTPUnitilla..................................................................5<br />

2.1.3 Käsin tehtävä toiminnallinen testaus .......................................................................................6<br />

2.1.4 Staattiset menetelmät ohjelmakoodin analysoinnissa.............................................................6<br />

2.1.5 Heuristinen käytettävyyden arviointi ........................................................................................6<br />

2.1.6 Vertaistestaus ..........................................................................................................................6<br />

2.2 Työkalut...........................................................................................................................................6<br />

2.3 Resurssit ja työnjako.......................................................................................................................7<br />

2.4 Testitapausten hallinta ja dokumentointi.........................................................................................7<br />

2.5 Vikojen hallinta ja dokumentointi.....................................................................................................7<br />

2.6 Testauksen lopetuskriteerit .............................................................................................................7<br />

2.7 Testidata ja -aineistot......................................................................................................................7<br />

2.8 Testauksen keskeytys- ja uudelleenaloituskriteerit.........................................................................8<br />

2.9 Tuotokset ........................................................................................................................................8<br />

3. Testauksen suorittaminen.......................................................................................9<br />

3.1 I1-vaihe ...........................................................................................................................................9<br />

3.1.1 Testausperiaatteet ...................................................................................................................9<br />

3.1.2 Resurssit ja työnjako................................................................................................................9<br />

3.1.3 Tavoitteet .................................................................................................................................9<br />

3.1.4 Yksikkötestaus.........................................................................................................................9<br />

3.1.5 Käsin tehtävä toiminnallinen testaus .....................................................................................10<br />

3.1.6 Muut menetelmät ...................................................................................................................10<br />

3.2 I2-vaihe .........................................................................................................................................10<br />

3.2.1 Yksikkötestaus.......................................................................................................................10<br />

3.2.2 Automatisoitu toiminnallinen testaus HTTPUnitilla................................................................10<br />

3.2.3 Käsin tehtävä toiminnallinen testaus .....................................................................................10<br />

3.3 FD-vaihe........................................................................................................................................11<br />

3.3.1 Vertaistestaus ........................................................................................................................11<br />

3.3.2 Hyväksymistestaus ................................................................................................................11<br />

Dokumentti: <strong>Testaussuunnitelma</strong>.doc Päiväys: 08.02.2005<br />

Projekti: AgileElephant<br />

Omistaja: ElectricSeven Status: Ehdotus<br />

Aihe: <strong>Testaussuunnitelma</strong> Sivu 3 / 11


<strong>Testaussuunnitelma</strong><br />

1. Esittely<br />

1.1 Tarkoitus<br />

Tässä dokumentissa kuvataan AgilElephant-tuotteen kehityksen yhteydessä käytettävät<br />

testausmenetelmät ja niiden aikataulu eri iteraatioissa.<br />

1.2 Kuvaus<br />

Testauksen luonne on jokaisessa iteraatiossa erilainen menetelmiltään ja painotuksiltaan.<br />

Lähestymistapa ja käytetyt menetelmät kuvataan ensin yleisesti luvussa 2. Luvussa Error! Reference<br />

source not found. on kuvattu aikataulu jokaiselle iteraatiolle erikseen, ja miten eri menetelmiä käytetään<br />

kyseisessä iteraatiossa.<br />

1.3 Viittaukset<br />

• SEPA_diary_PK_RI.doc: SEPA-tehtävä staattisesta analyysistä<br />

• SEPA_diary_EM_PV.doc: SEPA-tehtävä heuristisesta arvioinnista<br />

• Projektisuunnitelma.doc: Sisältää muiden tehtävien ohella myös testauksen tuntiaikataulun<br />

Dokumentti: <strong>Testaussuunnitelma</strong>.doc Päiväys: 08.02.2005<br />

Projekti: AgileElephant<br />

Omistaja: ElectricSeven Status: Ehdotus<br />

Aihe: <strong>Testaussuunnitelma</strong> Sivu 4 / 11


<strong>Testaussuunnitelma</strong><br />

2. Testauslähestymistapa<br />

2.1 Menetelmät<br />

Testauksessa käytettävät menetelmät on esitelty alla.<br />

2.1.1 Automaattiset yksikkötestit<br />

Yksikkötestaus tehdään järjestelmän tärkeimmälle matalan tason toiminnallisuudelle ja ulkoisille<br />

rajapinnoille. Yksikkötestien kirjoittamiselle rajataan kiinteä osa vastaavan toiminnallisuuden<br />

implementointiin kuluvasta ajasta. Testeissä pyritään keskittymään luokkien tärkeimpään<br />

toiminnallisuuteen, niin että samalla saavutetaan kohtuullinen lausekattavuus muutamalla<br />

testitapauksella. Testit ajetaan CruiseControl-järjestelmässä automaattisen buildin yhteydessä.<br />

Testaus pyritään tekemään ristiin, parijako on sama kuin SEPA-tehtävissäkin. Tarkoituksena on, että<br />

jokaisen kriittisen luokan toteutukseen on perehtynyt vähintään kaksi ryhmän jäsentä, toinen ohjelmoijan<br />

ja toinen testaajan näkökulmasta.<br />

Testien integroinnista build-skripteihin vastaa Heikki Salminen. Työn helpottamiseksi tulee kaikki<br />

testiluokat nimetä samalla tavalla, Test.java.<br />

Yksikkötestausta tehdään rinnakkain itse ohjelmoinnin kanssa, kuitenkin siten että testattavan luokan<br />

suunnittelun tulisi olla pääpiirteittäin valmis ennen yksikkötestien kirjoittamista. Tämä tarkoittaa, että<br />

luokan metodit on nimetty, ja niille on kirjoitettu Javadocit, joiden perusteella testit voidaan luoda.<br />

Automaattisten yksikkötestitapausten suunnitteluun ja toteutukseen pyritään käyttämään 20% testattavan<br />

toiminnallisuuden suunnitteluun ja toteuttamiseen käytetystä ajasta. Jos toiminnallisuutta muutetaan,<br />

laajennetaan tai korjataan, testitapausten muuttamiseen ja lisäämiseen käytetään taas 20% toteutuksen<br />

muutokseen käytetystä ajasta. Muutosten ja korjausten yhteydessä testitapaukset päivittää muutoksen<br />

tekijä eli niitä ei edes pyritä tekemään ristiin. Keskeisimpiin ja monimutkaisimpiin toimintoihin voidaan<br />

käyttää suhteessa enemmän yksikkötestausaikaa, mutta se pyritään tekemään yksinkertaisimpien ja<br />

toteutukseltaan suoraviivaisimpien toimintojen testauksen kustannuksella.<br />

2.1.2 Automatisoitu toiminnallinen testaus HTTPUnitilla<br />

Myös toiminnalliset testit ajetaan öisin buildin yhteydessä. Testit ovat luonteeltaan integrointi- ja<br />

järjestelmätestausta. Toiminnallista testausta varten toteutetaan erillinen www-käyttöliittymä.<br />

Käyttöliittymän navigointi tehdään HTTPUnitilla, ja vastauksena saatua sivua verrataan CVS:stä<br />

löytyvään haluttuun lopputulokseen.<br />

Järjestelmään kehitetään erillinen, mahdollisimman yksinkertainen, selkeärakenteinen ja muuttumaton<br />

www-käyttöliittymä automatisoitua funktionaalista testausta varten. Erillinen ulkoasultaan karsittu<br />

käyttöliittymä syntyy osittain muun kehitystyön lomassa alkuvaiheen prototyyppikäyttöliittymästä, joka<br />

jätetään talteen, kun käyttöliittymän ulkoasua aletaan muokata käytettävyyden kannalta. HTTPUnitilla<br />

toteutetaan käyttöliittymän navigointi ja tietokannan alkuarvojen alustus. Navigoinnin lopputuloksena<br />

saatua www-sivua verrataan diff-työkalulla haluttuun lopputulokseen. Automaattiset testit ajetaan aina<br />

buildin yhteydessä.<br />

Päivitys: HTTPUnit-testausta ei järjestetä, kts. luku 3.2.2.<br />

Dokumentti: <strong>Testaussuunnitelma</strong>.doc Päiväys: 08.02.2005<br />

Projekti: AgileElephant<br />

Omistaja: ElectricSeven Status: Ehdotus<br />

Aihe: <strong>Testaussuunnitelma</strong> Sivu 5 / 11


<strong>Testaussuunnitelma</strong><br />

2.1.3 Käsin tehtävä toiminnallinen testaus<br />

Pääosa toiminnallisesta järjestelmätestauksesta tehdään käsin. Testitapauksista ylläpidetään kompaktia<br />

listaa Excel-taulukkona. Testitapausten kuvaus, suoritusohje ja toivottu lopputulos pidetään<br />

yksinkertaisena ajan säästämiseksi, sillä testien suunnittelija ja suorittaja on sama henkilö. Osa näin<br />

säästetystä ajasta käytetään laadukkaisiin bugiraportteihin, joihin kirjataan tarkka toistosekvenssi,<br />

havaittu lopputulos sekä testaajan odottama lopputulos.<br />

Testitapaukset ryhmitellään testijaksoihin sen mukaan, mihin käyttötapaukseen testit liittyvät. Testit<br />

priorisoidaan jakson sisällä ja suoritetaan aina prioriteettijärjestyksessä. Myös testijaksot priorisoidaan<br />

noudattaen käyttötapausten ja vaatimusten priorisointia. Testisarjojen ja testien suoritusjärjestys joutuu<br />

tietenkin joskus noudattamaan testattavien ominaisuuksien toteutusjärjestystä.<br />

Testitapaukset ja suorituksen tulokset kirjataan Excel-taulukkoon. Samassa taulukossa pidetään kirjaa<br />

myös siitä, mitkä testit on suoritettu (koska ja kuka), kuinka moneen kertaan ne on suoritettu<br />

onnistuneesti ja kuinka paljon virheitä niiden seurauksena on löydetty.<br />

2.1.4 Staattiset menetelmät ohjelmakoodin analysoinnissa<br />

Ohjelmakoodista generoituja tunnuslukuja, kuten metodien pituutta ja kompleksisuutta analysoimalla<br />

pyritään löytämään kohtia koodista, joissa virheiden esiintymistodennäköisyys on erityisen suuri. Lisäksi<br />

virheitä etsitään katselmointien ja ohjelmallisten työkalujen avulla. Staattisten menetelmien käyttöönotto<br />

on kuvattu SEPA-päiväkirjassa SEPA_diary_PK_RI.doc. Projektissa käytetään myös<br />

koodausohjesääntöä, ks. koodaus_ohjeet.doc.<br />

2.1.5 Heuristinen käytettävyyden arviointi<br />

Varsinaiseen käyttäjien kanssa tehtävään käytettävyystestaukseen ei ole aikaa, joten käyttöliittymän<br />

käytettävyyttä pyritään arvioimaan järjestelmällisellä katselmoinnilla. Arvioinnissa käytetään useita<br />

arvioijia, joista jokainen ensin suorittaa arvioinnin yksin ja vasta sen jälkeen arvioijat voivat keskustalla ja<br />

koota löydetyt havainnot yhteen. Tällä varmistetaan se, että toisten arvioijien löytämät viat eivät vaikuta<br />

muiden arviointeihin. Kukin katselmoija kirjoittaa omat havaintonsa arviointitilaisuuden aikana ja<br />

yhteenvedon eri havainnoista tekevät tilaisuuden järjestäjät. Heuristisen arvioinnin käyttöönotto on<br />

kuvattu SEPA-päiväkirjassa SEPA_diary_EM_PV.doc.<br />

2.1.6 Vertaistestaus<br />

Kurssin puitteissa järjestetään FD-vaiheessa järjestelmän testaus vertaisryhmän toimesta.<br />

Vertaisryhmämme on hutiko, joka toteuttaa DiMaS-järjestelmää HIIT:lle<br />

2.2 Työkalut<br />

Testauksen ja raportoinnin apuna käytetään seuraavia työkaluja:<br />

• Bugzilla: Virheiden raportointi ja seuranta<br />

• Excel: Testitapausten ja -tulosten kirjaaminen<br />

• JUnit: Yksikkötestauksen sovelluskehys<br />

• HTTPUnit: Funktionaalinen testaus WWW-käyttöliittymän läpi<br />

• FindBugs: Automaattinen työkalu yleisten ohjelmointivirheiden löytämiseen<br />

• JavaNcss: Laskee ohjelmakoodista kompleksisuustunnuslukuja<br />

Dokumentti: <strong>Testaussuunnitelma</strong>.doc Päiväys: 08.02.2005<br />

Projekti: AgileElephant<br />

Omistaja: ElectricSeven Status: Ehdotus<br />

Aihe: <strong>Testaussuunnitelma</strong> Sivu 6 / 11


<strong>Testaussuunnitelma</strong><br />

• Mozilla Firefox: Käytetään referenssiselaimena käyttöliittymää testatessa<br />

2.3 Resurssit ja työnjako<br />

Testaukseen osallistuvat kaikki projektiryhmän jäsenet projektipäällikköä lukuun ottamatta. Päävastuu<br />

testauksen järjestelyistä, testisuunnittelusta ja toiminnallisen testauksen suorituksesta on Petri Kalsilla ja<br />

Heikki Salmisella. Aikataulutuksen, tarkan resursoinnin ja testauksen priorisoinnin muihin toimiin<br />

verrattuna hoitaa projektipäällikkö.<br />

2.4 Testitapausten hallinta ja dokumentointi<br />

Testitapaukset dokumentoidaan Excel-taulukkona. Jokaista testijaksoa varten tehdään erillinen taulukko<br />

erillisenä dokumenttina. Testien suorituksen etenemistä seurataan samojen taulukoiden avulla.<br />

Dokumentteja säilytetään projektin yleisessä CVS:ssä. Tarkempi suunnittelu tehdään iteraation I1 aikana.<br />

2.5 Vikojen hallinta ja dokumentointi<br />

Kaikki käsin tehtävässä testauksessa havaittujen vikojen hallinnointi ja dokumentointi tehdään Bugzillajärjestelmän<br />

avulla. Viat kirjataan järjestelmään heti, kun ne havaitaan. Vikojen vakavuusluokittelu<br />

tehdään Bugzillan normaalin käytännön mukaisesti. Kohtiin ”platform” ja ”operating system” kirjataan<br />

oletusarvoisesti ”all”. Prioriteetti määritellään vain erikoistapauksissa, normaalitapauksissa kaikki viat<br />

kirjataan arvolla ”P3”. Samalla prioriteetilla olevat viat korjataan oletusarvoisesti vakavuusjärjestyksessä.<br />

Vian kuvauksen yhteyteen kirjataan tieto siitä, minkä testitapauksen yhteydessä se löydettiin.<br />

Käännösvirheiden ja automatisoiduissa testeissä havaittujen vikojen hallinnassa käytetään kevyintä<br />

mahdollista prosessia, koska niitä ei pitäisi tapahtua lainkaan versionhallinnasta peräisin olevilla<br />

versioilla. Öisin tapahtuvan automaattisen käännöksen ja testauksen virheilmoitukset lähetetään<br />

sähköpostilla projektiryhmän postituslistalle. Ensimmäisenä ehtivä korjaa virheen niin pian kuin<br />

mahdollista.<br />

2.6 Testauksen lopetuskriteerit<br />

Testauksen lopetuskriteerit ovat ajankohtaisia vasta iteraatiosta I2 eteenpäin, joten ne päätetään<br />

myöhemmin. Iteraatiossa I1 testausaika loppuu kuitenkin kesken sellaisella tavalla, että lopettamista ei<br />

tarvitse suunnitella.<br />

2.7 Testidata ja -aineistot<br />

Kaikessa automatisoidussa testauksessa tarvitaan järjestelmän tietokantaan vakioitu testidata, jota<br />

käytetään testauksen pohjana. Testidataa ei ladata suoraan tietokantaan, vaan se muodostetaan<br />

järjestelmän rajapinnan kautta. Näin kannan rakenteen muuttaminen on mahdollista testidataa<br />

muuttamatta. Samalla rajapinta tulee testattua. Testidata saadaan tietokantaan tyhjentämällä kanta ja<br />

ajamalla datan muodostava JUnit-pohjainen skripti. Testidataa hallinnoidaan siis kyseistä skriptiä<br />

muokkaamalla.<br />

Dokumentti: <strong>Testaussuunnitelma</strong>.doc Päiväys: 08.02.2005<br />

Projekti: AgileElephant<br />

Omistaja: ElectricSeven Status: Ehdotus<br />

Aihe: <strong>Testaussuunnitelma</strong> Sivu 7 / 11


<strong>Testaussuunnitelma</strong><br />

2.8 Testauksen keskeytys- ja uudelleenaloituskriteerit<br />

Iteraatiossa I1 testausaika loppuu kuitenkin kesken sellaisella tavalla, että keskeytystä ei tarvitse<br />

suunnitella ja järjestelmällisiä uudelleenaloituksia ei tehdä. Iteraatiosta I2 eteenpäin sovellettavat<br />

käytännöt päätetään myöhemmin.<br />

2.9 Tuotokset<br />

Testauksen yhteydessä tuotetaan seuraavat kurssin vaatimat dokumentit:<br />

Vaihe Dokumentti Huomioita<br />

I1 <strong>Testaussuunnitelma</strong> Päivitetään myöhemmissä iteraatioissa<br />

Testitapaukset ja testilogi<br />

Testausraportti<br />

I2<br />

Testitapaukset ja testilogi<br />

Testausraportti<br />

FD<br />

Testitapaukset ja testilogi<br />

Testausraportti<br />

Bugiraporttien yhteenveto<br />

Vertaistestauksen ohjeet<br />

Vertaistestauksen testausraportti<br />

Dokumentti: <strong>Testaussuunnitelma</strong>.doc Päiväys: 08.02.2005<br />

Projekti: AgileElephant<br />

Omistaja: ElectricSeven Status: Ehdotus<br />

Aihe: <strong>Testaussuunnitelma</strong> Sivu 8 / 11


<strong>Testaussuunnitelma</strong><br />

3. Testauksen suorittaminen<br />

3.1 I1-vaihe<br />

I1-vaiheen tärkein testausmenetelmä on automaattiset yksikkötestit. Toteutettavaksi valitut<br />

käyttötapausten skenaariot testataan erikseen käsin. Testitapaukset säilytetään seuraaviin iteraatioihin,<br />

joissa vanha perustoiminnallisuus testataan toistamiseen.<br />

3.1.1 Testausperiaatteet<br />

Vaiheessa I1 toteutetaan tuotteen tärkeimmät hallinnointiominaisuudet priorisoidussa järjestyksessä.<br />

Ominaisuuksien testaus tehdään samassa järjestyksessä niin pian kuin mahdollista. Ominaisuuksia ei ole<br />

vielä suunniteltu tarkasti.<br />

Tässä vaiheessa luotettavuutta ja suorituskykyä ei testata lainkaan ja käytettävyyttäkin vain vähän.<br />

Testauksessa keskitytään toiminnallisiin ominaisuuksiin ja niiden virheettömyyteen ja<br />

määrittelynmukaisuuteen.<br />

3.1.2 Resurssit ja työnjako<br />

Yksikkötestien suunnitteluun osallistuvat sekä testitapausten toteuttaja että testausvastaavat Kalsi ja<br />

Salminen. Testitapausten toteutuksen tekee joko toiminnallisuuden toteuttajan pari tai aikataulusyistä<br />

toteuttaja itse. Toiminnallisen testauksen suunnittelun tekevät yhteystyönä Kalsi ja Salminen. Testien<br />

suorittamiseen osallistuvat kaikki ryhmän jäsenet, mutta Kalsi ja Salminen käyttävät siihen suuremman<br />

työpanoksen kuin muut.<br />

Ainakin vaiheen alussa kukin suorittaa testauksen omalla koneellaan. On vielä epäselvää, saadaanko<br />

yhteiseen käyttöön sopiva palvelin järjestettyä ja voidaanko sitä käyttää testauksessa. Jos testitulokset<br />

vaihtelevat eri koneilla, referenssiympäristö pyritään järjestämään.<br />

3.1.3 Tavoitteet<br />

• Iteraation päättyessä tuotteeseen ei jää lainkaan löydettyjä mutta korjaamattomia tai<br />

tarkastamattomia vakavuusluokkien ”blocking” ja ”critical” vikoja<br />

• Iteraation aikana tuotteesta löydetään korkeintaan kolme vakavuusluokkien ”blocking” ja ”critical”<br />

vikaa<br />

• Järjestelmän ytimen muodostaville luokille ja tärkeimmän iteraatiossa toteutetun<br />

toiminnallisuuden toteuttaville luokille saadaan tehtyä yksikkötestit<br />

• Iteraation päättyessä kaikki toteutetut yksikkötestit menevät läpi virheettömästi<br />

• Iteraatiossa toteutetun toiminnallisuuden kattavat testitapaukset saadaan suunniteltua<br />

• Vähintään 75% suunnitelluista testitapauksista saadaan suoritettua<br />

3.1.4 Yksikkötestaus<br />

Yksikkötestitapausten suunnittelu aloitetaan mahdollisimman pian sen jälkeen kun testattavan<br />

ominaisuuden tekninen määrittely on valmis. Yksikkötestitapausten toteutus aloitetaan mahdollisimman<br />

pian sen jälkeen kun luokkien rakenne ja javadoc-dokumentointi on valmis. Toteutuksen valmistuessa<br />

Dokumentti: <strong>Testaussuunnitelma</strong>.doc Päiväys: 08.02.2005<br />

Projekti: AgileElephant<br />

Omistaja: ElectricSeven Status: Ehdotus<br />

Aihe: <strong>Testaussuunnitelma</strong> Sivu 9 / 11


<strong>Testaussuunnitelma</strong><br />

yksikkötestit viimeistellään ja testataan. Kaikkeen tähän pyritään käyttämään yhteensä noin 20%<br />

toteutusajasta kuten edellä on mainittu. Yksikkötesteissä havaitut virheet korjataan nopeasti, korjaukset<br />

priorisoidaan uuden toiminnallisuuden toteutuksen edelle.<br />

3.1.5 Käsin tehtävä toiminnallinen testaus<br />

Kaikki I1-vaiheessa toteutettavat käyttötapausten skenaariot testataan käsin. Käsin tehtävä testaus<br />

suoritetaan iteraation loppuvaiheessa, kun kaikki suunnitellut toiminnallisuudet on saatu toteutettua.<br />

Testitapausten suunnittelu aloitetaan mahdollisimman pian sen jälkeen kun testattavan ominaisuuden<br />

toiminnallinen määrittely on valmis. Toiminnallinen testaus suunnitellaan etukäteen ja toteutetaan, kun<br />

yksikkötesteissä havaitut virheet on korjattu.<br />

Tässä vaiheessa toiminnalliseen testaukseen pyritään käyttämään kokonaisuudessaan noin 20%<br />

työajasta.<br />

3.1.6 Muut menetelmät<br />

Automaattisten staattisten analyysimenetelmien käyttöä aloitellaan jo tässä vaiheessa. Katselmointien<br />

tarve tämän iteraation aikana harkitaan vasta myöhemmin. Jos virheitä löydetään runsaasti,<br />

rutiinikatselmoinnit aloitetaan. Ikonen ja Kallioniemi järjestävät vähintään yhden yleisen<br />

koodikatselmointitilaisuuden. Käytettävyyden heuristinen arviointi järjestetään kerran aivan iteraation<br />

lopussa.<br />

3.2 I2-vaihe<br />

I2-vaiheessa siirrytään laajempaan järjestelmätestaukseen. Vanhat automatisoidut yksikkötestit pyörivät<br />

edelleen, mutta uusia yksikkötestejä kirjoitetaan harkitusti. Vanhoja testejä päivitetään, jos luokkien<br />

toiminnallisuus muuttuu. Matalan tason toteutuksen muuttamista I1-vaiheen jälkeen pyritään välttämään.<br />

3.2.1 Yksikkötestaus<br />

Vanhoja yksikkötestejä ajetaan edelleen buildien yhteydessä. Uusia testejä voidaan kirjoittaa kattavuuden<br />

parantamiseksi, mikäli jonkin yksittäisen luokan epäillään sisältävän virheitä. Testien kirjoittamiseen<br />

varattu aika on kuitenkin I2-vaiheessa hyvin rajallinen.<br />

3.2.2 Automatisoitu toiminnallinen testaus HTTPUnitilla<br />

HTTPUnitilla tehtävästä testauksesta päätettiin I2-vaiheessa luopua ajanpuutteen takia. Yksikkötestit<br />

jäivät I1-vaiheessa puutteelliseksi, ja niitä parannetaan HTTPUnit-testauksen kustannuksella.<br />

Yksikkötestit olivat yksi asiakkaan vaatimuksista projektille.<br />

3.2.3 Käsin tehtävä toiminnallinen testaus<br />

Samoin kuin I1-vaiheessa, kaikki toteutettavat ominaisuudet testataan myös käsin www-käyttöliittymän<br />

kautta. Ajanpuutteen takia osa aikaisemmin toteutetusta toiminnallisuudesta voidaan joutua testaamaan<br />

vasta I2-vaiheessa.<br />

Testauksesta päätettiin tehdä exploratory-tyyppistä, jolloin testitapaukset ovat suuntaa-antavia<br />

lähestymistapoja testauksen suorittamiselle. Yksityiskohtaisten testien kirjoittaminen huomattiin vaikeaksi,<br />

Dokumentti: <strong>Testaussuunnitelma</strong>.doc Päiväys: 08.02.2005<br />

Projekti: AgileElephant<br />

Omistaja: ElectricSeven Status: Ehdotus<br />

Aihe: <strong>Testaussuunnitelma</strong> Sivu 10 / 11


<strong>Testaussuunnitelma</strong><br />

sillä järjestelmän korkean tason toiminnallisuuksia ei ollut vielä tässä vaiheessa dokumentoitu testausta<br />

varten riittävällä tarkkuudella. Tarkkojen testitapausten kirjoittaminenkin perustuisi siis testaajan intuitioon.<br />

3.3 FD-vaihe<br />

3.3.1 Vertaistestaus<br />

Vertaistestaukseen on käytettävissä vähintään 8 tuntia vertaisryhmän aikaa FD-vaiheen aikana.<br />

Vertaistestausta varten suunnitellaan ohjeet erilliseen dokumenttiin käyttäen kurssin määrittelemää<br />

mallia, joka löytyy osoitteesta http://www.soberit.hut.fi/T-76.115/04-<br />

05/ohjeet/template/TestCharterTemplate.doc.<br />

3.3.2 Hyväksymistestaus<br />

Lopullisen hyväksymistestauksen suorittaa asiakas projektin lopussa. Tuotetta esitellään asiakkaalle<br />

projektin aikana niin usein, että sisällön ja toiminnallisuuden pitäisi tässä vaiheessa olla asiakkaan<br />

toiveiden mukainen. Hyväksymistestaus aikataulutetaan siten, että siinä löydetyt pienet virheet ehditään<br />

vielä korjata. Jos suuritöisiä virheitä löytyy vielä hyväksymistestauksessa, ne joudutaan jättämään<br />

korjaamatta. Asiakkaalla ei ole mahdollisuutta varsinaisesti hyväksyä tai hylätä tuotetta, mutta<br />

hyväksymistestauksen tulos vaikuttanee ryhmän saamaan arvosteluun.<br />

Asiakkaalle tarjotaan mahdollisuus kokeilla tuotetta omatoimisesti jo ennen sen lopullista valmistumista.<br />

Asiakkaalle järjestetään myös mahdollisuus raportoida havaitsemansa virheet suoraan Bugzillaan.<br />

Dokumentti: <strong>Testaussuunnitelma</strong>.doc Päiväys: 08.02.2005<br />

Projekti: AgileElephant<br />

Omistaja: ElectricSeven Status: Ehdotus<br />

Aihe: <strong>Testaussuunnitelma</strong> Sivu 11 / 11

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!