Toteutusdokumentti. Matematiikan oppifoorumi. Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen. Ohjaaja.

Samankaltaiset tiedostot
Loppuraportti. Matematiikan oppifoorumi. Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen. Ohjaaja.

Ylläpito-ohje. Matematiikan oppifoorumi. Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen. Ohjaaja.

Matematiikan oppifoorumi Käyttöohje

OTT-S99 TESTAUSLOMAKE 1(22) Käyttäjää (tunnusta) ei saa olla kannassa

Matematiikan oppifoorumi Projektisuunnitelma

Lohtu-projekti. Testaussuunnitelma

Matematiikan oppifoorumi Suunnitteludokumentti

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

Matematiikan oppifoorumi Vaatimusdokumentti

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Convergence of messaging

Testausdokumentti. Sivu: 1 / 10. Ohjelmistotuotantoprojekti Sheeple Helsingin yliopisto. Versiohistoria

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Opponointitestaus VYM -> LiKe

T Testiraportti - järjestelmätestaus

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Lohtu-projekti. Testiraportti. Versiohistoria: syklin toteutuksen testit. 1. ajo Virve

Testaussuunnitelma. Asdf. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Keskustelusivusto. Suunnitteludokumentti

Testaussuunnitelma Labra

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0

Hirviö Järjestelmätestauksen testitapaukset ja suoritusloki I1

Määrittelydokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmoinnin perusteet Y Python

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

58160 Ohjelmoinnin harjoitustyö

Ohjelmoinnin perusteet Y Python

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti

Tentti erilaiset kysymystyypit

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe T1. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T1

Ohjelmoinnin perusteet Y Python

T Testiraportti - integraatiotestaus

Opettajan pikaopas Opintojaksopalaute-järjestelmään

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Ohjelmiston testaus ja laatu. Testaustasot

Tutoriaaliläsnäoloista

Käyttötapauksen nimi Lukija: pääsivu Osallistujat Lukija Tuloehdot Käyttäjä on avannut sivuston pääsivun Kuvaus Ruudulle tulostuvat kirjoittajat ja

Ylläpitodokumentti Mooan

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

Testaussuunnitelma. Opeapuri. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Harjoitus 2 (viikko 45)

KYMP Webmail -palvelu

McAfee epolicy Orchestrator Pre-Installation Auditor 2.0.0

Matematiikan oppimateriaalia verkkoon: kompleksiluvut

Harjoitus 5 (viikko 48)

SQL Buddy JAMK Labranet Wiki

UCOT-Sovellusprojekti. Testausraportti

Action Request System

14. Hyvä ohjelmointitapa 14.1

OHJE 1 (14) Peruskoulun ensimmäiselle luokalle ilmoittautuminen Wilmassa

T Testitapaukset TC-1

Moodle-oppimisympäristö

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Sisällysluettelo 1 Johdanto Root, koko Opalan pääkäyttäjä

WINHIT OMAVALVONTA. Omavalvonnan käyttöliittymän ja seurantalokin ohjekirja

Käyttöohje. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Käyttöohje. Visy Access Net UPM

opiskelijan ohje - kirjautuminen

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Ohjelmistotuotantoprojekti

Oppilaan opas. Visuaaliviestinnän Instituutti VVI Oy. Versio 0.2 ( )

Harjoitus 5 (viikko 41)

Testaussuunnitelma. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Käyttöohje. Ticket Inspector. Versio 1.0. Sportum Oy

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe LU. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T3

Testausdokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Titta-palvelun käyttöohje

EVTEK-PROJEKTORI KÄYTTÖOHJE Tekijä: Teemu Tammivaara VBP04S

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

ORGANISAATION KIRJAUTUMINEN TURVASIRU.FI-PALVELUUN

Tiedostonhallinta. Yleistä

Ohjelmoinnin perusteet Y Python

Titta-palvelun käyttöohje

Ylläpitodokumentti. Kohahdus. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

1 www-sivujen teko opetuksessa

Tentti erilaiset kysymystyypit

13. Hyvä ohjelmointitapa (osa 1) 13.1

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita.

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori

Käyttöohje. Versiohistoria: versio Mari Kommenttien perusteella korjattu versio

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Onni-oppimispäiväkirjan ohje version 1.2

Testausdokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

5. HelloWorld-ohjelma 5.1

Transkriptio:

Matematiikan oppifoorumi Toteutusdokumentti Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen Ohjaaja Jukka Eskola Ohjelmistotuotantoprojekti 17.12.1999 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Sisällys 1 Johdanto 1 1.1 Tuotteen tausta ja tarkoitus 1 1.2 Erikoissanasto ja käytetyt lyhenteet 1 2 Vaatimusmäärittely, suunnittelu ja niihin tehdyt muutokset 3 2.1 Rajaukset 3 3 Toteutusratkaisut 4 3.1 Ratkaisun filosofia, käytetyt ohjelmointimenetelmät ja ohjelmointikielet 4 3.2 Toteutuskokemuksia 4 3.3 Versionhallinta 5 4 Moduulitestaus 5 4.1 Kayttaja 5 4.2 Kurssi 6 4.3 Luku 6 4.4 Harjoitus 7 4.5 Kaavaeditori 7 4.6 Keskustelut 8 5 Järjestelmätestaus 15 5.1 Testauksen tavoitteet ja testausperiaate 15 5.2 Testausympäristö ja testaustapa 15 5.3 Testattavat toiminnot, testijaksot ja testitapaukset 16 6 Suorituskykyanalyysi 19 6.1 Järjestelmän levytilatarve ja tietokannan koko 19 6.1.1 Oletuskurssin vaatima tilantarve 19 6.1.2 Johtopäätökset 21 6.2 Järjestelmän vastausaikavaatimukset 22 7 Jatkokehitys 22 7.1 Toteuttamatta jääneet piirteet 22 7.2 Hyödylliset lisäpiirteet 23 Liitteet Liite A Liite B Liite C Liite D Liite E Testauslomakkeet Testijaksot Testitapaukset Kannanluontilauseet Kannan drop-lauseet Versio 0.1 Jukka Kariola 17.12.1999

