Testausdokumentti

Ohjelmistotuotantoprojekti TAHKO (syksy 2001)

Heikki Hiltunen

Tero Kallio

Anu Leponiemi

Piia Porvali

Petri Savolainen

Janne Savukoski


Sisällys

1. Testaussuunnitelma
1.1. Johdanto
1.2. Testausperiaatteet
1.3. Testauksen kohde
1.4. Testauksen tavoitteet
1.5. Testausympäristö
1.6. Yksikkötestaus
1.6.1. com.sonera.tahko
1.6.2. com.sonera.tahko.db
1.6.3. com.sonera.tahko.filters
1.7. Järjestelmätestaus
1.7.1. Testitapaukset
1.7.1.1. Kirjautuminen
1.7.1.2. Asiakkaan haku
1.7.1.3. Asiakkaan valinta
1.7.1.4. Tuotteen haku
1.7.1.5. Tuotteen valinta
1.7.1.6. Tuotteen hinnoittelu
1.7.1.7. Tarjouksen viimeistely
1.7.1.8. Tarjouksen tulostaminen
1.7.1.9. Tarjouksen lataaminen
2. Toteutuneesta testauksesta
A. Lähteet

Luku 1. Testaussuunnitelma

1.1. Johdanto

Dokumentti kuvaa Tahko-järjestelmän testauksessa käytetyt menetelmät ja materiaalin. Ohjelman testaus jakautuu Java-luokkien yksikkötestaukseen ja käyttötapauksiin perustuvaan järjestelmätestaukseen.

1.2. Testausperiaatteet

Testausperiaatteet-kappaleessa kuvataan tässä testaussuunnitelmassa määritellyn testauksen yleiset periaatteet, kohde ja tavoitteet.

1.3. Testauksen kohde

Testauksen kohteena on Helsingin yliopiston Tietojenkäsittelytieteen laitoksen Sonera Oyj:lle tehdyn Ohjelmistotuotanto-projektin Tahko-järjestelmä.

1.4. Testauksen tavoitteet

Järjestelmä on hyvin konfiguroituva, ja testauksen tarkoituksena onkin ensisijaisesti todentaa Tahko-järjestelmän yleinen toimivuus vaatimusdokumentissa [1] eriteltyjen vaatimusten perusteella. Järjestelmätasolla testaus suoritetaan tarjousten generointi -esimerkkikonfiguraation avulla (ks. luku 5: Järjestelmätestaus).

1.5. Testausympäristö

Testaus suoritetaan Unix-ympäristössä X Window System, Version 11. Lisäksi järjestelmään on asennettu Tomcat 4.0. Tahko käyttää Cocoon 2.0:n mukana tulevia versioita Apachen Xerces -, Xalan - ja Fop -XML-työkaluista.

1.6. Yksikkötestaus

Yksikkötestauksessa testataan Tahkon Java-luokan ulkoinen rajapinta kutsumalla sitä toisesta Java-luokasta. Tällaista luokkaa kutsutaan testiluokaksi.

Yksikkötestauksessa testataan Tahkon Java-luokat JUnit-testikehyksen (engl. framework) avulla [2]. Jokaista luokan metodia kohti on 1-n testimetodia sen mukaan, kuinka monimutkainen metodi on. Metodit testaavat kunkin luokan toiminnan. Testien tavoitteena on varmentaa, että jokainen luokka toimii oikein luokan ulkoisen rajapinnan kuvauksen mukaisesti.

Merkittävä osa Tahkon toiminnasta perustuu XML-kielellä määriteltyihin konfiguraatiotiedostoihin, mikä onkin koko järjestelmän perimmäinen ajatus. Näitä konfiguraatioita ei testata yksikkötasolla vaan ne tulevat mukaan järjestelmätason testauksessa. Tämä menettely johtuu siitä, että XML-konfiguraatiot ovat asiakkaan itse muutettavissa.

Testiluokat kirjoitetaan toteutusvaiheessa ohjelmakoodin valoidoimiseksi mahdollisimman ajoissa.

1.6.1. com.sonera.tahko

com.sonera.tahko -paketissa on yhdeksän luokkaa, joiden toiminta testataan JUnit-yksikkötesteillä:

  • DependencyCore
  • DependencyRule
  • FopWrapper
  • ProfileDocument
  • Tahko
  • TahkoLog
  • TahkoServlet
  • TomcatWrapper
  • XMLProcessor

Lisäksi mukana on neljä luokkaa, joita ei yksikkötestata erikseen. Nämä luokat ovat TahkoException, PageNotFoundException, XMLProcessingException ja PDFProcessingExecution.

1.6.2. com.sonera.tahko.db

com.sonera.tahko.db -paketin luokat DBSlave ja DBResult huolehtivat tietokantaliikenteestä.

Näiden luokkien yksikkötestit eivät ole kattavat; tietokantaluokkien yksikkötestaamisen sijaan tietokantaliikenne testataan lähinnä järjestelmätestauksen yhteydessä, jolloin käytössä on oikea tietokanta ja tiedetään, mitä dataa tietokannassa on.

1.6.3. com.sonera.tahko.filters

