Testaussuunnitelma

Asdf

Helsinki 22.2.2008 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi

581260 Ohjelmistotuotantoprojekti (6 ov)

Projektiryhmä Kuisma Sami Louhio Jaakko Rimpilä Raine Urtela Mika Vilhonen Vesa

Asiakas Pasanen Tomi

Johtoryhmä Yrjänäinen Sampo Simola Kimmo

Kotisivu

http://www.cs.helsinki.fi/group/asdf

Versiohistoria Versio Päiväys Tehdyt muutokset 1.0 14.2.2008 Ensimmäinen versio

Sisältö

1 Johdanto 1

2 Sanasto 1

3 Yksikkötestaus 1

4 Integrointitestaus 2

5 Järjestelmätestaus 2

6 Testausaikataulu 2

7 Liitteet 3

7.1 Testitapaukset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 7.1.1 Käyttäjätunnuksen luonti . . . . . . . . . . . . . . . . . . . . . . 3 7.1.2 Kirjautuminen tunnuksella . . . . . . . . . . . . . . . . . . . . . 3 7.1.3 Pelipöydän luonti . . . . . . . . . . . . . . . . . . . . . . . . . . 4 7.1.4 Texas Hold’em pelipöydän luonti . . . . . . . . . . . . . . . . . 4 7.1.5 Pöytään siirtyminen . . . . . . . . . . . . . . . . . . . . . . . . 5 7.1.6 Paikan varaaminen . . . . . . . . . . . . . . . . . . . . . . . . . 5 7.1.7 Useamman botin lisääminen . . . . . . . . . . . . . . . . . . . . 5 7.1.8 Peliin liittyminen . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7.1.9 Texas Hold’em vuoron pelaaminen . . . . . . . . . . . . . . . . 6 7.1.10 Pöydän etsiminen nimellä . . . . . . . . . . . . . . . . . . . . . 7 7.1.11 Pöydän etsiminen pelaajan perusteella . . . . . . . . . . . . . . . 7 7.1.12 Pöytien järjestäminen attribuuttien mukaan . . . . . . . . . . . . 8 7.1.13 Tilin hallinnointi . . . . . . . . . . . . . . . . . . . . . . . . . . 8 7.1.14 Botin luominen . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 7.1.15 Botin poistaminen . . . . . . . . . . . . . . . . . . . . . . . . . 9

1 Johdanto

Tämä dokumentti käsittelee asdf -ohjelmistotuotantoryhmän pokeripalvelimen ja siihen liittyvän asiakasohjelman testausta. Dokumentissa pyritään antamaan kuva käytettävistä testausmenetelmistä ja -strategioista sekä määrittää testien hyväksymiskriteerejä ja aikataulua.

2 Sanasto

Junit Javalle suunniteltu testauskehys, jonka avulla on helppo tehdä toistettavia yksikkötestauksia.

Tynkä (Stub) Testauksessa käytettävä komponentti, joka toteuttaa testiin vaaditun minimitoiminnallisuuden. Tynkä korvaa toisen yksikön, jonka toiminnasta testattava yksikkö riippuu.

Yksikkö Koodin selkeästi rajoittuva pieni kokonaisuus, esimerkiksi metodi tai luokka.

lasilaatikkotestaus (White box testing) testaaja pääsee käsiksi testattavan osan koodiin, ja tuntee sen rakenteen. Esimerkkinä yksikkötestaus.

3 Yksikkötestaus

Yksikkötestauksella varmistetaan koodin pienimpien kokonaisuuksien, pääosin luokkien, toiminta. Tavoitteena on testata, että yksikkö toteuttaa siltä vaaditut tehtävät, eikä sisällä virheellistä toiminnallisuutta. Testaus keskittyy siis metodien ja luokkien virheiden löytämiseen ja varmistumiseen, että ne toteuttavat halutun rajapinnan. Testauksessa apuna voidaan käyttää JUnit-työkalua.