1 1 Johdanto (HV) 1.1 Tuotteen tausta ja tarkoitus Tietokoneavusteisessa matematiikan opetuksessa suurin osa ohjelmistoista on kehitetty kouluikäisten lasten opetukseen ja toistaiseksi vain harvoja on suunnattu korkeakouluopiskelijoille. Internet-tekniikka tarjoaa hyvät mahdollisuudet rakentaa tietyn asian ympärille keskittyvän keskustelufoorumin, jonka kautta kuka tahansa voi yrittää etsiä vastausta ongelmaansa tai vastata muiden kysymyksiin. Harvoissa opetusjärjestelmissä on vielä hyödynnetty palautetta mahdollisuutena kehittää oppimateriaalia. Toinen Internetissä laajasti käytössä oleva etäopetusmuoto on toimittaa verkkoon oppimateriaalia WWW-selaimilla katseltavaan muotoon. Matemaattisten kaavojen tuottaminen selaimen ymmärtämään muotoon on ollut kohtuullisen vaikeaa, mutta nyt on olemassa jo joitakin selaintuotteita (IceBrowser, WebEq, TechExplorer), jotka pystyvät muuntamaan HTML-tekstiin upotetun MathML-kielen kaavoiksi näytölle. Matematiikan oppifoorumi (MatWO) on järjestelmä, jossa hyödynnetään Internetin mahdollistamaa oppimateriaalin levitystapaa ja yhdistetään siihen materiaalin kehittyminen kysymysten ja niihin tulevien vastausten perusteella. Järjestelmä sisältää helppokäyttöisiä välineitä oppimateriaalin ja varsinkin matemaattisten kaavojen tuottamiseen. Oppimateriaali muodostuu tekstistä ja harjoituksista. Järjestelmän tavoitteena on kehittää matematiikan opiskelua helpottamalla avun saamista vaikeiksi koettuihin asioihin toisaalta kysymysten ja vastausten ja toisaalta materiaaliin kohdistuvan kommentoinnin kautta. Oppifoorumi on tarkoitettu käytettäväksi selaimilla, jotka tukevat client-tasolle välitettävän koodin käsittelyä. 1.2 Erikoissanasto ja käytetyt lyhenteet Applet on asiakkaassa (clientissa) suoritettava sovelma.

2 HTML, Hypertext Markup Language on Internetissä käytetty tiedon esitystapa, jota client-pään selaimet osaavat tulkata. JSP, Java Server Page on tekniikka, joka helpottaa palvelinsovellusten ohjelmointia ja ylläpitoa. JDBC-ajuri, Java DataBase Connect - ajuri mahdollistaa tietokantakutsut palvelinsovelmista. MathML, Matematical Markup Language mahdollistaa matemaattisen kaavan esittämisen HTML-sivulla. LaTeX on matemaattisten kaavojen esitystapakieli, jonka kirjoittamiseen ja tulkkaamiseen on kehitetty erityisohjelmistoja. Myös WWW-selaimiin löytyy LaTextulkkaamiseen kykeneviä lisäohjelmia (plugins), esimerkiksi TechExplorer. Servlet on javalla koodattu ohjelmamoduuli, joka suoritetaan palvelimella, palvelinsovelma. WWW-palvelin on keskitetty palvelintietokone, joka sisältää Internet-verkkoon toimitettavia HTML/JSP-sivuja, sivuille dynaamisesti ladattavat tiedot sisältävän tietokannan sekä aineiston käsittelyyn tarvittavan ohjelmiston. Tietokanta voi olla myös omalla palvelimella.

3 2 Vaatimusmäärittely, suunnittelu ja niihin tehdyt muutokset (HV) Järjestelmän vaatimukset on kuvattu 1.11.1999 päivätyssä dokumentissa Matematiikan oppifoorumi, Vaatimusdokumentti. Järjestelmän rakenne ja suunnittelun aikana vaatimusdokumenttiin tulleet toiminnalliset ja tekniset muutokset on kuvattu 11.11.1999 päivätyssä dokumentissa Matematiikan oppifoorumi, Suunnitteludokumentti. Toteutuksen aikana on suunnitteludokumenttiin tullut seuraavia muutoksia: Luvussa 4.1.kuvattu Java-luokkien hyödyntäminen ei toteutunut suunnitellussa laajuudessa välineiden teknisten rajoitusten takia. Luvussa 4.3 kuvattu kannan rakenne on täsmentynyt tietojen esitysmuotojen ja pituuksien osalta. Kannan luontilauseet ovat liitteessä D. Viestitauluun on lisätty viestin sisennystasoa ilmaiseva attribuutti 2.1 Rajaukset Suunnitteludokumentissa suunnitelluista asioista on toteutusvaiheessa rajattu pois seuraavat asiat: Luvussa 4.2 kuvatuista luokista ei toteutettu Palaute-, Opiskelija, Kouluttaja ja Raportti-luokkia. Toteutetuista luokista puuttuvat kouluttajan ja ylläpitäjän toimintojen vaatimat metodit. Luvussa 4.3 kuvatuun tietokantaan ei toteutettu tauluja Palaute, OpintoSuoritus, Fakta ja KurssiFakta.

