Sisällön automaattinen moniluokittelu Testausdokumentti versio Helsingin yliopisto Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojektiryhmä 5. Sisällön automaattinen moniluokittelu (Samo) Marko Konttinen Tarmo Pellikka Pia Rantalahti Kari Silén Markku Vahter Pirkko Wahlström.12. 2002
VERSIOHISTORIA Versio Pvm Kommentti Tekijä 0.1 ensimmäinen versio ryhmän Pia Rantalahti kommentoitavaksi 0.2 30.10.2002 pieniä lisäyksiä ja täsmennyksiä Pirkko Wahlström 0.3 3.11.2002 ryhmän kommentit palaverissa to 31.10.2002 Pirkko Wahlström 0.4 10.11.2002 lukujen 1-2 sisältöä muokattu ja järjestetty Pia Rantalahti 0.5 13.11.2002 Kaikkia lukuja muokattu edelleen ja lisätty Pia Rantalahti esimerkiksi ja keskustelun pohjaksi Parserluokan testiraportti lukuun 2.3.1. 0.6 17.11.2002 Lisätty fdg:n ja indekserin luokkatestiraportit Pia Rantalahti lukuihin 2.1 ja 2.2. Täsmennetty lukua 1.4. Lukuihin 4.1.2 ja 4.2.2 lisätty ehdotus validointitestauksessa testattaviksi asioiksi. 0.7 20.11.2002 Lisätty hakukoneen integrointitestitapaukset Pia Rantalahti lukuihin 3.2.1 ja 3.2.2. 0.8 24.11.2002 Lisätty hakukoneen NodeTerm-, Ontology- ja Pirkko Wahlström Processer-luokkien luokkatestausraportit lukuun 2.4, Indekserin luokkatesturaportti lukuun 2.1 ja Indekserin ja Fdg:n integrointitestiraporttti lukuun 3.1. Päivitetty lukua 1.5 Apuvälineet. 0.9 26.11.2002 Korjattu ryhmän kommenttien mukaan. Pia Rantalahti 0.91 27.11.2002 Vieläkin viilattavaa Pia Rantalahti 0.95 01.12.2002 Päivitetty lukua 2.3.2 Ontology ja täydennetty validointitestauslukuja 4.2 Museoaineiston haku ja 4.3 Koko järjestelmää koskevat vaatimukset. Pirkko Wahlström
SISÄLTÖ 1 YLEISTÄ TESTAUKSESTA...1 1.1 TUOTE...1 1.2 JÄRJESTELYT JA AIKATAULU...1 1.3 STRATEGIA...1 1.4 YMPÄRISTÖ...2 1.5 APUVÄLINEET JA TESTIMATERIAALI...2 2 LUOKKATESTAUS...3 2.1 INDEKSERI...3 2.1.1 AdjNHPattern...4 2.1.2 Config...4 2.1.3 DocumentRef...7 2.1.4 DOMHelper...9 2.1.5 Index...10 2.1.6 Indexer...13 2.1.7 IndexMain...15 2.1.8 Occurrence...18 2.1.9 Predicate...20 2.1.10 RDFIndexer...21 2.2 FDG...23 2.2.1 Token...23 2.2.2 ThreadException...24 2.2.3 Sentence...25 2.2.4 SentenceParseException...28 2.2.5 SentenceFactor...28 2.2.6 SocketFdg...31 2.3 HAKUKONE...33 2.3.1 NodeTerm...33 2.3.2 Ontology...36 2.3.3 Parser...38 2.3.4 Processer...43 2.4 KÄYTTÖLIITTYMÄ...47 2.4.1 SearchGui...47 2.4.2 SearchServlet...48 2.4.3 HTML-sivut...48 3 INTEGROINTITESTAUS...48 3.1 INDEKSERI JA FDG...49 3.2 HAKUKONE...49 3.2.1 Oikeanmuotoiset syötteet...50 3.2.2 Vääränmuotoiset syötteet...52 4 VALIDOINTITESTAUS...52 4.1 INDEKSERI...53 4.2 MUSEOAINEISTON HAKU...53 4.2.1 Käyttötapauksen testaus...53 4.2.2 Yksityiskohtaiset vaatimukset ja niiden testaus...54 4.3 KOKO JÄRJESTELMÄÄ KOSKEVAT VAATIMUKSET...55 LÄHTEET...57 LIITE 1: TESTINDEXER1.RDF... I
LIITE 2. LIITE 3. LIITE 4 LIITE 5 TESTINDEXER2.RDF... I SYSTEMCONFIG TIEDOSTO... I SOURCECONFIG -TIEDOSTO... I TESTSAMO.RDF -TIEDOSTO... I LIITE 6 INDEKSIN SISÄLTÖ INDEKSERIN INTEGROINTITESTAUKSEN JÄLKEEN I
1 1 Yleistä testauksesta Tässä luvussa esitellään lyhyesti testattava tuote, testauksen järjestelyt ja aikataulu, testausstrategia, testausympäristö sekä testauksessa käytetyt apuvälineet ja testiaineisto. 1.1 Tuote Sisällön automaattinen moniluokittelu (Samo) ryhmä on toteuttanut syksyllä 2002 Helsingin ylipiston tietojenkäsittelytieteen laitoksen ohjelmistotuotantoprojektikurssin puitteissa proofof-concept -demojärjestelmänä hakukoneen semantic web -ympäristöön. Ohjelmisto koostuu kolmesta osajärjestelmästä: fdg, indekseri ja hakukone. Fdg osajärjestelmän tehtävänä on tarjota rajapinta luonnollisen kielen analysaattoriin Fdg3. Indekseri osajärjestelmä käyttää fdg:tä tuottaessaan hakemiston joukosta RDF-tiedostoja. Hakukone toteuttaa hakukäyttöliittymän ja käyttää indekserin tuottamaa hakemistoa hyväkseen hakutuloksen etsimisessä. Ohjelmisto on kuvattu kokonaisuudessaan suunnitteludokumentissa [Sam02b]. 1.2 Järjestelyt ja aikataulu Järjestelmä on testattu kolmessa vaiheessa seuraavan aikataulun mukaisesti: moduuli- eli luokkatestaus: viikot 44-46 eli 28.10. - 17.11.2002 integraatiotestaus: viikko 47 eli 18-24.11.2002 validointitestaus: viikko 48 eli 25.11. 1.12.2002. Osajärjestelmien toteutusta varten Samo-ryhmä jaettiin työpareihin, jotka vielä jakoivat keskenään osajärjestelmiin kuuluvien yksittäisten luokkien toteutustyön. Luokan toteuttaja on moduulitestannut toteuttamansa luokan. Integraatiotestaukseen ovat osallistuneet kaikki osajärjestelmään kuuluvia luokkia toteuttaneet ryhmäläiset. Validointitestaukseen osallistuivat kaikki ryhmäläiset. 1.3 Strategia Tässä luvussa esitellään ne vaiheet, joiden mukaisesti ohjelmisto on käyty läpi testauksen aikana. Testausstrategia käsittää luokkatestauksen, integrointitestauksen ja validointitestauksen. Luokka- eli moduulitestauksessa järjestelmään kuuluvat luokat on testattu rakenteellisesti mahdollisimman kattavasti. Rakenteellinen testaus perustui ohjelmakoodin läpikäyntiin. Jokaisessa luokassa kyseisen luokan toteuttajat ovat suorittaneet rakenteellisen testauksen white box testauksena. Testaus on pyritty suorittamaan peruspolkutestauksena eli jokainen ohjelmakoodin lause suoritetaan vähintään kerran testauksen aikana, silmukkatestauksena eli silmukat testataan toistamalla niitä eri määrällä arvoja (nolla ja yksi kertaa, tyypillinen määrä kertoja, maksimäärä ja maksimäärä + 1 kertaa) ja Käytännössä ajanpuute on rajoittanut testausta. Tämän dokumentin sisällysluettelosta käy ilmi kaikki testatut luokat sekä asianomaisista luvuista kunkin luokan testaukseen käytetyt
2 testitapaukset. Testitapaukset on valittu ehtokattavuuden periaatteen mukaisesti niin, että jokainen metodin suorituksen haara tulisi käytyä läpi ainakin kerran. Koska peruspolkutestauksen lohkokaavioden piirtämiseen ei ole valmista työkalua, ei lohkokaavoiota ole dokumentoitu. Luokkatestitapaukset ja testien tulokset on esitelty tämän dokumentin luvussa 2. Integrointitestaus tehdään siinä vaiheessa, kun yksittäiset luokat on testattu ja ne voidaan liittää yhteen. Järjestelmän integrointitestauksen aikana on testattu järjestelmän toiminnallisuutta eli testaus on perustunut ohjelmiston ulkoisesti havaittavan toiminnan tarkasteluun ja todentamiseen. Erityisesti luokkienväliset rajapinnat ja tiedonvälitys luokkien välillä on ollut huomion kohteena. Integrointitestaus on tehty bottom up menetelmällä eli luokkien yhteistoimintaa on testattu sitä mukaa kun luokat ovat valmistuneet. Integrointitestausvaiheessa hakukone- ja indekseri osajärjestelmät on testattu erikseen.interointitestitapaukset ja testien tulokset on esitelty tämän dokumentin luvussa 3. Validointitestauksen.tarkoituksena on todentaa, että järjestelmä toteuttaa sille asetetun tehtävän. Validointitestaus perustui määrittelydokumentissa [Sam02a] dokumentoituihin käyttötapauksiin. Lisäksi määrittelydokumentissa on lueteltu toiminnallisia vaatimuksia kullekin osajärjestelmälle, joiden toteutuminen on varmistettu validointitestauksessa. Toiminnallisten vaatimusten toteutumisen testaamisen lisäksi on validiointitestauksessa pyritty todentamaan, että järjestelmä toteuttaa määrittelydokumentin vaatimukset järjestelmän yleiskäyttöisyydestä, helppokäyttöisyydestä ja ylläpidettävyydestä. Validointitestauksen aikana testattiin myös ohjelmiston käyttöohjeet (sekä indeksoijan että hakukoneen). Validointitestitapaukset ja testien tulokset on esitelty tämän dokumentin luvussa 4. 1.4 Ympäristö Järjestelmä on testattu sen toteutusympäristössä, joka on PostgreSQL-tietokanta indeksoijan tuottamien hakusanojen talletukseen, Hewlett-Packard Labs:n Jena-toolkitin versio 1.5 ontologioiden käsittelyyn, Connexorin Fdg3 morfologinen analysaattori luonnollisen kielen prosessointiin, apache xml-työkalut XML-dokumenttien käsittelyyn, Java-kielen versio 1.3.2 järjestelmän toteuttamiseen ja Mozilla 6- ja Internet Explorer 5.5 selaimet hakukäyttöliittymän toimintaympäristönä. 1.5 Apuvälineet ja testimateriaali Testiluokat ja -metodit Luokkatestauksessa on käytetty joko erillisiä testiluokkia tai testimetodit on sisällytetty itse luokkaan. Asianomaisessa luvussa luokan luokkatestauksen yhteydessä on mainittu testiluokan nimi, mikäli sitä on käytetty. Käytetyt testiluokat on talletettu CVS:ään hakemistoon /samodoc/src/samo/test. Hakemiston sisältö on seuraava: IndexerDriver.java, ParserTest.java luokan Parser.java testaukseen ja TestOntology.java luokan Ontology.java testaukseen NodeTermTest.java luokan NodeTerm.java testaukseen
3 ProcesserTest.java luokan Processer.java testaukseen Lisäksi yllä mainitussa CVS-hakemistossa on luokka Raport.java, jota on käytetty hyväksi muiden paitsi NodeTerm- (luku 2.3.1.) ja Processer- (luku 2.3.4) luokan testitapausten raportoinnissa. Raportin muoto on: Testattava luokka: <luokka> Testattava metodi: <metodi> Parametrit: <testitapaukseksessa käytetyt parametrit> Testauksen tavoite: <mitä testitapauksella pyritään todentamaan> Odotettu tulos : <testitapauksen odotettu tulos> Testin tulos : <OK eli testitapaus onnistuu tai NOK eli testitapaus epäonnistuu> Testauksessa käytetty materiaali Ontologia-luokan testimateriaalina on käytetty ontologiasta Promootio.rdfs tehtyä testi.rdfstiedostoa sekä ontologiasta tekstiilit 2002-10-22.rdfs tehtyä tiedostoa tekstiilikohde.rdfs. Testiontologiat on talletettu ryhmähakemistoon /home/group/samo/yomuseo2002-10-29. Luokka- ja integrointitestauksessa on käytetty itse tehtyä materiaalia, jotka löytyvät tämän dokumentin liitteistä. Materiaalit ja niiden käyttötarkoitukset ovat olleet seuraavat: testindexer1.rdf (liite 1) luokan RDFIndexer luokkatestimateriaali, testindexer2.rdf (liite 2) luokan RDFIndexer luokkatestimateriaali, systemconfig tiedosto (liite 3) indekseriosajärjestelmän intgrointitestimateriaali, sourceconfig tiedosto (liite 4) indekseriosajärjestelmän intgrointitestimateriaali, testsamo.rdf tiedosto (liite 5) indekseriosajärjestelmän intgrointitestimateriaali ja Indeksin sisältö indekserin integrointitestauksen jälkeen ja hakukoneen integrointitestimateriaali (liite 6). Asianomaisen luokan testiraportin kohdalla on viittaus vastaavaan liitteeseen. 2 Luokkatestaus Tässä luvussa kuvataan erikseen jokaisen luokan tai metodin osalta luokan tai metodin toiminta lyhyesti, luokkatestauksessa käytetyt apuvälineet, apu- ja testiohjelmat sekä niiden sijainti, tarkoitus ja dokumentointi, miten ehtokattavuus on toteutettu kyseisen luokan testauksessa sekä yksittäisten luokkien tai metodien testitapaukset ja niiden tulokset. Mikäli testitapauksen tulos on NOK (Not OK), kerrotaan myös miksi ja mitä pitäisi korjata ja miksi korjausta ei tämän projektin puitteissa ole tehty. Parannusehdotukset ja tarpeet on kirjattu myös järjestelmän toteutusdokumenttiin [Sam02c]. 2.1 Indekseri Indekseriosajärjestelmän tehtävänä on muodostaa hakemisto joukosta RDF dokumentteja.
4 2.1.1 AdjNHPattern Testattava luokka: AdjNHPattern Testattava metodi: find(sentence,int) Parametrit : kävellä virkkeenä,1 Testauksen tavoite: Testata, että kun virke ei sisällä määriteltyä hahmoa sitä ei myöskään löydy. Odotettu tulos :0 Testattava luokka: AdjNHPattern Testattava metodi: find(sentence,int) Parametrit : kaula virkkeenä,1 Testauksen tavoite: Testata, että kun virkeen kohta 1 sisältää morfologisen tägin NH, niin saadaan yhden pituinen termi. Odotettu tulos :1 Testattava luokka: AdjNHPattern Testattava metodi: find(sentence,int) Parametrit : punainen kaula virkkeenä,1 Testauksen tavoite: Testata, että kun virkeen kohta 1 sisältää hahmon [&A>][&NH] niin saadaan kahden pituinen termi. Odotettu tulos :3 Testattava luokka: AdjNHPattern Testattava metodi: find(sentence,int) Parametrit : punaisen kirjava kaula virkkeenä,1 Testauksen tavoite: Testata, että kun virkeen kohta 1 sisältää hahmon [&A>][&A>][&NH] niin saadaan kolmen pituinen termi. Odotettu tulos :3 2.1.2 Config Luokka lukee systemconfig -konfiguraatiotiedoston konstruktorin parametrina annetusta osoitteesta. Testattava luokka: samo.utils.config Testattava metodi: Config(java.net.URL systemconfigurl) Parametrit : new URL("file:samo/test/utils/TstConfig.java") Testauksen tavoite: Testataan tunnistaako epäkelvon tiedoston, jonka osoite annetaan urlina Odotettu tulos :Heittää poikkeuksen: org.xml.sax.saxparseexception: The markup in the document preceding the root element must be well-formed. Testattava luokka: samo.utils.config Testattava metodi: Config(java.net.URL systemconfigurl) Parametrit : new URL("file:samo/test/utils/tst_config1.xml") Testauksen tavoite: Testataan pystyykö käsittelemään hyvinmuodostunutta, määrittelyn mukaista xml-tiedostoa. Odotettu tulos :Luo uuden Config-olion, joka lukee attribuuttinsa xml-tiedostosta.
5 Testattava luokka: samo.utils.config Testattava metodi: String getfdglocation() Testauksen tavoite: Onnistuiko fdg:n osoitteen lukeminen tiedostosta. Odotettu tulos :palauttaa tiedostossa annetun osoitteen: 'saga.cs.helsinki.fi' Testattava luokka: samo.utils.config Testattava metodi: int getfdgport() Testauksen tavoite: Onnistuiko fdg:n portin numeron lukeminen tiedostosta. Odotettu tulos :palauttaa tiedostossa annetun portinnumeron: 12345 Testattava luokka: samo.utils.config Testattava metodi: String getindexlocation() Testauksen tavoite: Onnistuiko index:n osoitteen lukeminen tiedostosta. Odotettu tulos :palauttaa tiedostossa annetun osoitteen: 'jdbc:postgresql://db.cs.helsinki.fi:10062/samo' Testattava luokka: samo.utils.config Testattava metodi: int getindexport() Testauksen tavoite: Onnistuiko index:n portin numeron lukeminen tiedostosta. Odotettu tulos :palauttaa tiedostossa annetun portinnumeron: 10062 Testattava luokka: samo.utils.config Testattava metodi: String getindexusername() Testauksen tavoite: Onnistuiko index:n portin numeron lukeminen tiedostosta. Odotettu tulos :palauttaa tiedostossa annetun portinnumeron: 10062 Testattava luokka: samo.utils.config Testattava metodi: String getindexusername() Testauksen tavoite: Onnistuiko index:n käyttäjän tunnuksen lukeminen tiedostosta. Odotettu tulos :palauttaa tiedostossa annetun käyttäjän tunnuksen: 'samo_tester' Testattava luokka: samo.utils.config Testattava metodi: String getindexuserpassword() Testauksen tavoite: Onnistuiko index:n käyttäjän salasanan lukeminen tiedostosta. Odotettu tulos :palauttaa tiedostossa annetun käyttäjän salasanan: 'testing' Ontologia = http://db.cs.helsinki.fi/samo/ontology
6 Testattava luokka: samo.utils.config Testattava metodi: String getontologylocation() Testauksen tavoite: Onnistuiko ontologian osoitteen lukeminen tiedostosta. Odotettu tulos :palauttaa tiedostossa annetun osoitteen: 'http://db.cs.helsinki.fi/samo/ontology' Testattava luokka: samo.utils.config Testattava metodi: List getwantedpropertynames() Testauksen tavoite: Onnistuiko haluttujen propertyjen nimien lukeminen listaan tiedostosta. Odotettu tulos :palauttaa listan tiedostossa kerrottujen ominaisuuksien nimistä. Testattava luokka: samo.utils.config Testattava metodi: getstopwordlist() Testauksen tavoite: Onnistuiko hukkasanalistan lukeminen kofiguraatiotiedostossa annetun tiedoston osoitteen perusteella. Odotettu tulos :palauttaa StreamStringTokenizer olion, joka lukee hukkasanalistan. Testattava luokka: samo.utils.config Testattava metodi: Config(java.net.URL systemconfigurl) Parametrit : new URL("file:samo/test/utils/tst_config1.xml") Testauksen tavoite: Testataan pystyykö käsittelemään hyvinmuodostunutta, määrittelyn mukaista xml-tiedostoa, josta puuttuu kaikki muu paitsi välttämätön. Odotettu tulos :Luo uuden Config-olion, joka lukee attribuuttinsa xml-tiedostosta. Testattava luokka: samo.utils.config Testattava metodi: String getindexusername() Testauksen tavoite: Indeksin käyttäjän tunnus ei ole pakollinen. Kokeillaan selvitäänkö sen puuttumisesta. Odotettu tulos :Koska tunnusta ei ole tiedostossa annettu, palauttaa null. Testattava luokka: samo.utils.config Testattava metodi: String getindexuserpassword() Testauksen tavoite: Indeksin käyttäjän tunnus ei ole pakollinen. Kokeillaan selvitäänkö sen puuttumisesta. Odotettu tulos :Koska tunnusta ei ole tiedostossa annettu, palauttaa null. Testattava luokka: samo.utils.config Testattava metodi: String getindexuserpassword() Testauksen tavoite: Ontologian osoite ei ole pakollinen. Kokeillaan selvitäänkö sen puuttumisesta.
7 Odotettu tulos :Koska ontologian osoitetta ei ole tiedostossa annettu, palauttaa null. Testattava luokka: samo.utils.config Testattava metodi: List getwantedpropertynames() Testauksen tavoite: Ei ole pakollinen. Kokeillaan selvitäänkö puuttumisesta. Odotettu tulos :Koska propertyja ei ole tiedostossa annettu, palauttaa null. Testattava luokka: samo.utils.config Testattava metodi: StreamStringTokenizer getstopwordlist() Testauksen tavoite: Ei ole pakollinen. Kokeillaan selvitäänkö puuttumisesta. Odotettu tulos :Koska hukkasanalista-tiedoston osoitetta ei ole annettu, palauttaa null. Testattava luokka: samo.utils.config Testattava metodi: StreamStringTokenizer getstopwordlist() Testauksen tavoite: Konfiguraatiotiedostossa annettu hukkasanalistan osoite osoittaa olemattomaan tiedostoon. Odotettu tulos :Koska hukkasanalista-tiedostoa ei löydy, heittää pokkeuksen: samo/test/indexer/tst_bla.txt (No such file or directory) Testattava luokka: samo.utils.config Testattava metodi: Config( configurl ) Parametrit : osoite tiedostoon tst_config4.xml, joka on hyvin muodostunutta xml:ää, mutta ei ole määrittelyn mukainen. Testauksen tavoite: Katsotaan miten Config reagoi xml-tiedostoon, joka ei ole määrittelyn mukainen. Odotettu tulos :Koska tiedosto ei ole määrittelyn mukainen, heittää poikkeuksen:samo.utils.configexception: Config file is corrupt.java.lang.nullpointerexception 2.1.3 DocumentRef Edustaa resurssia, jossa jokin tietty termi on esiintynyt. Index palauttaa joukon DocumentRef -olioita hakusanaa vastaan. DocumentRef edustaa dokumenttiviitettä tietylle hakusanalle. Sisältää joukon Predicate olioita, joissa ko. hakusana on viitattavan dokumentin kuvauksessa esiintynyt. Testattava luokka: samo.indexer.documentref Testattava metodi: DocumentRef(String about, String keyterm) Parametrit : target, keyterm Testauksen tavoite: Testataan konstruktoria, joka asettaa olion about-attribuuttikenttään parametrin arvon 'target' ja avainsanaksi 'keyterm'. Odotettu tulos :Luo uuden DocumentRef-olion jonka predikaattijoukko null ja paino 0.0 ja kohde ja avain parametreina määritellyt
8 Testattava luokka: samo.indexer.documentref Testattava metodi: addpredicate(predicate occurrence) Parametrit : null Testauksen tavoite: Yritetään lisätä viittaukselle yksi predikaatti joka on null. Odotettu tulos :Koska viittauksella ei ole aikaisempia predikaatteja, on sisäinen attribuutti, joukko predicates null.sisäinen attribuutti, joukko predicates pysyy nullina eikä mitään lisätä, koska parametri on null Testattava luokka: samo.indexer.documentref Testattava metodi: addpredicate(predicate pred) Parametrit : new Predicate("pred") Testauksen tavoite: Yritetään lisätä ilmentymälle yksi predikaatti jonka nimi on 'pred'. Odotettu tulos :Koska ei ole aikaisempia predikaatteja, luodaan sisäinen attribuutti, joukko predicates, johon annettu predikaatti lisätään. Testattava luokka: samo.indexer.documentref Testattava metodi: addpredicate(predicate occurrence) Parametrit : new Predicate("pred2") Testauksen tavoite: Yritetään lisätä toinen predikaatti jonka nimi on 'pred2'. Odotettu tulos :Uusi predikaatti lisätään joukkoon. Testattava luokka: samo.indexer.documentref Testattava metodi: java.lang.string aboutresource() Testauksen tavoite: Tarkistetaan palauttaako viittauksen kohteen nimen Odotettu tulos :Palauttaa viittauksen kohteen nimen (String olio) silloin kun se on määrätty.. Testattava luokka: samo.indexer.documentref Testattava metodi: java.util.set getpredicates() Testauksen tavoite: Tarkistetaan palauttaako predikaatit tai null silloin kun aliesiintymiä ei ole. Odotettu tulos :Palauttaa joukon (Set olio) jossa on ilmentymän aliessintymät. Testattava luokka: samo.indexer.documentref Testattava metodi: double getweight() Testauksen tavoite: Tarkistetaan palauttaako ilmentymän painoksi oletusarvon 0.0 silloin kun sitä ei ole määrätty. Odotettu tulos :Palauttaa ilmentymän painoksi 0.0 Testattava luokka: samo.indexer.documentref Testattava metodi: double getweight() Testauksen tavoite: Tarkistetaan palauttaako ilmentymän painoksi määrätyn arvon.
9 Odotettu tulos :Palauttaa ilmentymän painoksi 0.5, joka sille on määrätty Testattava luokka: samo.indexer.documentref Testattava metodi: setname(java.lang.string name) Parametrit : sub2 Testauksen tavoite: Tarkistetaan asettaako viittauksen kohteen nimeksi määrätyn nimen. Odotettu tulos :Asettaa viittauksen kohteen nimeksi 'sub2' Testattava luokka: samo.indexer.documentref Testattava metodi: setweight(double _weight) Parametrit : 0.5 Testauksen tavoite: Tarkistetaan asettaako ilmentymän painoksi määrätyn painon. Odotettu tulos :Asettaa ilmentymän painoksi 0.5 2.1.4 DOMHelper Apuluokka DOM-dokumenttien käsittelyyn. Testattava luokka: samo.utils.domhelper Testattava metodi: static java.lang.string gettextcontent(org.w3c.dom.node parent) Parametrit : null Testauksen tavoite: Testataan palauttaako metodi null, jos parametri on null Odotettu tulos :Metodi palauttaa null. Testattava luokka: samo.utils.domhelper Testattava metodi: DOMHelper() Testauksen tavoite: Testataan konstruktorin toimintaa. Odotettu tulos :Luodaan uusi DOMHelper -olio. Testattava luokka: samo.utils.domhelper Testattava metodi: org.w3c.dom.document getdocument(java.io.reader data) Parametrit : null Testauksen tavoite: Testataan palauttaako metodi null, jos parametri on null Odotettu tulos :Metodi palauttaa null. Testattava luokka: samo.utils.domhelper Testattava metodi: org.w3c.dom.document getdocument(java.io.reader data) Parametrit : jotain muuta kuin xml:ää -tiedosto TstDOMHelper.java Testauksen tavoite: Metodi heittää poikkeuksen. Odotettu tulos :org.xml.sax.saxparseexception: Document root element is missing. Testattava luokka: samo.utils.domhelper
10 Testattava metodi: org.w3c.dom.document getdocument(java.io.reader data) Parametrit : tiedoston tst_domhelper.xml sisältö, joka on hyvinmuodostunutta xml:ää Testauksen tavoite: Testataan osaako metodi lukea xml:ää Odotettu tulos :Saadaan tiedostoa vastaava dom-malli Document oliona Testattava luokka: samo.utils.domhelper Testattava metodi: static java.lang.string gettextcontent(org.w3c.dom.node parent) Parametrit : em. tiedostosta tyhjä elementti nimeltään 'empty' Testauksen tavoite: Testataan osaako metodi käsitellä null arvoisen parametrin Odotettu tulos :palauttaa null Testattava luokka: samo.utils.domhelper Testattava metodi: static java.lang.string gettextcontent(org.w3c.dom.node parent) Parametrit : em. tiedostosta elementti, jolla ei ole välitöntä lasta tyypiltään Node.TEXT_NODE,nimeltä 'ancestor_of_text' Testauksen tavoite: Testataan osaako metodin toimintaa. Odotettu tulos :Palauttaa null Testattava luokka: samo.utils.domhelper Testattava metodi: static java.lang.string gettextcontent(org.w3c.dom.node parent) Parametrit : em. tiedostosta elementti, jolla ei ole välitöntä lasta tyypiltään Node.TEXT_NODE,nimeltä 'parent_of_text' Testauksen tavoite: Testataan löytääkö metodi tekstisisällön annetun solmun välittöminä lapsista. Odotettu tulos :Palauttaa merkkijonon 'tämä on tekstiä.' Testattava luokka: samo.utils.domhelper Testattava metodi: static java.lang.string gettextcontent(org.w3c.dom.node parent) Parametrit : em. tiedostosta elementti, joka on tyyppiä Node.TEXT_NODE Testauksen tavoite: Testataan löytääkö metodi tekstisisällön annetusta solmusta. Odotettu tulos :Palauttaa merkkijonon 'tämä on tekstiä' 2.1.5 Index Testattava luokka: samo.indexer.index Testattava metodi: Index(java.lang.String dbhostname, int dbport, java.lang.string username, java.lang.string userpassword) Parametrit : null, 0, null, null Testauksen tavoite: Testataan konstruktorin toimintaa, kun parametrit on null Odotettu tulos :Heittää poikkeuksen: java.sql.sqlexception: The url cannot be null Testattava luokka: samo.indexer.index
11 Testattava metodi: Index(java.lang.String dbhostname, int dbport, java.lang.string username, java.lang.string userpassword) Parametrit : "Mauri Pekkarinen", 0, null, null Testauksen tavoite: Testataan konstruktoria: Väärä host, muut parametrit null. Odotettu tulos :Heittää poikkeuksen: The user property is missing. It is mandatory. Testattava luokka: samo.indexer.index Testattava metodi: Index(java.lang.String dbhostname, int dbport, java.lang.string username, java.lang.string userpassword) Parametrit : jdbc:postgresql://db.cs.helsinki.fi:10062/samo, 10062, "Mauri", "Pekkarinen" Testauksen tavoite: Testataan konstruktoria. Väärä tunnus ja salasana. Odotettu tulos :Heittää poikkeuksen: Something unusual has occured to cause the driver to fail. Please report this exception: java.sql.sqlexception: FATAL 1: Password authentication failed for user "Mauri" Testattava luokka: samo.indexer.index Testattava metodi: Index(java.lang.String dbhostname, int dbport, java.lang.string username, java.lang.string userpassword) Parametrit : jdbc:postgresql://db.cs.helsinki.fi:10062/samo, 10062, "samo_indexer", "Pekkarinen" Testauksen tavoite: Testataan konstruktoria: Väärä salasana. Odotettu tulos :Heittää poikkeuksen: Something unusual has occured to cause the driver to fail. Please report this exception: java.sql.sqlexception: FATAL 1: Password authentication failed for user "samo_indexer" Testattava luokka: samo.indexer.index Testattava metodi: Index(java.lang.String dbhostname, int dbport, java.lang.string username, java.lang.string userpassword) Parametrit : jdbc:postgresql://db.cs.helsinki.fi:10062/samo, 10062, "Mauri", "hakupuu" Testauksen tavoite:testataan konstruktoria: Väärä tunnus Odotettu tulos :Heittää poikkeuksen: Something unusual has occured to cause the driver to fail. Please report this exception: java.sql.sqlexception: FATAL 1: Password authentication failed for user "Mauri" Testattava luokka: samo.indexer.index Testattava metodi: Index(java.lang.String dbhostname, int dbport, java.lang.string username, java.lang.string userpassword) Parametrit : jdbc:postgresql://db.cs.helsinki.fi:10062/samo, 10062, TUNNUS, salasana Testauksen tavoite: Testataan konstruktoria: Nyt pitäis onnistua. Odotettu tulos :Ei hietä poikkeusta, luo uuden Indexer-olion Testattava luokka: samo.indexer.index Testattava metodi: index.reset() Testauksen tavoite: Koitetaan tyhjentää tietokannan taulut.
12 Odotettu tulos :Tyhjentää tietokannan taulut Testattava luokka: samo.indexer.index Testattava metodi: index.add(set indexdatatokens,string about,string predicate) Parametrit : [samo.test.indexer.tsttoken@30c221], http://www.samo.org/aboutdoc1, http://www.samo.org#isoeläin Testauksen tavoite: Koitetaan lisätä duplikaatti. Odotettu tulos :Päivittää tietokannasta vain property taulun ko. tietueen. Testattava luokka: samo.indexer.index Testattava metodi: index.add(set indexdatatokens,string about,string predicate) Parametrit : null, "http://foo.org", "predicate" Testauksen tavoite: Testataan miten reagoi null dataan Odotettu tulos :Heittää poikkeuksen: samo.indexer.samoindexexception: Invalid parameters! -null for indexdatatokens is not acceptable. Testattava luokka: samo.indexer.index Testattava metodi: index.add(set indexdatatokens,string about,string predicate) Parametrit : new HashSet(), "http://foo.org", "predicate" Testauksen tavoite: Testataan miten reagoi tyhjään data-joukkoon Odotettu tulos :Tyhjää joukkoa ei sallita. Heittää poikkeuksen: samo.indexer.samoindexexception: Invalid parameters! Size of Set indexdatatokens is 0. Testattava luokka: samo.indexer.index Testattava metodi: index.add(set indexdatatokens,string about,string predicate) Parametrit : [poo, foo], "http://foo.org", "predicate" Testauksen tavoite: Testataan miten reagoi kun data-joukon alkiot ovat muuta tyyppiä, kuin IndexData -olioita. Odotettu tulos :Muita tyyppejä ei sallita. Heittää poikkeuksen: java.lang.classcastexception: java.lang.string Testattava luokka: samo.indexer.index Testattava metodi: index.add(set indexdatatokens,string about,string predicate) Parametrit : [samo.test.indexer.tsttoken@3ab50a], null, "predicate" Testauksen tavoite: Testataan miten reagoi kun about-parametri on null. Odotettu tulos :Ei sallita. Heittää poikkeuksen: samo.indexer.samoindexexception: Invalid parameters! -null for about is not acceptable. Testattava luokka: samo.indexer.index Testattava metodi: index.add(set indexdatatokens,string about,string predicate) Parametrit : [samo.test.indexer.tsttoken@3ab50a],"http://foo.org", null
13 Testauksen tavoite: Testataan miten reagoi kun predikaatti-parametri on null. Odotettu tulos :Ei sallita. Heittää poikkeuksen: samo.indexer.samoindexexception: Invalid parameters! -null for predicate is not acceptable. Testattava luokka: samo.indexer.index Testattava metodi: void add(set indexdatatokens, String about, String predicate) Parametrit : Lisätään seuraavat dokumentit, kutsumalla metodia useampaan kertaan kissa koira hiiri Doc1: ( 3, 0, 0 ) Doc2: ( 3, 1, 0 ) Doc3: ( 1, 1, 1 ) Doc4: ( 3, 3, 0 ) Doc5: ( 0, 0, 1 ) Testauksen tavoite: Testataan indexiin lisäämistä joissakin tapauksissa sitä vain päivitetään. Odotettu tulos :Data tallentuu oikeassa muodossa tietokantaa Testattava luokka: samo.indexer.index Testattava metodi: void updateweights() Testauksen tavoite: Lasketaan painot äsken lisätyille dokumenteille Laskee dokumenttien termeille normalisoidun TF*IDF painon: kissa koira hiiri Doc1: ( 1.00, 0.00, 0.00 ) Doc2: ( 0.79, 0.61, 0.00 ) Doc3: ( 0.21, 0.48, 0.85 ) Doc4: ( 0.40, 0.92, 0.00 ) Doc5: ( 0.00, 0.00, 1.00 ) Odotettu tulos :Painot lasketaan oikein ja ne tallentuvat tietokantaan. Testattava luokka: samo.indexer.index Testattava metodi: Set getreferences(string) Parametrit : kissa Testauksen tavoite: Palauttaa docref tietueita Doc1,..., Doc4 vastaavat DocumentRef oliot. 2.1.6 Indexer Indekseri etsii termejä sille syötetystä tekstistä. Testattava luokka: Indexer Testattava metodi: Indexer(SentenceParser,boolean) Parametrit : valid_socket_fdg,true Testauksen tavoite: Testata, että oletus hahmot lisätään patterns vektoriin. (peruspolku 1/2) Odotettu tulos :Vektorin patterns koko > 0
14 Testattava luokka: Indexer Testattava metodi: Indexer(SentenceParser,boolean) Parametrit : valid_socket_fdg,false Testauksen tavoite: Testata, että oletus hahmoja ei lisätä patterns vektoriin. (peruspolku 2/2) Odotettu tulos :Vektorin patterns koko on 0 Testattava luokka: Indexer Testattava metodi: index(string,map) Parametrit : "",map Testauksen tavoite: Testata, että tyhjästä merkkijonosta ei löydetä termejä. (peruspolku 1/2) Odotettu tulos :map on tyhjä Testattava luokka: Indexer Testattava metodi: index(string,map) Parametrit : "Punainen kaulaliina",map Testauksen tavoite: Testata, että termihahmot lisätään karttaan. For silmukka suoritetaan yhden kerran (peruspolku 2/2) Odotettu tulos :map sisältää yhden termihahmon. Testattava luokka: Indexer Testattava metodi: addtostoplist(string) Parametrit : "punainen kaulaliina" Testauksen tavoite: Testata, että sana lisätään hukkasanalistalle. (peruspolku 1/1) Odotettu tulos :Hukkasanalista sisältää yhden sanan. Punainen kaulaliina termiä ei lisätä tulokseen, vaikka se löytyisikin tekstistä. Testattava luokka: Indexer Testattava metodi: addtermpattern(termpattern) Parametrit : "punainen kaulaliina" Testauksen tavoite: Testata, että termihahmo lisätään hahmo listalle. (peruspolku 1/1) Odotettu tulos :Termihahmolista sisältää yhden enemmän hahmoja. Testattava luokka: Indexer Testattava metodi: findterms(sentence,map) Parametrit : "kaulaliina virkeenä,map" Testauksen tavoite: Testata, että yhtään termiä ei löydetä, jos hahmoja ei ole lisätty. (Peruspolku 2/5) Odotettu tulos :Hajautustaulun map koko on nolla. Testattava luokka: Indexer Testattava metodi: findterms(sentence,map) Parametrit : "seisoa virkkeenä,map" Testauksen tavoite: Testata, että yhtään termiä ei löydetä, kun indexer sisältää yhden AdjNHPattern hahmon, mutta sitä ei löydy tekstistä. (Peruspolku 3/5) Odotettu tulos :Hajautustaulun map koko on nolla. Testattava luokka: Indexer Testattava metodi: findterms(sentence,map)
15 Parametrit : "kaulaliina virkkeenä,map" Testauksen tavoite: Testata, että yksi termi löydetään, kun indexer sisältää yhden AdjNHPattern hahmon ja se löytyy tekstistä. (Peruspolku 4/5) Odotettu tulos :Hajautustaulun sisältää yhden IndexData viitteen. Testattava luokka: Indexer Testattava metodi: findterms(sentence,map) Parametrit : "kaulaliina virkkeenä,map" Testauksen tavoite: Testata, että yksi termi löydetään, kun indexer sisältää kaksi AdjNHPattern hahmoa ja hahmo löytyy tekstistä. (Peruspolku 5/5) Odotettu tulos :Hajautustaulun sisältää IndexData viitteen, gethowmanytimes() palauttaa 1 Testattava luokka: Indexer Testattava metodi: addterm(map,string) Parametrit : map, sinä Testauksen tavoite: Testata, että termiä ei lisätä tulokseen, kun se on lisätty hukkasanalistalle (Peruspolku 1/3) Odotettu tulos :Tulos ei sisällä yhtään termiä Testattava luokka: Indexer Testattava metodi: addterm(map,string) Parametrit : map, kaula#liina Testauksen tavoite: Testata, että termi lisätään tulokseen, kun sitä ei siellä vielä ole. (Peruspolku 2/3) Odotettu tulos :Tulos sisältää yhden IndexData viitteen Testattava luokka: Indexer Testattava metodi: addterm(map,string) Parametrit : map, kaula#liina Testauksen tavoite: Testata, että termi lisätään tulokseen, kun se on jo sinne lisätty yhteen kertaan. (Peruspolku 3/3) Odotettu tulos :Tulos sisältää yhden IndexData viitteen ja gethowmanytimes() palauttaa 2. 2.1.7 IndexMain IndexMain-luokka tarjoaa tekstimuotoisen käyttöliittymän indekseriin. Testattava luokka: samo.indexer.indexmain Testattava metodi: IndexMain(Config config, java.lang.string username, java.lang.string userpassword) Parametrit : null, null, null Testauksen tavoite: Miten selviydytään null parametreista. Odotettu tulos :Heittää poikkeuksen: samo.indexer.indexmainexception: Config can't be null! Testattava luokka: samo.indexer.indexmain Testattava metodi: IndexMain(Config config, java.lang.string username, java.lang.string userpassword)
16 Parametrit : validconfig, null, null Testauksen tavoite: Käyttäjätieto-parametrit null, luetaan config:sta Odotettu tulos :Luodaan IndexMain olio config:n käyttäjätiedoilla. Testattava luokka: samo.indexer.indexmain Testattava metodi: IndexMain(Config config, java.lang.string username, java.lang.string userpassword) Parametrit : validconfignouseraddr, null, null Testauksen tavoite: Käyttäjätiedot puuttuvat myös config:sta. Odotettu tulos :Ei käyttäjätietoja. Yritetään saada tietokantaan yhteys ilman. Tässä tapauksessa heittää poikkeuksen: The user property is missing. It is mandatory. Testattava luokka: samo.indexer.indexmain Testattava metodi: IndexMain(Config config, java.lang.string username, java.lang.string userpassword) Parametrit : validconfignouseraddr, samo_tester, testing Testauksen tavoite: Käyttäjätiedot puuttuvat myös config:sta. Odotettu tulos :Ei käyttäjätietoja tiedostossa, mutta parametrina.luo uuden IndexMainin parametreina annetuilla käyttäjätiedoilla. Testattava luokka: samo.indexer.indexmain Testattava metodi: reset() Testauksen tavoite: Testataan indeksin tyhjennys. Odotettu tulos :Tyhjentää tietokannan taulut käyttäen Index:iä. Testattava luokka: samo.indexer.indexmain Testattava metodi: void index(java.net.url sourceconfigurl) Parametrit : null Testauksen tavoite: Nullia ei voi hyväksyä parametriksi. Odotettu tulos :Heittää poikkeuksen: samo.indexer.indexmainexception: source address is null. Testattava luokka: samo.indexer.indexmain Testattava metodi: void index(java.net.url sourceconfigurl) Parametrit : TstIndexMain.java Testauksen tavoite: Tiedosto ei ole määrittelyn mukaista xml:ää Odotettu tulos :Heittää poikkeuksen: java.net.malformedurlexception: no protocol: samo/test/indexer/tstindexmain.java Testattava luokka: samo.indexer.indexmain Testattava metodi: void index(java.net.url sourceconfigurl) Parametrit : tstsrcwithtwist.xml Testauksen tavoite: Tiedosto on määrittelyn mukaista xml:ää, mutta kaikkia lueteltuja tiedostoja ei löydy. Odotettu tulos :Indeksoidaan tiedostossa määrätty materiaali sikäli mikäli löydetään. Antaa virheilmoituksen jokaisesta tiedostosta, jota ei löydy. Testattava luokka: samo.indexer.indexmain Testattava metodi: updateweights() Testauksen tavoite: Testataan painojen laskeminen.
17 Odotettu tulos :Laskee ja päivittää tietokantaan uudet painot. Testattava luokka: samo.indexer.indexmain Testattava metodi: static void usage() Testauksen tavoite: Kokeillaan käyttöohjeen tulostamista. Odotettu tulos :Tulostaa lyhyen käyttöohjeen suomeksi: --- Käyttö: Anna parametrit muodossa NIMI=ARVO, eli erota nimi ja arvo toisistaan '=' merkillä. Parametrit: NIMI ARVO systemconfig url osoite systeemi-konfiguraatiotiedostoon. PAKOLLINEN Loput parametrit ovat valinnaisia: sourceconfig url osoite lähde-konfiguraatiotiedostoon. Anna tämä jos haluat indeksoida jotain. username Anna käyttäjänimi, jos tietokanta edellyttää sitä, eikä sitä ole annettu systemconfig - tiedostossa. userpassword Anna salasana, jos tietokanta edellyttää sitä, eikä sitä ole annettu systemconfig - tiedostossa. reset YES tai NO. Oletusarvo on NO. Suoritetaan ennen indeksointia. updateweights YES tai NO. Oletusarvo on YES. Suoritetaan inedksoinnin jälkeen. --- Tekstikäyttöliittymä: metodi: public static void main(string[] args): Testattava luokka: samo.indexer.indexmain Testattava metodi: main(string[] args) Testauksen tavoite: Toiminta ilman parametreja. Tarvitsee vähintään parametrin systemconfig. Odotettu tulos : Tulostaa huomautuksen: 'Liian vähän argumentteja' sekä em. Ohjeen. Testattava luokka: samo.indexer.indexmain Testattava metodi: main(string[] args) Parametrit : systemconfig=file:samo/test/utils/tst_config.xml reset=bla Testauksen tavoite: Väärä arvo parametrilla reset. Käyttäjän tunnus ja salasana luetaan tiedostosta. Odotettu tulos : Tulostaa huomautuksen: Resetillä ei ole optiota 'BLA'. Ei alusteta Ei alusta tietokantaa. Käyttäjän tunnus ja salasana luetaan tiedostosta. Testattava luokka: samo.indexer.indexmain Testattava metodi: main(string[] args)
18 Parametrit : systemconfig=file:samo/test/utils/tst_config.xml updateweights=bla Testauksen tavoite: Väärä arvo parametrilla updateweights. Käyttäjän tunnus ja salasana luetaan tiedostosta. Odotettu tulos : Tulostaa huomautuksen: Update:lla ei ole optiota 'BLA'. Ei päivitetä painoja Ei päivitetä painoja Käyttäjän tunnus ja salasana luetaan tiedostosta. Testattava luokka: samo.indexer.indexmain Testattava metodi: main(string[] args) Parametrit : systemconfig=file:samo/test/utils/tst_config.xml reset=yes sourceconfig=file:samo/test/utils/tstconfigsrc.xml username=samo_indexer userpassword=hakupuu Testauksen tavoite: Toiminta oikeilla parametreilla. Myös käyttäjätiedot komentoriviparametreina. Odotettu tulos : Käyttää komentoriviparametreina annettuja käyttäjätietoja. Alustaa indeksin. Indeksoi annetun materiaalin. Päivittää painot (oletusarvoisesti). 2.1.8 Occurrence DocumentRef- ja Predicate-luokkien geneerinen yliluokka, joka edustaa ilmentymää. Occurrence-oliolla on nimi ja painoarvo ja voi sisältää joukon Occurrence-olioita, jotka edustavat sen aliesiintymiä. Testattava luokka: samo.indexer.occurrence Testattava metodi: Occurrence() Testauksen tavoite: Testataan parametritonta konstruktoria. Odotettu tulos :Luo uuden Occurrence-olion jonka attribuutit nimi ja aliesiintymäjoukko ovat null ja paino 0.0 Testattava luokka: samo.indexer.occurrence Testattava metodi: Occurrence(String) Parametrit : sub Testauksen tavoite: Testataan konstruktoria, joka asettaa olion nimiattribuuttikenttään parametrin arvon. Odotettu tulos :Luo uuden Occurrence-olion jonka nimi on parametrina annettu, aliesiintymäjoukko null ja paino 0.0 Testattava luokka: samo.indexer.occurrence Testattava metodi: addoccurrence(occurrence occurrence) Parametrit : null Testauksen tavoite: Yritetään lisätä ilmentymälle yksi aliesiintymä joka on null. Odotettu tulos :Koska ilmentymällä ei ole aikaisempia aliesiintymiä, on sisäinen attribuutti, joukko occurrences null.sisäinen attribuutti, joukko occurrences pysyy nullina eikä mitään lisätä, koska parametri on null
19 Testattava luokka: samo.indexer.occurrence Testattava metodi: addoccurrence(occurrence occurrence) Parametrit : new Occurrence("sub") Testauksen tavoite: Yritetään lisätä ilmentymälle yksi aliesiintymä jonka nimi on 'sub'. Odotettu tulos :Koska ilmentymällä ei ole aikaisempia aliesiintymiä, luodaan sisäinen attribuutti, joukko occurrences, johon annettu aliesiintymä lisätään. Testattava luokka: samo.indexer.occurrence Testattava metodi: addoccurrence(occurrence occurrence) Parametrit : new Occurrence("sub2") Testauksen tavoite: Yritetään lisätä ilmentymälle toinen aliesiintymä jonka nimi on 'sub2'. Odotettu tulos :Uusi aliesiintymä lisätään joukkoon. Testattava luokka: samo.indexer.occurrence Testattava metodi: java.lang.string getname() Testauksen tavoite: Tarkistetaan palauttaako ilmentymän nimeksi null, jos nimeä ei ole annettu. Odotettu tulos :Koska ilmentymälle ei ole määrätty nimeä palauttaa null. Testattava luokka: samo.indexer.occurrence Testattava metodi: java.lang.string getname() Testauksen tavoite: Tarkistetaan palauttaako ilmentymän nimen, silloin kun se on määrätty. Odotettu tulos :Palauttaa ilmentymän nimen (String olio) silloin kun se on määrätty.. Testattava luokka: samo.indexer.occurrence Testattava metodi: java.util.set getoccurrences() Testauksen tavoite: Tarkistetaan palauttaako ilmentymän aliesiintymät tai null silloin kun aliesiintymiä ei ole. Odotettu tulos :Palauttaa joukon (Set olio) jossa on ilmentymän aliessintymät. Testattava luokka: samo.indexer.occurrence Testattava metodi: double getweight() Testauksen tavoite: Tarkistetaan palauttaako ilmentymän painoksi oletusarvon 0.0 silloin kun sitä ei ole määrätty. Odotettu tulos :Palauttaa ilmentymän painoksi 0.0 Testattava luokka: samo.indexer.occurrence Testattava metodi: double getweight() Testauksen tavoite: Tarkistetaan palauttaako ilmentymän painoksi määrätyn arvon.
20 Odotettu tulos :Palauttaa ilmentymän painoksi 0.5, joka sille on määrätty Testattava luokka: samo.indexer.occurrence Testattava metodi: null Parametrit : String name Testauksen tavoite: Tarkistetaan asettaako nimeksi null, silloin kun sitä ei ole määrätty. Odotettu tulos :Palauttaa ilmentymän painoksi null Testattava luokka: samo.indexer.occurrence Testattava metodi: setname(java.lang.string name) Parametrit : sub2 Testauksen tavoite: Tarkistetaan asettaako ilmentymän nimeksi määrätyn nimen. Odotettu tulos :Asettaa ilmentymän nimeksi 'sub2' Testattava luokka: samo.indexer.occurrence Testattava metodi: setweight(double _weight) Parametrit : 0.5 Testauksen tavoite: Tarkistetaan asettaako ilmentymän painoksi määrätyn painon. Odotettu tulos :Asettaa ilmentymän painoksi 0.5 2.1.9 Predicate Index palauttaa, kutsuttaessa sen metodia getreferences paramterina annettua hakusanaa vastaan joukon DocRef olioita, jotka edustavat viittauksia resursseihin, joiden kuvauksessa hakusana on esiintynyt. DocRef olio sisältää joukon Predicate -olioita jotka edustavat ominaisuuksia (Property), joiden 'alla' literaalimuotoisissa objekteissa termi on esiintynyt. Index luo DocRef ja Predicate oliot tietokannan tietojen perusteella ja asettaa DocRefille sille kuuluvat Predicate:t kutsumalla toistuvasti DocRef:n metodia addpredicate(predicate). Testattava luokka: samo.indexer.predicate Testattava metodi: Predicate(String) Parametrit : null Testauksen tavoite: Testataan konstruktoria, joka saa parametrina predikaatin nimen. Odotettu tulos :Luo uuden predikaatin, jonka nimi on null Testattava luokka: samo.indexer.predicate Testattava metodi: Predicate(String) Parametrit : pred Testauksen tavoite: Testataan konstruktoria, joka saa parametrina predikaatin nimen. Odotettu tulos :Luo uuden predikaatin, jonka nimi on pred Testattava luokka: samo.indexer.predicate Testattava metodi: Predicate(String name, int occurrencesofterm) Parametrit : null, 5
21 Testauksen tavoite: Testataan konstruktoria, joka saa parametrina predikaatin nimen ja termin esiintymien lkm:n Odotettu tulos :Luo uuden predikaatin, jonka nimi on pred2 ja occurrencesofterm = 5 Testattava luokka: samo.indexer.predicate Testattava metodi: Predicate(String name, int occurrencesofterm) Parametrit : pred2, 5 Testauksen tavoite: Testataan konstruktoria, joka saa parametrina predikaatin nimen ja termin esiintymien lkm:n Odotettu tulos :Luo uuden predikaatin, jonka nimi on pred2 ja occurrencesofterm = 5 Testattava luokka: samo.indexer.predicate Testattava metodi: java.lang.string getname() Testauksen tavoite: Testataan metodia, joka palauttaa predikaatin nimen Odotettu tulos :Palauttaa predikaatin nimen 'pred2' Testattava luokka: samo.indexer.predicate Testattava metodi: setoccurrencesofterm(int occurrencesofterm) Parametrit : 4 Testauksen tavoite: Testataan metodia, joka asettaa predikaatin esiintymien määrän. Odotettu tulos :asettaa termin esiintymien lkm:ksi 4 Testattava luokka: samo.indexer.predicate Testattava metodi: setoccurrencesofterm(int occurrencesofterm) 32 Testauksen tavoite: Testataan metodia, joka asettaa predikaatin esiintymien määräksi 0 jos annettu arvo on < 0. Odotettu tulos :asettaa termin esiintymien lkm:ksi 0 Testattava luokka: samo.indexer.predicate Testattava metodi: int getoccurrencesofterm() Testauksen tavoite: Testataan metodia, joka palauttaa predikaatin esiintymien määrän. Odotettu tulos :palauttaa predikaatin esiintymien määrän. 2.1.10 RDFIndexer RDFIndexer-luokan luokkatestimateriaalina on käytetty testindexer1.rdf (liite 1) ja testindexer2.rdf (liite 2) tiedostoja. Testattava luokka: samo.indexer.rdfindexer Testattava metodi: RDFIndexer(Index, Indexer) Parametrit : null, null Testauksen tavoite: Kokeillaan miten reagoi null-parametreihin
22 Odotettu tulos :Heittää poikkeuksen: samo.indexer.rdfindexerexception: Index is null. Testattava luokka: samo.indexer.rdfindexer Testattava metodi: RDFIndexer(Index, Indexer) Parametrit : null, new Indexer(...) Testauksen tavoite: Kokeillaan miten reagoi null-parametreihin Odotettu tulos :Heittää poikkeuksen: samo.indexer.rdfindexerexception: Index is null. Testattava luokka: samo.indexer.rdfindexer Testattava metodi: RDFIndexer(Index, Indexer) Parametrit : new Index(... ), null Testauksen tavoite: Kokeillaan miten reagoi null-parametreihin Odotettu tulos :Heittää poikkeuksen: samo.indexer.rdfindexerexception: Indexer is null. Testattava luokka: samo.indexer.rdfindexer Testattava metodi: RDFIndexer(Index, Indexer) Parametrit : new Index(... ), new Indexer(... ) Testauksen tavoite: Annetaan kunnolliset Index ja Indexer. Nyt pitäisi toimia. Odotettu tulos :Luo uuden RDFIndexer:n koitetaan indeksoida ennen haluttujen ominaisuuksien kertomista Testattava luokka: samo.indexer.rdfindexer Testattava metodi: index(reader rdfdata) Parametrit : Syötetään tiedosto testindexer1.rdf Testauksen tavoite: Katsotaan miten toimii, kun mitään filtteriä ei ole asetettu. Odotettu tulos :Indeksoi kaikki literaalit, mitä löytää kyselyllä (?about,?predicate,?object ) Tyhjennetään tietokanta välillä. Testattava luokka: samo.indexer.rdfindexer Testattava metodi: setfilter( List wantedproperties ) Parametrit : Asetetaan Halutut propertyt: Propertyt samo ja rdfs nimiavaruuksissa: http://www.samo.org#isoeläin http://www.samo.org#pikkueläin http://www.w3.org/2000/01/rdf-schema#label Testauksen tavoite: Tarkistetaan filtterin toiminta. Odotettu tulos :Asettaa nämä indeksoitaviksi ominaisuuksiksi. Testattava luokka: samo.indexer.rdfindexer Testattava metodi: index(reader rdfdata) Parametrit : indeksoidaan taas tiedosto testindexer1.rdf Testauksen tavoite: Katsotaan vaikuttaa äskeinen filtterin asetus indeksointiin. Odotettu tulos :Nyt indeksoidaan vain halutut ominaisuudet.
23 Testattava luokka: samo.indexer.rdfindexer Testattava metodi: index(reader rdfdata) Parametrit : indeksoidaan tiedosto testindexer2.rdf Testauksen tavoite: Tiedostosta löytyvällä dokumentilla on vain propertyt rdfs:label ja samo:kuvaus Odotettu tulos :Nyt indeksoidaan em. ominaisuudet. kuriositeettina labelista ('Ahdin luo pääsi kuusi alamaista') saadut termit: kuu, ahti alamainen 2.2 Fdg Paketti fdg sisältää luokat Token, ThreadException, Sentence, SentenceParseException, SentenceFactor ja SocketFdg. jotka tarvitaan tekstin morfologiseen analysoimiseen. Huomaa, että fdg-paketin luokkatestit eivät ole toisistaan riippumattomia, vaan ne täytyy suorittaa järjestyksessä. 2.2.1 Token Morfologinen analyysi kohdistuu virkkeisiin, jotka muodostuvat Tokeneista (sanoista). *****************************************************+ Testataan Token luokkaa.luodaan yksi token, jota testataan. Testit eivät ole riippumattomia toisistaan, vaan ne täytyy suorittaa järjestyksessä. ***************************************************** Testattava luokka: Token Testattava metodi: Token(int) Parametrit : 1 Testauksen tavoite: Testata, että konstruktori toimii. Odotettu tulos :Pitäisi onnistua Testattava luokka: Token Testattava metodi: getposition() Parametrit : Testauksen tavoite: Testata metodia getposition(). Odotettu tulos :1 Testattava luokka: Token Testattava metodi: setword(string) Parametrit : is Testauksen tavoite: Testata onnistuuko sanan asettaminen. Odotettu tulos :Sanamuoto on is Testattava luokka: Token Testattava metodi: getword() Parametrit : Testauksen tavoite: Testata palauttaako getword() oikein.
24 Odotettu tulos :is Testattava luokka: Token Testattava metodi: setlemma(string) Parametrit : be Testauksen tavoite: Testata onnistuuko perusmuodon asettaminen Odotettu tulos :Perusmuoto on be Testattava luokka: Token Testattava metodi: getlemma() Parametrit : Testauksen tavoite: Testata palauttaako getlemma() oikein Odotettu tulos :be Testattava luokka: Token Testattava metodi: addtag(string) Parametrit : &NH Testauksen tavoite: Testata onnistuuko tägin lisääminen. Odotettu tulos :containstag(&nh) palauttaa true,containstag(v) palautta false Testattava luokka: Token Testattava metodi: addtag(string) Parametrit : V Testauksen tavoite: Testata onnistuuko tägin lisäminen Odotettu tulos :containstag(&nh) palauttaa true,containstag(v) palautta true 2.2.2 ThreadException ThreadException tarjoaa tavan välittää säikeen suorituken aikana tapahtunut poikkeus metodin kutsujalle. *****************************************************+ Testataan ThreadException luokkaaa.luodaan yksi exception, jota testataan. Testit eivät ole riippumattomia toisistaan, vaan ne täytyy suorittaa järjestyksessä. ***************************************************** Testattava luokka: ThreadException Testattava metodi: ThreadException() Parametrit : Testauksen tavoite: Testata konstruktoria. Odotettu tulos :getexception() palautaa null. Testattava luokka: ThreadException Testattava metodi: setexception(exception) Parametrit : new Exception() Testauksen tavoite: Testata poikkeuksen asettamista. Odotettu tulos :getexception() palautaa asetetun poikkeuksen.