Koska yksikkötestaus perustuu lähinnä koodin rakenteen tuntemiseen (lasilaatikkotestaus), sen voi parhaiten tehdä yksikön toteuttaja. Testaus tehdään yksikön kehittämisen yhteydessä heti sen valmistuessa. Testisyötteinä käytetään niin hyväksyttäviä syötteitä, kuin kelvottomiakin syötteitä, jotta varmistutaan poikkeuksien käsittelystä. Syötteitä valittaessa pyritään etsimään mahdollisesti ongelmia aiheuttavia arvoja.

Testausta varten kirjoitetaan testitapauksia kullekin yksikölle erillisenä komponenttina, joilla kaikki luokan ei-triviaalit toiminnot saadaan testattua. Jos luokka on riippuvainen muista (vielä testaamattomista) komponenteista, käytetään testaamiseen tynkiä. Testitapaukset luodaan matalan tason suunnitelmien perusteella, ja tavalla joka tuottaa testin tulokseksi joko onnistumisen tai epäonnistumisen ja tapausten kuvaukset kirjoitetaan koodiin kommentteina, jotka toimivat myös yksikkötestauksen dokumentointina. Yksikkötestauksen kattavuutta pyritään mittamaan, jotta saada kuvaa testien kattavuudesta.

4 Integrointitestaus

Integrointitestauksessa testaan järjestelmän eri komponenttien yhteistoimintaa. Tarkoitus on selvittää, että eri komponentit käyttävät oikein toistensa rajapintoja, eikä synny ylimääräisiä sivuvaikutuksia. Kahden yksikön integrointitesti on tehty, kun koko niiden välinen toiminta ja sivuvaikutukset on testattu, ja mahdolliset poikkeukset on käyty läpi, ja koko järjestelmän integrointitestaus on valmis kun kaikki yksiköt on liitetty näin yhteen.

Järjestelmän testauksessa keskitytään kriittisiin loppukäyttäjällekin avoinna oleviin rajapintoihin sekä protokollaan asiakkaan ja palvelimen välillä. Protokollaa testataan suunnittelemalla erikoisia ja monella mahdollisella tavalla virheellisiä viestejä ja tutkimalla palvelimen toiminnan oikeellisuutta virheellisen viestin tilanteessa.

Rajapintoja testataan suunnitelluilla oikeilla ja virheellisillä arvoilla. Integrointitestien suoritus automatisoidaan, jotta voidaan saada välittömästi kiinni kehityksessä ilmenevää regressiota. Myös integrointitestit toteutetaan kehitysvaiheessa.

5 Järjestelmätestaus

Järjestelmätestauksessa varmistetaan, että järjestelmä täyttää sille asetetut vaatimukset. Vaatimusmäärittelyn kohdat käydään läpi oikean järjestelmän kanssa ajoittain ja virheet korjataan. Järjestelmätestaukseen käytetään myös vaatimusmäärittelyn käyttötapauksia, jotka kukin käydään läpi käyttöliittymän avulla, ja varmistetaan, että kuvattu toiminto onnistuu.

6 Testausaikataulu

Yksikkötestit ajetaan kehittäjän toimesta heti yksikön valmistuttua (myös yksikkötesti on valmistunut). Integrointitestit pyörivät automaattisesti öisin tai manuaalisesti käynnistettynä. Automaattinen testijärjestelmä pyritään käynnistämään 20.2 mennessä. Automaattinen testiajo pyritään käynnistämään versionhallintaan tulleen muutoksen toimesta. Järjestelmätestausta suoritetaan sopivaksi katsottuina ajankohtina.

7 Liitteet

7.1 Testitapaukset

7.1.1 Käyttäjätunnuksen luonti

Kuvaus Käyttäjä aloittaa ohjelmiston käytön ja luo itselleen salasanalla suojatun käyttäjätunnuksen

Lähtötila ei kirjautunut sisään

Syötteet Käyttäjätunnus (merkkijono) salasana (merkkijono)

Tulosteet Tieto luonnin onnistumisesta tai epäonnistumisesta

Nro Tunnus  Toiminta
1  Uusi  Käyttäjätili lisätään ja ilmoitetaan onnistuminen, ja käyttäjä

kirjataan sisään tunnuksella