4 3 Toteutusratkaisut (JK) Järjestelmä toteutettiin noudattamalla 11.11.1999 päivätyssä dokumentissa Matematiikan oppifoorumi, Suunnitteludokumentti määriteltyä ohjelmiston arkkitehtuuria ja toimintaperiaatetta. 3.1 Ratkaisun filosofia, käytetyt ohjelmointimenetelmät ja ohjelmointikielet Järjestelmässä on käytössä ohjelmointia ja ylläpitoa helpottava JSP-teknologia. Se perustuu ajatukseen, että on hyödyllistä erottaa tuotteen ulkoasuun liittyvä ohjelmointi sen muista toiminnoista. JSP:ssä tätä on toteutettu upottamalla JSP-koodia HTMLsivuihin, jotta ulkonäköön liittyvä HTML ja toimintalogiikkaan liittyvä JSP voidaan muokata ja päivittää mahdollisimman paljon toisistaan riippumatta. Toteutuksessa eristetään tietokantahaut ja niihin liittyvät tarkistukset Java-luokkiin, joiden metodeja kutsutaan JSP-sivulla. Mainitut Java-luokat käännetään erikseen ja niitä tuodaan JSP-sivun käyttöön importkomennolla, samalla tavalla kuin Java-sovelluksissa yleensä. Niitä käytetään sovelluksessa eristämään tietokannan käsittelyyn liittyvä ohjelmakoodi. 3.2 Toteutuskokemuksia Toisin kuin alunperin luultiin, JSP-teknologian avulla JSP-sivujen koodin ja Javaluokkien eriyttäminen ei toiminutkaan täysin odotetusti. Vielä nuoren JSPohjelmointiympäristön kenties kehittymättömän Java-luokkien ja JSP-koodin yhteistoiminnan takia Java-luokista ei tullutkaan monikäyttöisiä. Tämä johtui siitä, että sivukohtaisia toimenpiteitä jouduttiin liittäämään Java-luokkiin, jolloin metodeita ei enää voitu käyttää muissa JSP-sivuissa yhtä helposti.

5 3.3 Versionhallinta Järjestelmää kehitettiin db.cs.helsinki.fi koneessa, jossa käytössä ollut ympäristö kaikkine tiedostoineen ja hakemistoineen on siirretty pakattuna ryhmän kotihakemistoon Tietojenkäsittelytieteen laitoksen melkki-koneen hakemistoon /home/group/matwo/toteutus. Pakkaus on nimeltään matwo.zip ja se sisältää JSPsivujen ja Java-lähdekoodien lisäksi myös kaikki järjestelmään liittyvät dokumentit. Pakkauksen sisältämä hakemistorakenne: dokumentit/ public_html/ jsp/ jsp/repository/ järjestemän dokumentit JSP ja HTML-sivut sekä kuvatiedostot jserv ja sen käyttämät tiedostot Java-lähdekoodit ja käännetyt.class-tiedostot 4 Moduulitestaus 4.1 Kayttaja (SV) login.jsp / Kayttaja2.Kirjoittaudu() - tyhjä käyttäjätunnus, tyhjä salasana - tyhjä käyttäjätunnus, ei-tyhjä salasana - ei-tyhjä käyttäjätunnus, tyhjä salasana - olemassaoleva käyttäjätunnus, tyhjä salasana - olemassaoleva käyttäjätunnus, väärä salasana - olematon käyttäjätunnus, olemassaoleva salasana - oikea yhdistelmä (huom. käyttäjätunnus ja salasana ovat case-sensitivejä!) - istunto puuttuu vielä

6 rek.jsp / Kayttaja2.Rekisteröidy() - olemassaoleva tunnus (virheilmoitus)* - olemassaoleva nimi, uusi tunnus (virheilmoitus) - olemassaoleva tunnus, olemassaoleva nimi (virheilmoitus sama kuin *) - tyhjiä kenttiä (virheilmoitus, ei tarkista vielä kaikkia) 4.2 Kurssi (JK) Kurssi-luokkaa käytetään kahdella pääsivun JSP-sivulla. Sitä testattiinkin yhdessä näiden sivujen kanssa. Kurssi-luokassa on ainostaan yksi metodi, jolla haetaan tietokannasta kaikkien tiettyyn kurssiin liittyvien lukujen otsikot. Lisäksi luvun otsikoista muodostetaan linkkejä, joilla kutsutaan JSP-sivulla olevaa JavaScript koodia. JavaScriptin avulla linkin klikkaaminen päivittää kaikkia kurssin pääsivun muita JSP-sivuja. Testauksessa tarkastettiin, että kaikki kurssin luvut tulevat haetuksi kannasta ja että ne tulostetaan oikeassa, luvun järjestysnumeron mukaisessa järjestyksessä. Lisäksi testattiin, että syntyneet linkit toimivat ja kaikki JSP-sivut päivittyvät oikein. Kurssi-luokan metodin avulla haetaan myös kurssin nimi, jonka oikein tulostuminen myös tarkistettiin. 4.3 Luku (JK) Luku-luokkaa käyttää ainoastaan pääsivun yksi JSP-sivu. Testauksessa tarkasteltiin näiden toimivuutta yhdessä. Luku-luokan ainoan metodin tehtävä on hakea kannasta kaikki halutun luokan kappaleet ja niiden otsikot. Jsp-sivulla luokan (olion) palauttama luvun sisältö tulostetaan. Luokan ja JSP-sivun testauksessa katsottiin, että luokka todella hakee oikeat kappaleet oikeassa järjestyksessä, eikä mitään ylimääräistä palauteta JSP-sivulle.

