Sisällys
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.
Testausperiaatteet-kappaleessa kuvataan tässä testaussuunnitelmassa määritellyn testauksen yleiset periaatteet, kohde ja tavoitteet.
Testauksen kohteena on Helsingin yliopiston Tietojenkäsittelytieteen laitoksen Sonera Oyj:lle tehdyn Ohjelmistotuotanto-projektin Tahko-järjestelmä.
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).
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.
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.
com.sonera.tahko -paketissa on yhdeksän luokkaa, joiden toiminta testataan JUnit-yksikkötesteillä:
Lisäksi mukana on neljä luokkaa, joita ei yksikkötestata erikseen. Nämä luokat ovat TahkoException, PageNotFoundException, XMLProcessingException ja PDFProcessingExecution.
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.
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.
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].
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 |
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 |
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 |
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 |
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 |
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 |
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.