com.sonera.tahko.filters -paketti sisältää kaksi luokkaa: DependencyFilter- ja XMLFilter-luokat. Ne testataan JUnit-testeillä.

1.7. Järjestelmätestaus

Järjestelmätestaus koostuu sarjoista testitapauksia, jotka testaaja käy läpi testimäärittelyssä kuvatulla tavalla. Testitapaukset on määritelty toisaalta tukemaan loppukäyttäjän yleisimpiä käyttötapauksia ja toisaalta kattamaan kaikki mahdolliset tilanteet. Näin todennetaan myös järjestelmän käyttäytymistä virhetilanteissa.

1.7.1. Testitapaukset

Tässä kappaleessa kuvataan testitapaukset ryhmiteltyinä tehtävittäin. Jokaista tehtävää kohti on olemassa useampia testitapauksia, joista osa päättyy virhetilanteeseen. Toiminnan tulee vastata suunnitteludokumentissa kuvattua toimintaa [3], joka puolestaan perustuu vaatimusdokumentin vaatimuksiin [1].

1.7.1.1. Kirjautuminen

Taulu 1.1. Kirjautumisen testitapaukset

ID

Tapaus

Odotettu tulos

Tulos

A1

Kirjaudutaan järjestelmään oikealla käyttäjätunnuksella ja salasanalla

Siirrytään asiakkaan valinta -sivulle

OK

A2

Kirjaudutaan järjestelmään olemassaolevalla käyttäjätunnuksella ja virheellisellä salasanalla

Saadaan ilmoitus kirjautumisen epäonnistumisesta

OK

A3

Kirjaudutaan järjestelmään virheellisellä käyttäjätunnuksella ("~~~~").

Saadaan ilmoitus kirjautumisen epäonnistumisesta

OK

A4

Kirjaudutaan järjestelmään käyttäjätunnuksella, jota ei ole olemassa ("rane").

Saadaan ilmoitus kirjautumisen epäonnistumisesta

OK

1.7.1.2. Asiakkaan haku

Taulu 1.2. Asiakkaan haun testitapaukset

ID

Tapaus

Odotettu tulos

Tulos

B1

Jätetään hakukenttä tyhjäksi ja painetaan hakupainiketta.

Kaikki tietueet näytetään.

OK

B2

Haetaan asiakasta nimellä, jota ei ole tietokannassa.

Haku ei palauta yhtään tietuetta.

OK

B3

Haetaan pienillä kirjaimilla asiakasta, joka on isoilla kirjaimilla tietokannassa.

Haku palauttaa kyseisen asiakkaan.

OK

B4

Haetaan isoilla kirjaimilla asiakasta, joka on pienillä kirjaimilla tietokannassa.

Haku palauttaa kyseisen asiakkaan.

OK

B5

Haetaan asiakasta kahdella sanalla, esimerkiksi "yritys osasto".

Haku ei palauta asiakasta.

OK

1.7.1.3. Asiakkaan valinta

Taulu 1.3. Asiakkaan valinnan testitapaukset

ID

Tapaus

Odotettu tulos

Tulos

C1

Valitaan asiakas klikkaamalla hiirellä.

Tarjous-sivun asiakasta koskevat tiedot täyttyvät.

OK

1.7.1.4. Tuotteen haku

Taulu 1.4. Tuotteen haun testitapaukset

ID

Tapaus

Odotettu tulos

Tulos

D1

Jätetään hakukenttä tyhjäksi ja painetaan hakupainiketta.

Kaikki tietueet näytetään.

OK

D2

Haetaan tuotetta, jota ei ole tietokannassa.

Haku ei palauta tuotteita.

OK

D3

Haetaan pienillä kirjaimilla tuotetta, joka on isoilla kirjaimilla tietokannassa.

Kyseinen tietue palautetaan.

OK

D4

Haetaan isoilla kirjaimilla tuotetta, joka on pienillä kirjaimilla tietokannassa.

Kyseinen tietue palautetaan.

OK

D5

Haetaan tuotetta kahdella sanalla jotka esiintyvät jonkin tuotteen nimessä peräkkäin, esimerkiksi "sonera kotisoitto".

Kyseinen tietue palautetaan.

OK

D6

Haetaan tuotetta kahdella sanalla jotka eivät esiinny minkään tuotteen nimessä peräkkäin, mutta esiintyvät jonkin tuotteen nimessä erikseen, esimerkiksi "nimen_ensimmäinen_sana nimen_viimeinen_sana".

Kyseistä tietuetta ei palauteta.

OK

1.7.1.5. Tuotteen valinta

Taulu 1.5. Tuotteen valinnan testitapaukset

ID

Tapaus

Odotettu tulos

Tulos

E1

Valitaan tuote klikkaamalla linkkiä hiirellä.

Päivitetään tarjoussivua tuotetietojen perusteella.

OK

1.7.1.6. Tuotteen hinnoittelu

Taulu 1.6. Tuotteen hinnoittelun testitapaukset

ID

Tapaus

Odotettu tulos

Tulos

F1

Syötetään tuotteen kappalemäärä -kenttään numeroarvo ja painetaan päivitysnappia.