7 4.4 Harjoitus (OM) Harjoitus-moduulia testattiin yhdessä harjoitusosioon liittyvien JSP-sivujen kanssa. Harjoitus-moduuli sisältää kaksi metodia, joista toinen listaa kaikki luvun harjoitukset ja toinen esittää varsinaisen harjoituksen ja siihen liittyvät vaihtoehdot sekä huolehtii harjoituksen etenemisestä uusiin kysymysvaiheisiin. Harjoitusten listauksen osalta testattiin, että harjoitukset kuuluvat oikeaan lukuun ja että kaikki lukuun kuuluvat harjoitukset tulevat listatuiksi. Myös linkkien toimivuus testattiin varmistamalla että harjoituslinkin klikkauksen jälkeen oikea harjoitus vaihtuu harjoituskehykseen. Harjoituksen esittävän metodin osalta testattiin, että näytetty kysymys ja vaihtoehdot ovat oikeat. Harjoituksen etenemisessä tarkistettiin, että kaikki kysymysvaiheet tulevat näytetyksi ja että vastauksen jälkeen siirrytään oikeaan kysymysvaiheeseen. Testauksessa kokeiltiin, että eteneminen tapahtuu oikein sekä oikealla että väärällä vastauksella ja että viimeisen kysymysvaiheen jälkeen edetään seuraavan harjoitukseen ja viimeisen harjoituksen tapauksessa ilmoitetaan harjoitusten loppumisesta. Lisäksi testattiin vihjeiden oikeellisuus. 4.5 Kaavaeditori (OM) Kaavaeditorin testauksessa tarkasteltiin kaava-moduulin metodien sekä editoriin liittyvien JSP-sivujen toimintaa. Kaavan muuntamisessa MathML:ksi testattiin kaikki laskutoimitukset erikseen sekä eri laskutoimitusten yhdistelmiä mahdollisimman kattavasti. Huomio kiinnitettiin erityisesti seuraaviin asioihin: -laskutoimitusten oikea suoritusjärjestys ilman sulkeita ja sulkeiden kanssa -etumerkkien näyttäminen -sulkeiden näyttäminen (sulkeet näytetään vain silloin kuin ne ovat tarpeelliset laskujärjestyksen kannalta) -funktioiden (esim. sum, root) oikea toiminta myös silloin, jos parametreina on kaavoja

Lisäksi varmistettiin, että metodit eivät jää ikuiseen silmukkaan virheellisillä syötteillä. 8 Kaavan talletuksessa testattiin, että kaava tallettuu oikein ja oikeaan hakemistoon. Lisäksi testattiin, että talletusta ei voi tehdä tiedostoon, joka on jo olemassa. Käyttöliittymän osalta tarkistettiin, että tyhjästä tai pelkistä välilyönneistä koostuvasta kaava- tai nimikentästä annetaan virheilmoitus. 4.6 Keskustelut (CJ) Keskustelujen rakenteellisessa testauksessa (white box) on JSP-sivuilla käytetty polkutestausta tavoitteena haarakattavuus. Viesti-luokkaan on sovellettu samaa testausperiaatetta. Keskustelut-ikkunan luontia ei ole erikseen polkutestattu, koska sitä ei kutsuta väärillä parametreilla jos Viesti-luokan listaaviestit-metodi ja keskustelut_kysymykset-sivu toimivat oikein. Joten tähän liittyvät keskustelut-sivua ja keskustelut_luvut-sivua ei ole muodollisesti testattu. Myös keskustelut_uusi2-sivun polut riippuvat vain keskustelut_uusi-sivun ja Viestiluokan luouuusi metodin päätöksistä, joten sitä ei muodollisesti testata. Keskustelut_kaava-, keskustelut_kaava2- ja keskustelut_valmis-sivuilla on vain yksi polku. Testikuvaus: luouusi-metodi Tarkoitus: Tarkistaa että kaikki haarat suoriutuvat oikein. Kriteeri: Uuden viestin luonnin yhteydessä haetaan jo tallennettujen viestien suurin tunnusluku, ja asetetaan viestin tunnusluvuksi tätä seuraavaa lukua. Jos viestejä ei ole tietokannassa asetetaan viestin tunnusluvuksi 1. Jos annettu sisennys on suurempi

9 kuin sallittu sisennys asetetaan viestin sisennykseksi suurin sallittu sisennys. Jos viesti ei ole vastaus toiseen viestiin määritetään järjestysluku samalla tavalla kuin tunnusluku (ks. yllä). Muussa tapauksessa korotetaan sen viestin johon vastataan sekä sitä seuraavien viestien järjestyslukua yhdellä, ja asetetaan uuden viestin järjestysluvuksi sen viestin järjestysluku johon vastataan. Riippuvuudet: Tehtävä ennen Viesti-luokan listaaviestit-, haeviesti- ja lisaakaava-metodien testausta. Testitapaukset: 1. Viestin luonti järjestelmään jossa ei ole viestejä ennestään. 2. Viestin luonti sisennyksellä joka on suurempi kuin sallittu sisennys. 3. Viestin luonti pohjatasolle. 4. Viestin luonti vastauksena toiselle viestille. 5. Viestin luonti vastauksena olemattomalle viestille. Testikuvaus: listaaviestit-metodi Tarkoitus: Tarkistaa että kaikki haarat suoriutuvat oikein. Kriteeri: Metodin kutsun yhteydessä määritellään kutsutaanko sitä keskustelut_sisallys-sivulta vai keskustelut_vastaukset-sivulta antamalla true arvo parametrille keskustelu jos kutsu on sisallys-sivulta, muussa tapauksessa false. Jos keskusteluparametrille on annettu true-arvo lisätään metodin palautusarvoon (joka tulostetaan sivulla) luvun otsikko sekä viestien kirjoittajat, ja hyperlinkki joka päivittää viestikehyksen. Muussa tapauksessa viestien hyperlinkit kutsuvat Javascript-funktiota nimeltä keskustelut (joka avaa

10 keskusteluikkunan sivulla). Jos annetaan vääriä kurssi- ja lukuparametreja palautetaan tyhjä merkkijono. Viestilistauksen oikeasta järjestyksestä huolehtii luouuusi metodi. Riippuvuudet: Viesti-luokan luouusi metodin polkutestaus tehtävä ennen tätä. Tehtävä ennen keskustelut_vastaukset- ja keskustelut_sisallyssivujen testausta. Testitapaukset: 1. Kutsu väärillä kurssi- ja lukuparametreilla. 2. Kutsu keskustelu-parametrin arvolla false. 3. Kutsu keskustelu-parametrin arvolla true. 4. Kutsu kurssin luvulla jolla ei ole viestejä. Testikuvaus: haeviesti-metodi Tarkoitus: Tarkistaa että kaikki haarat suoriutuvat oikein. Kriteeri: Jos haettava viesti löytyi kannassa asetetaan vastaavien Viestiluokan attribuuttien arvot ja palautetaan true, muussa tapauksessa asetetaan Virhe-attribuutille arvo Viesti ei löytynyt. ja palautetaan false. Riippuvuudet: Viesti-luokan luouusi metodin polkutestaus tehtävä ennen tätä. Tehtävä ennen keskustelut_viesti ja keskustelut_uusi-sivujen testausta. Testitapaukset: 1. Viestin haku väärällä viestitunnuksella. 2. Viestin haku oikealla viestitunnuksella. Testikuvaus: lisaakaava-metodi