2 Olemassaoleva Käyttäjätilejä ei muuteta, ilmoitetaan tunnuksen olevan varattu

7.1.2 Kirjautuminen tunnuksella

Kuvaus Käyttäjä kirjautuu sisään käyttäjätunnuksella

Lähtötila ei kirjautunut sisään

Syötteet Käyttäjätunnus (merkkijono) salasana (merkkijono)

Tulosteet Käyttäjän tiedot näkyvät käyttöliittymässä tai ilmoitus epäonnistumisesta

Nro Tunnus  Salasana Toiminta

1 Olemassaoleva Oikea Kirjataan sisään, käyttäjän tiedot näkyvät ruudun ylälaidas-

sa

2  Olemassaoleva Väärä  Ilmoitetaan virheellisesta tunnuksesta tai salasanasta
3  Uusi  -  Ilmoitetaan virheellisesta tunnuksesta tai salasanasta

7.1.3 Pelipöydän luonti

Kuvaus Käyttäjä luo pöydän haluamaansa pelityyppiin

Lähtötila Aulanäkymä, kirjautunut sisään Ei olemassaolevia pöytiä muita pöytiä samasta tyypistä muita pöytiä eri tyypistä

Syötteet Pelityyppi (valitaan palvelimelle toteutetuista peleistä) Pöydän tunniste (merkkijono) Pelikohtaiset tiedot (valitaan pelin puitteissa)

Tulosteet Pöytä lisätään aulaan

Nro Tunnus  Toiminta

1 Olemassaoleva Ilmoitetaan varatusta tunnuksesta

2  Uusi  Lisätään pöytä palvelimelle, ja siirrytään pöytään

7.1.4 Texas Hold’em pelipöydän luonti

Kuvaus Käyttäjä luo pöydän Texas Hold’emille

Lähtötila Aulanäkymä, kirjautunut sisään(?)

Syötteet Pelityyppi (Texas Hold’em) Pöydän tunniste (merkkijono) Pelaajien määrä (2...10) Pelaajien minimimäärä (2...Pelaajien määrä) pieni sokkopanos (lukuarvo) suuri sokkopanos (lukuarvo)

Tulosteet Pöytä lisätään aulaan

Nro Tunnus  Toiminta

1 Olemassaoleva Ilmoitetaan varatusta tunnuksesta

2  Uusi  Lisätään pöytä palvelimelle, ja siirrytään pöytään

7.1.5 Pöytään siirtyminen

Kuvaus Käyttäjä siirtyy olemassaolevaan pöytään

Lähtötila Aulanäkymä

Syötteet Pöytä (valitaan aulasta)

Tulosteet Siirrytään aulasta pöytänäkymään

Nro Pöytä  Toiminta

1 Olemassaoleva OK, siirrytään pöydän seuraajiin

2  Poistettu  Poistetaan pöytä listalta, pysytään aulassa

7.1.6 Paikan varaaminen

Kuvaus Käyttäjä valitsee paikan seuraamassaan pöydässä jotta voisi istua peliin mukaan

Lähtötila Pöytänäkymä, kirjautunut sisään Tyhjä pöytä Yksi vapaa paikka Muutama vapaa paikka

Syötteet Paikka (valitaan pöytänäkymästä)

Tulosteet Paikka merkitään varatuksi, ja käyttäjälle avataan dialogi tarvittaviin päätöksiin

Nro Paikka Toiminta
1  Vapaa OK

2 Varattu Merkitään paikka varatuksi

7.1.7 Useamman botin lisääminen

Kuvaus Käyttäjä lisää useamman botin yhdellä kertaa pelipöytään

Lähtötila Tilin hallintanäkymä Tyhjä pöytä Muutama paikka vapaana pöydässä

Syötteet Paikat (valitaan pöytälistauksesta) Botit (valitaan luoduistaboteista kullekin paikalle)

Tulosteet Paikat merkitään varatuksi, ja lisätään botit peliin

Nro Paikat  Toiminta
1  Kaikki vapaana OK

2 Osa varattu Varataan vielä vapaat paikat, ja merkitään muut varatuiksi muille

7.1.8 Peliin liittyminen