Kentän arvosta riippuvat tiedot päivittyvät oikein tarjoussivulla.

OK

F2

Syötetään tuotteen hinta -kenttään desimaaliluku ja painetaan päivitysnappia.

Kentän arvosta riippuvat tiedot päivittyvät oikein tarjoussivulla.

OK

F3

Syötetään tuotteen hinta -kenttään kokonaisluku ja painetaan päivitysnappia.

Kentän arvosta riippuvat tiedot päivittyvät oikein tarjoussivulla.

OK

F5

Syötetään tuotteen hinta -kenttään kokonaisluku ja rahan tunniste, esim. "50 mk", ja painetaan päivitysnappia.

Annetaan virheilmoitus virheellisestä lukuarvosta.

Bugaa - lukuarvotarkistus puuttuu

F6

Syötetään tuotteen hinta -kenttään numero nolla ja painetaan päivitysnappia.

Kentän arvosta riippuvat tiedot päivittyvät oikein tarjoussivulla.

OK

F7

Syötetään tuotteen hinta -kenttään suositushintaa alhaisempi mutta minimihintaa suurempi hinta ja painetaan päivitysnappia.

Kentän arvosta riippuvat tiedot päivittyvät oikein tarjoussivulla.

OK

F8

Syötetään tuotteen hinta -kenttään minimihintaa alhaisempi hinta ja painetaan päivitysnappia.

Kentän arvosta riippuvat tiedot päivittyvät oikein tarjoussivulla.

OK

F9

Syötetään tuotteen kappalemäärä -kenttään jotakin muuta kuin numeroarvo ja painetaan päivitysnappia.

Annetaan virheilmoitus virheellisestä lukuarvosta.

Bugaa - lukuarvotarkistus puuttuu

F10

Syötetään tuotteen hinta -kenttään jotakin muuta kuin numeroarvo ja painetaan päivitysnappia.

Annetaan virheilmoitus virheellisestä lukuarvosta.

Bugaa - lukuarvotarkistus puuttuu

F11

Syötetään tuotteen hinta -kenttään numero nolla ja painetaan päivitysnappia.

Kentän arvosta riippuvat tiedot päivittyvät oikein tarjoussivulla.

OK

1.7.1.7. Tarjouksen viimeistely

Taulu 1.7. Tarjouksen viimeistelyn testitapaukset

ID

Tapaus

Odotettu tulos

Tulos

G1

Kirjoitetaan tervehdysteksti ja tulostetaan tarjous.

Tarjous tulostuu oikein.

OK

G2

Kirjoitetaan tervehdysteksti käyttämällä rivinvaihtoja.

Tarjous tulostuu oikein.

OK

G3

Kirjoitetaan tervehdysteksti, jossa on vähintään yksi lainausmerkki (").

Tarjous tulostuu oikein.

OK

G4

Kirjoitetaan tervehdysteksti, jossa on vähintään yksi heittomerkki (').

Tarjous tulostuu oikein.

Bugaa

G5

Kirjoitetaan tervehdysteksti, jossa on vähintään yksi pienempi kuin -merkki (<).

Tarjous tulostuu oikein.

OK

G6

Alennetaan kokonaishinnasta 100%.

Uusi hinta lasketaan tarjoussivulle.

OK

G7

Alennetaan kokonaishinnasta 200%.

Uusi hinta lasketaan tarjoussivulle.

OK

G8

Alennetaan kokonaishinnasta 10%.

Uusi hinta lasketaan tarjoussivulle.

OK

G9

Korotetaan kokonaishintaa 20%.

Uusi hinta lasketaan tarjoussivulle.

OK

1.7.1.8. Tarjouksen tulostaminen

Taulu 1.8. Tarjouksen tulostamisen testitapaukset

ID

Tapaus

Odotettu tulos

Tulos

H1

Tulostetaan tarjous, jossa on yksi tuote.

Tarjous tulostuu oikein.

OK

H2

Tulostetaan tarjous, jossa on kaksi tai useampia tuotteita.

Tarjous tulostuu oikein.

OK

H3

Tulostetaan tarjous, jossa on tervehdysteksti.

Tarjous tulostuu oikein.

OK

H4

Tulostetaan tarjous, jossa ei ole tervehdystekstiä.

Tarjous tulostuu oikein.

OK

1.7.1.9. Tarjouksen lataaminen

Tarjouksen lataamisominaisuutta ei ehditä toteuttaa.

Luku 2. Toteutuneesta testauksesta

Varsinainen testaus projektissa jäi valitettavan vähälle, koska toteutus saatiin valmiiksi kovin viime tingassa. Tehdyt järjestelmätestauksen testitapaukset ja niiden testitulokset löytyvät luvusta 1.7.1: Testitapaukset.

Liite A. Lähteet

[1] Hiltunen, Kallio, Leponiemi, Porvali, Savolainen, Savukoski: Vaatimusdokumentti, Tahko

[2] JUnit.org. http://www.junit.org/. Linkin toimivuus tarkistettu 2001-12-12.

[3] Hiltunen, Kallio, Leponiemi, Porvali, Savolainen, Savukoski: Suunnitteludokumentti, Tahko