11 Tarkoitus: Tarkistaa että kaikki haarat suoriutuvat oikein. Kriteeri: Kannankuvauksen mukaan voidaan käyttää viestiliitteenä olemassaolevaa kaavaa. Joten tarkistetaan ensin onko viestiin lisättävä kaava olemassa kannassa. Jos ei ole lisätään se liitetiedosto-tauluun. Tämän jälkeen haetaan suurin kaavaliitetunnus kannasta ja asetetaan kaavan tunnukseksi tämä arvo korotettuna yhdellä. Jos kaavaliitteitä ei ole kannassa ennestään asetetaan kaavan tunnukseksi 1. Riippuvuudet: Viesti-luokan luouusi metodin polkutestaus tehtävä ennen tätä Testitapaukset: 1. Kaavan lisäys viestiin kun kannassa ei ole viestiliitteitä. 2. Kaavan lisäys viestiin uudella kaavalla. 3. Kaavan lisäys viestiin käyttämällä olemassaolevaa kaavaa. Testikuvaus: listaakaavat-metodi Tarkoitus: Tarkistaa että kaikki haarat suoriutuvat oikein. Kriteeri: Jos parametrina annettiin väärä viestitunnus palautetaan tyhjä merkkijono. Muussa tapauksessa sisennetään kaava sen sijainnin perusteella sekä palautetaan kaavoja näyttävä HTMLkoodi. Riippuvuudet: Viesti-luokan lisaakaava-metodin polkutestaus tehtävä ennen tätä Testitapaukset: 1. Kutsu väärällä viestitunnuksella. 2. Kutsu vasemmalla sijaitsevalla kaavalla. 3. Kutsu keskellä sijaitsevalla kaavalla. 4. Kutsu oikealla sijaitsevalla kaavalla.

12 Testikuvaus: Keskustelut_vastaukset-sivu Tarkoitus: Tarkistaa että kaikki haarat suoriutuvat oikein. Kriteeri: Tyhjä sivu jos ei anneta parametreja. Lomake-nappi joka avaa keskustelut-ikkunan jos annetaan parametreja mutta luvussa ei ole viestejä. Jos luvussa on viestejä näytetään Viesti-luokan palauttama viestilista. Riippuvuudet: Viesti-luokan listaaviestit metodin polkutestaus tehtävä ennen tätä. Tehtävä ennen muiden keskustelusivujen testausta. Testitapaukset: 1. Kutsu ilman parametreja. 2. Kutsu kurssi-parametrilla mutta ei luku-parametrilla. 3. Kutsu luku-parametrilla mutta ei kurssi-parametrilla. 4. Kutsu kurssin luvulla johon ei liity viestejä. 5. Kutsu kurssin luvulla johon liittyy viestejä. Testikuvaus: Keskustelut_sisallys-sivu Tarkoitus: Tarkistaa että kaikki haarat suoriutuvat oikein. Kriteeri: Tyhjä sivu jos ei anneta parametreja. Päivittää viestikehyksen - 1 arvolla jos ei anneta viestiparametria, muussa tapauksessa viestin numerolla. Tulostaa vain Uusi viesti -napin jos luvussa ei ole viestejä, muussa tapauksessa myös viestilistauksen. Riippuvuudet: Viesti-luokan listaaviestit-metodin ja keskustelut_kysymyksetsivun polkutestaus tehtävä ennen tätä. Tehtävä ennen keskustelu_viesti-sivun ja keskustelut_uusi-sivun testausta.

13 Testitapaukset: 1. Kutsu ilman parametreja. 2. Kutsu viestiparametrilla. 3. Kutsu ilman viestiparametria. 4. Kutsu kurssin luvulla johon ei liity viestejä. 5. Kutsu kurssin luvulla johon liittyy viestejä. Testikuvaus: Keskustelut_uusi-sivu Tarkoitus: Tarkistaa että kaikki haarat suoriutuvat oikein. Kriteeri: otsikko, viestinumeroa riittävästi Jos annetaan viestinumero parametrina haetaan sen viestin teksti, kurssi, luku ja sisennys lomakkeeseen. Jos ei anneta haetaan parametrit kurssinumero ja lukunumero. Jos ei anneta parametreja näytetään virheilmoitus. Riippuvuudet: testattava Viesti-luokan haeviesti metodia sekä keskustelut_sisallys-sivua ennen tätä. Testitapaukset: 1. Kutsu ilman parametreja. 2. Kutsu viestiparametrilla. 3. Kutsu kurssiparametrilla. 4. Kutsu lukuparametrilla. 5. Kutsu kurssi- ja lukuparametreilla. Testikuvaus: Keskustelut_viesti-sivu