Kuvaus Käyttäjä liittyy peliin varaamallaan paikalla

Lähtötila Pöytänäkymä, istu pöytään -dialogi

Syötteet Pelaajatyyppi (itse (vakio)/Botti (bottikäyttäjällä valittavana)) Pelinimi (Merkkijono/valitaan listalta) Peliin tuotavat rahat (lukuarvo>0)

Tulosteet Pelaaja/botti merkitään paikalle, tililtä vähennetään otetut rahat

Nro Tyyppi Toiminta

1 Itse Pelaaja istuu pöytään, ja liittyy peliin

2 Botti Bottipelaaja lisätään paikalle

7.1.9 Texas Hold’em vuoron pelaaminen

Kuvaus Pelaaja panostaa pelin pottiin

Lähtötila Pöytänäkymä, pelissä mukana

Syötteet Toiminto (fold/call/raise/check/... näppäin käytettävissä vain kun toiminto mahdollinen) Rahamäärä (valittava [mini_raise, min(max_raise, pelaajan kassa)], vain korotettaessa)

Tulosteet Vuoro siirtyy seuraavalle pelaajalle, valittu toiminto suoritetaan

Nro Tyyppi Pelaajan kassa Toiminta

1 Fold - Pelaaja ei enää osallistu käden pelaamiseen. Vuoro siirtyy

seuraavalle

2 Call Riittävä Määrä maksetaan pottiin ja vähennetään pelaajan kassasta. Vuoro siirtyy seuraavalle 3 Call Ei riitä Pelaaja siirtyy all-in, ja hänen osuutensa mukaan muodos-

tetaan erillinen potti. Vuoro siirtyy seuraavalle

4 Raise - Määrä maksetaan pottiin ja vähennetään pelaajan kassasta. Vuoro siirtyy seuraavalle

5  Check -  Vuoro siirtyy seuraavalle

7.1.10 Pöydän etsiminen nimellä

Kuvaus Käyttäjä etsii pöytää tietyllä tunnisteella

Lähtötila Aulanäkymä

Syötteet Pöydän tunniste (merkkijono)

Tulosteet Löydetyt pöydät

Nro Tunniste Toiminta

1 Löytyy Listataan pöytä

2  Ei löydy Tyhjä lista

7.1.11 Pöydän etsiminen pelaajan perusteella

Kuvaus Käyttäjä etsii pöytiä, joissa tietty pelaaja on pelaamassa

Lähtötila Aulanäkymä

Syötteet Pelaajan nimi (merkkijono)

Tulosteet Löydetyt pöydät

Nro Nimi  Toiminta

1 Löytyy Listataan pöydät, joissa pelaaja on

2  Ei löydy Tyhjä lista

7.1.12 Pöytien järjestäminen attribuuttien mukaan

Kuvaus Käyttäjä järjestää pyödät attribuutin arvon mukaan nousevaan/laskevaan järjestykseen

Lähtötila Aulanäkymä

Syötteet Attribuutti (valitaan mahdollisista)

Tulosteet Pöytäjärjestys päivittyy

7.1.13 Tilin hallinnointi

Kuvaus Käyttäjä näkee tilinsä tiedot, ja luoneensa botit

Lähtötila Aulanäkymä tai Pöytänäkymä, kirjautunut sisään

Syötteet Hallinnointi

Tulosteet Käyttäjä saa hallinnointinäkymän

7.1.14 Botin luominen

Kuvaus Käyttäjä luo bottipelaajan

Lähtötila Tilin hallintanäkymä

Syötteet Bottinimi (merkkijono) tekoälyalgoritmi (valitaan toteutetuista)

Tulosteet Botti lisätään listalle

Nro Tunnus  Toiminta

1 Olemassaoleva Ilmoitetaan varatusta nimestä

2  Uusi  Lisätään botti listalle saldolla 0

7.1.15 Botin poistaminen

Kuvaus Käyttäjä poistaa bottipelaajan

Lähtötila Tilin hallintanäkymä

Syötteet Bottinimi (valitaan listalta)

Tulosteet Botti poistetaan listalta