14 Tarkoitus: Tarkistaa että kaikki haarat suoriutuvat oikein. Kriteeri: Tyhjä sivu jos ei anneta viestinumeroa parametrina tai parametri on -1. Muussa tapauksessa tulostetaan viestin aihe, kirjoittaja, päivämäärä kellonaika, viestin teksti, viestin kaavat sekä Vastaa -nappi. Riippuvuudet: Viesti-luokan haeviesti, listaakaavat ja luouusi metodeja sekä keskustelut_sisallys-sivua ja keskustelut_uusi-sivua testattava ennen tätä. Testitapaukset: 1. Kutsu ilman viestiparametria. 2. Kutsu arvolla -1. 3. Kutsu viestiparametrilla. Havaitut virheet: Kun olemassaolevaa kaava liitettiin viestiin havaitiin että keskustelut_kaava2.jspsivulla ei tulostettu Viesti-luokan virheilmoitusta, sen sijaan merkkijonoa viesti.virhe. Virhe korjattiin. Havaittiin samassa yhteydessä että java.sql.resultset.next()-metodi ei toiminut odotetulla tavalla erään SELECT-lauseen kanssa. Jos tulosjoukkoa ei löytynyt ja sitä ei käytetty ohjelmassa muuhun kuin olemassaolon testaukseen, tämä metodi ei palauttanut false-arvoa. Piti erikseen tarkistaa wasnull()-metodilla oliko tulosjoukko tyhjä. Tämän seurauksena ohjelma yritti Viesti-luokan lisaakaava-metodissa lisätä toista esiintymää olemassaolevasta tiedostosta, jolloin JDBC-ajuri ilmoitti avaineheyden rikkoontumisesta. Virhe korjattiin. Keskustelut_uusi-sivun virheilmoituksesta puuttui välilöynti. Virhe korjattiin.

15 Testaus ei tarkista ulkonäköön liittyviä näkökohtia, mutta arviodaan että se kattaa noin 90 prosenttia keskustelujen päätöksenteosta. Metodien kutsujärjestystä ei ole mielekästä testata, koska esimerkiksi jos luokan kaikki viisi metodia kutsutaan kerran tämä antaa 5!=120 erilaista kutsujärjestystä. On oletettu että metodien kutsussa käytetään jokseenkin järkeviä parametri-arvoja, eikä ole testattu käyttäytymistä kaikilla mahdollisilla virheellisillä arvoilla. 5 Järjestelmätestaus (HV) 5.1 Testauksen tavoitteet ja testausperiaate Järjestelmätestauksella varmistetaan, että MatWO-järjestelmästä toteutettu, opiskelijan käyttötapaukset sisältävä osa toimii vaatimus- ja suunnitteludokumenteissa kuvatulla tavalla. Järjestelmätestausta on edeltänyt toteuttajien tekemä moduuli- ja integrointitestausvaihe, jossa on varmistettu HTML- ja JSP-sivujen, Java-luokkien sekä metodien toiminta erikseen sekä niiden yhteensopivuus. Järjestelmätestauksessa käytetään menetelmänä mustalaatikkotestausta ja testitapaukset valitaan luokittelemalla ne käyttötapauksittain kelvollisiin ja virheellisiin. 5.2 Testausympäristö ja testaustapa Järjestelmätestaus suoritetaan MatWO-kehitysympäristössä, johon ollaan yhteydessä selaimilla Internet-verkosta. Tietokantaan luodaan testauksen vaatima lähtötilanne suorittamalla luontilauseet tiedostosta. Kannan luontilauseet ovat liitteessä D ja pohjustuksessa käytettävät insert-lauseet liitteessä C. Taulujen vapauttaminen on tehtävä ennen luontia ja pohjustusta, käytetyt lauseet ovat liitteessä E.

16 Testauksen aikana ei kehitysympäristössä tehdä korjauksia ohjelmistoon eikä muuteta kannan tilaa. Testaaja suorittaa testauksen käymällä käyttötapauksille suunnitellut testitapaukset läpi ennalta suunnitellussa järjestyksessä testijaksoina ja raportoimalla poikkeavista lopputuloksista testitapauslomakkeille. Taulujen KAYTTAJA, KURSSIKAYTTAJA, VIESTI ja VIESTILIITE sisällöt tarkastetaan testin jälkeen SQL-tulostuksen perusteella, jotta voidaan varmistaa ohjelmistossa tehtyjen päivitysten toimivuus. Virheraportit käydään läpi testauksen jälkeen pidettävässä testauspalaverissa, jossa päätetään ohjelmiston mahdollisesta korjaamisesta ja uusintatestauksen tarpeesta ja laajuudesta. Järjestelmätestaus on suoritettu, kun testauspalaverissa ei ole käsiteltävänä korjaamattomia tai testaamattomia virheitä. 5.3 Testattavat toiminnot, testijaksot ja testitapaukset (HV, JK) Alla olevassa luettelossa on testitapaukset ryhmitelty toiminnoittain ja yksilöity kirjain- ja numeroyhdistelmällä (esim. R1). Jokaisesta testitapauksesta odotettuine tuloksineen on tarkempi kuvaus liitteessä A. Ryhmä suoritti testitapaukset 11-17. Järjestelmätestauksessa käytetyt testijaksot on kuvattu liitteessä B. Järjestelmätestauksessa varmistetaan seuraavien toimintojen oikeellisuus: Opiskelijan rekisteröityminen järjestelmään R1, rekisteröityminen oikein R2, käyttäjätunnus on jo varattu R3, salasana antamatta R4, nimi antamatta

17 Käyttäjätunnuksen syöttäminen S1, opiskelija, tunnus ja salasana oikein S2, kouluttaja, salasana väärin S3, tunnusta ei löydy S4, sama tunnus kirjoittautuu toisen kerran ennen edellisen istunnon lopettamista Ohjesivun katsominen O1, istunnon alussa O2, kesken opiskelun Materiaalin lukeminen L1, kurssin ensimmäinen luku, yksi kappale (ei harjoituksia, ei viestejä) L2, kurssin toinen luku, kolme kappaletta, toisessa kaavaliite L3, kurssin kolmas luku, hyvin pitkä kappale L4, luku ilman kappaleita (L2:ssa on kappaleiden kaksi ja kolme numerot ja paikat ruudulla kannassa eri järjestyksessä, L3 ja L4 ovat vastaavanlaisia lukuja) Harjoitustehtävän tekeminen H1, kolmella oikealla vastauksella loppuun suorittuva harjoitus, josta mennään luvun seuraavaan harjoitukseen. H2, väärät vastaukset vihjeineen, viimeksi oikea, kolme kysymystä ja luvun viimeinen harjoitus H3, seuraavan luvun harjoitus, johon liittyy kaava H4, kurssin viimeisen luvun viimeinen harjoitus

18 Viestin tekeminen V1, viestin kirjoitus V2, viestin kirjoitus ja kaavan liittäminen siihen V3, pitkän (> 1000 merkkiä) viestin kirjoittaminen V4, viesti ilman viestinaihetta V5, viesti ilman viestitekstiä Viestiin vastaaminen VV1, normaaliin viestiin vastaus ja kaava VV2, viestin vastaukseen vastaus VV3, vastauksen vastaukseen kaksi yhtäaikaista vastausta Viestin lukeminen VL1, normaalin viestin lukeminen VL2, viestin kaavalla lukeminen VL3, pitkän viestin lukeminen VL4, vastausviestin lukeminen Viestien selailu VS1, valitussa luvussa ei ole viestejä VS2, valitussa luvussa on yksi viesti ja sille vastauksia. VS3, valitussa luvussa on kolme viestiä ja jokaisessa niistä on kolme vastausta tai vastauksen vastausta. Viestin etsiminen

19 VE1-4, annetulla hakukriteerillä löytyy viestejä hakusana otsikossa hakusana sisällössä kirjoittaja alkupvm/loppupvm VE5-8, annetulla hakukriteerillä ei löydy viestejä 6 Suorituskykyanalyysi (HV) 6.1 Järjestelmän levytilatarve ja tietokannan koko 6.1.1 Oletuskurssin vaatima tilantarve Arvioidaan ja oletetaan kirjan Lahtinen&Pehkonen, Matematiikkaa soveltajille 2 perusteella, että : yksi 200 sivuinen kurssi koostuu 20 luvusta luvussa on keskimäärin viisi (5) kaksisivuista kappaletta sivulla on 10 kaavaa ja 20 riviä tekstiä, 70 merkkiä/rivi lukuun liittyy keskimäärin 20 harjoitusta, joissa kussakin on keskimäärin viisi (5) kysymysvaihetta vastausvaihtoehtoineen. jokaiseen kysymykseen liittyy yksi kaava viesteihin ei liity kaavoja. Kappaleiden tekstiosuuden tilantarve on tällöin n. 20 x 5 x 2 x 10 x 20 = 280 KB. Tietokantaan tulee jokaisesta kappaleesta kaavojen väliinsijoittelun takia useita kappaleita. Harjoituksia on 20 x 20 = 400, kysymyksiä 400 x 5 = 2000 ja vastausvaihtoehtoja 4 x 2000 = 8000. Koska jokaiseen kysymykseen liittyi yksi kaava, on kaavoja yhteensä 2000.

20 Oletataan, että kurssin suorittaa 150 opiskelijaa. Oletetaan, että jokainen opiskelija tekee vähintään yhden kysymyksen jokaista lukua kohti tai kommentoi vastausta. Oletetaan, että opiskelija lukee luvun istuntokerralla ja vastaa kysymyksiin oikein 67 %:sti ensimmäisellä kerralla ja 100 %:sti toisella kerralla. Oletetaan, että jokainen opiskelija antaa yhden kirjallisen tai viestipalauteen jokaista lukua kohti. Tietokannan tauluihin tarvitaan tilaa (ilman indeksejä) tällaista oletuskurssia varten: käyttäjille 150 merkkiä x 150 = 22,5 KB kurssille 0,3 KB kurssikäyttäjille 45 merkkiä x 150 = 6,8 KB luvuille 70 merkkiä x 20 = 1,4 KB kappaleille 54 merkkiä x 2000 (kaavojen perusteella) = 108 KB kappaleliitteille 63 merkkiä x 2000 = 126 KB harjoituksille 74 merkkiä x 400 = 29,6 KB kysymyksille 300 merkkiä x 2000 = 600 KB vastauksille 200 merkkiä x 8000 = 1600 KB kysymysliitteille 60 merkkiä x 2000 = 120 KB liitetiedostoille 40 merkkiä x 4000 = 160 KB (jokainen kaava erilainen) viesteille 250 merkkiä x 150 x 20 = 750 KB opintosuoritus/ lukutiedoille 77 merkkiä x 150 x 20 = 231 KB opintosuoritus / vastaustiedoille 77 x (100 x 2000 + 50 x 4000) = 30800 KB Palautteelle 55 merkkiä x 20 x 150 = 165 KB. Tietokantaan tarvitaan näin arvioiden oletuskurssia varten tilaa n. 34,4 MB. Oletetaan että MathML vaatii jokaista kaavan merkkiä kohti keskimäärin 13 lisämerkkiä. Oletetaan, että kaavan keskimääräinen koko on 20 merkkiä. Tällöin kaavojen sisällölle tarvittava levytila olisi 20 x (13 + 1) x ( 2000 + 2000) = 1520 KB sekä 4000 kaavan tiedostohallintaan tarvittava lisätila n. 120 KB, yhteensä n 1,6 MB.

21 Oletuskurssin kokonaistilantarve on näin arvioiden (34,4 + 1,6) MB = 36,1 MB. 6.1.2 Johtopäätökset Vaikka kannan indeksien vaatimaa tilantarvetta ei ole huomioitu laskemissa, ne antavat kuitenkin melko hyvän käsityksen siitä, minkä kokoluokan levytilan järjestelmä tarvitsee ja mihin levytila kuluu. Oletuskurssin kaavojen säilytys MathML-muodossa (1,6 MB) vie lähes 40 % kurssin staattisen - siis pl. taulut viesti, palaute ja opintosuoritus - oppimateriaalin ( 4,1 MB) levytilan tarpeesta. Kurssin staattinen osa ( 2,5 MB) vie kaikesta tietokannan levytilatarpeesta (34,4 MB) vain vajaan 7 %. Opiskelijoiden edistymisen seurantataulu (31 MB) vie suurimman osan, yli 90 %, kannan levyresursseista. Tähän vaikuttaa merkittävästi kurssin harjoitusten ja niihin liittyvien kysymysten määrä sekä opiskelijoiden osaaminen, jotka saattavat vaihdella kursseittain paljonkin. Järjestelmässä on syytä varautua dynaamisten taulujen koon seurantaan ja luoda historialle siivousmenettely. SOLID kannan taulujen numeeristen avainten tyyppinä on toteutuksessa ollut NUMERIC, joka varaa tilaa vähintään sarakkeelle määritellyn verran. Tietotyypillä SMALLINT pystyttäisiin ilmaisemaan kahdella (2) tavulla luvut 32767 asti, joka riittäisi kurssin staattisiin osiin. Tietotyypillä INTEGER päästään neljällä (4) tavulla lukuun 2 potensiin 31, mikä riittää dynaamisiinkin tauluihin. Opintosuoritustaulun rivikoko olisi tällaisten muutosten jälkeen 77 merkin sijasta vain 55 merkkiä ja oletuskurssissa tämä tarkoittaisi taulukoon pienenemistä 34,4 MB:sta 22,2 MB:iin. Numeeristen avainten tietotyyppien muuttaminen lopullisessa toteutuksessa olisi pelkästään tämän arvion perusteella hyvinkin kannatettavaa.

22 6.2 Järjestelmän vastausaikavaatimukset (HV, JK) Järjestelmän suorituskykykriittisimmät osat ovat toisaalta JSP-koodia tulkkaava WWW-palvelin ja toisaalta tietokanta, johon joissakin tilanteissa kohdistuu raskaita tapahtumia. Kouluttajan käyttöliittymässä tarvittavat palauteyhteenvedot edellyttävät paljon tietokantahakuja. Opiskelijan opiskelun seuranta vaatii jatkuvaa opintosuoritustaulun päivittämistä, jonka käsittely saattaa esimerkiksi taulun organisoinnin puutteessa hidastua. Projekti ei toteuttanut järjestelmän kouluttajaosuutta eikä opintosuoritustaulua, joten kannankäsittelyn suorituskykymittaukset raskaimpien kyselyiden osalta olivat mahdottomia. WWW-palvelimen suorituskykyä on myöskään analysoitu tarkemmin. 7 Jatkokehitys (HV) 7.1 Toteuttamatta jääneet piirteet Käyttötapauksista ei toteutettu ajanpuutteen takia lainkaan ylläpitäjän eikä kouluttajan käyttötapauksia. Opiskelijan käyttötapauksista jäi kokonaan toteuttamatta kurssin valinta sekä palautteen antaminen. Kurssin ja harjoitusten suorittamisesta rajattiin pois OpintoSuoritus- sekä KurssiKayttaja -taulujen käyttö sekä Luku-taulun julkaisupäivän tutkiminen. Harjoitusten toteutuksessa ei käytetty Vastaus-taulun SeuraavaKysymysattribuuttia. MathML- kaava-editorista toteutettiin vain prototason versio.

23 Kuvatiedoston tai appletin käsittelyä ei toteutettu. 7.2 Hyödylliset lisäpiirteet Projekti ei miettinyt kannan siivousta, varmistuksia eikä uudelleenorganisointia, tuotantoympäristössä nämä ovat lähes välttämättömiä. Julkaisujärjestelmässä tarvitaan ilmeisesti suunniteltua parempi menettely oppimateriaalin julkaisuajankohdan ja versioinnin hallintaan. Projekti ei suunnitellut kannan yhtäaikaisen päivityksen hallintaa. Samannimisten käyttäjien rekisteröitymistä ei ole estetty, tästä voi tulla ongelmia esimerkiksi viestien haussa kirjoittajan mukaan. Kaavojen nimeämistä tai hallintaa ylipäänsä ei suunniteltu kovin tarkasti. Tämä on kuitenkin tarpeen, jotta samaa kaavaa voisi helposti käyttää uudelleen hyödyksi kurssin sisällä, palautteissa tai viesteissä.