\section{Testaussuunnitelma}

Testaussuunnitelma on jaettu kolmeen osaan toteutettavien kokonaisuuksien mukaan ja toteutetaan iteraation tavoitteita mukaisesti.

\subsection{Relaatioalgebran harjoitteluv�lineen testaus} 

Relaatioalgebran harjoitteluv�lineen testaus jakautuu kahteen osaan, AlgebraParser-luokan testaukseen ja k�ytt�liittym�n testaukseen. AlgebraParser-luokan testauksella varmistutaan siit�, ett� luokka generoi relaatioalgebran lausekkeesta oikean SQL-kyselyn, joka tuottaa saman vastauksen. Relaatioalgebran harjoitteluv�lineen k�ytt�liittym�testauksella varmistutaan siit�, ett� AlgebraParser-luokkaa k�ytet��n oikein. 

\subsubsection{AlgebraParser-luokan testaus} 

AlgebraParser-luokan testaus jakautuu kolmeen osaan. Koska luokassa oleva metodi parse k�ytt�� hyv�kseen luokan kaksi muuta metodia ja koska luokan kaksi muuta metodia ei miss��n tapauksessa luokan ulkopuolelta kutsuta, testaus perustuu metodin parse testaukseen ja sellaisiin testitapauksiin jotka aiheuttavat metodissa parse metodien split ja splitNaturalJoin kutsumista. N�m� testitapaukset ovat parse-metodin parametrej�. Testitapauksia kirjoitettaessa oletettiin, ett� tietokannassa on taulut taulu1 ja taulu2, jotka sis�lt�v�t kumpikin vain attribuutit eka ja toka.


Testitapaukset: 

Seuraavassa kunkin kohdan rivien selitykset:

Testi nro.
Parametrit
Odotettava vastaus
 


1
Taulu1
taulu1
 
2
p(eka, toka)(taulu1)
Select eka, toka from taulu1


3
s(eka=10)(taulu1)
Select * from taulu1 where eka=10
 
4
Taulu1 U taulu2 
(Select * from taulu1) Union (Select * from taulu2)
 
5
Taulu1 I taulu2 
(select * from taulu1) Intersect ( select * from taulu2)
 
6
Taulu1 \ taulu2 
(Select * from taulu1) minus (Select * from taulu2)
 
7
Taulu1 l(eka = toka) taulu2
Select * from taulu1,taulu2 where eka = toka
 
8
Taulu1 * taulu2
Select eka, toka from (select eka, toka from taulu1), (Select eka as eka1, toka as toka1 from taulu2) where eka=eka1, toka = toka1
 
9
P(eka, toka)(s(eka = toka)(taulu1 x taulu2))
Select eka, toka from ( select * from taulu1,taulu2 where eka = toka )
 
10
s(eka=1 and toka=2)(taulu1 l(eka < toka) taulu2)
Select * from (Select * from taulu1,taulu2 where eka<toka) where eka=1 and toka=2
 
\subsubsection{Relaatioalgebran harjoitteluv�lineen k�ytt�liittym�n testaus} 

Yksityiskohtaisemmat testitapaukset kuvataan tarkemmin projektin loppudokumentissa.

Unaariset operaatiot

Unaaristen operaatioiden testauksen tarkoituksena on selvitt��, ett� operaatiot toimivat m��rittelyss� annetulla tavalla.

Operaation testaaminen: valitaan tauluvalikosta taulu, ja sille teht�v� operaatio, kirjoitetaan ehdot niille tarkoitettuun tekstikentt��n ja painetaan v�litulospainiketta. Odotettava tulos on se, ett� operaation tulostaulu ilmestyy tauluvalikkoon, ja sen tuottava relaatioalgebran lauseke vastauspaikalle. Taulun sis�ll�n oikeellisuus on tarkistettavissa katsomalla sen sis�lt�.

Operaation testaaminen virheellisin l�ht�arvoin: tarkoitus on katsoa, ett� v�line toimii my�s virheellisill� sy�tteill�. T�m� testataan muuten samalla menetelm�ll� kuin yll�, mutta k�yd��n jokaiselle operaatiolle l�pi testitapaukset, joissa ehdoissa on jotain vikaa tai ne puuttuvat, tai sitten kohdetaulua ei ole m��ritelty. N�iden toimenpiteiden tulee johtaa virheilmoitukseen ja virhetilanteeseen. T�h�n testijoukkoon kuuluu my�s testi, jossa yritet��n ottaa v�litulos tekem�tt� mit��n valintoja.

Bin��riset operaatiot

Bin��riset operaatiot vastaavat unaarisia muuten mutta vaativat kaksi taulua toimiakseen. Niille tehd��n vastaavanlainen testijoukko.

Taululistojen suodattaminen

Taululistojen suodatuksen testaamisen tarkoituksena on katsoa, ett� tauluvalikossa n�kyv�t kerrallaan vain halutut taulut. T�m� testataan valitsemalla jokainen vaihtoehdoista ja tarkistamalla taululistoista mit� niiss� sitten on. 

Alusta alkaminen 

Alusta alkamisnapin painamisen tuloksen pit�isi olla se, ett� tekeill� oleva lauseke nollautuu pois. T�m� testataan painamalla painiketta kesken jonkin lauseen rakentamisen. Lis�ksi testataan mit� k�y, kun painetaan aloita alusta - painiketta ilman lauseketta. T�st� ei pit�isi k�yd� mit��n.

Lopullisen vastauksen antaminen

Testien tarkoitus on selvitt�� toimiiko v�line lopulta. Testit tehd��n painamalla valmis -painiketta. Jos mit��n lauseketta ei ole tekeill� tai valittuna, mit��n ei pit�isi tapahtua. Muussa tapauksessa j�rjestelm�n tulisi suorittaa lauseke ja tulostaa tulostaulu mahdollisine virheilmoituksineen.

\subsubsection{Yll�pito-operaatioiden testaus} 

Yll�pito-operaatioiden muutokset kohdistuvat yhteen luokkaan OUpdateAnswerForm, joten se on ainoa luokka joka vaatii testausta. Luokkaan tulee muutama uusi metodi ja olemassa oleviin hieman muutoksia.

Koska luokan muuttuminen alkuper�isest� toimivasta luokasta on varsin pient�, niin sille voidaan tehd� sek� peruspolkutestaus, ett� ehtotestaus.

Toiminnallista testausta luokalle tehd��n antamalla testaamalla, ett� kaikki eri sivut tuottavat painikkeet tekev�t halutut sivut ja koittamalla erilaisia SQL-lauseita, joista osan pit�isi toimia ja osan ei.

\subsection{Teht�v�nantov�lineiden testaussuunnitelma} 

Teht�v�n poisto

Teht�v� voidaan poistaa j�rjestelm�st� kahdesta paikasta, joten kumpaakin on testattava. Napin painalluksen pit�isi poistaa teht�v� kannasta ja tulostaa sivu, jossa kerrotaan n�in tapahtuneen. Poisto on varmistettavissa kannasta erikseen katsomalla. Kannattaa huomata, ett� teht�v�n poistumisesta ei kysyt� mit��n.

Teht�v�n lis��minen 

Teht�v�n lis��misen testauksen tarkoituksena on selvitt�� tulevatko teht�v�n tiedot kantaan oikein. Testaus suoritetaan antamalla teht�v�nantoja ja tarkkailemalla kannasta, ett� ne my�s saatiin oikein sis��n. My�s ep�t�ydellisesti t�ytettyjen lomakkeiden aiheuttamat virheet testataan, tuloksena pit�isi olla virheilmoitus eik� mit��n muutoksia kantaan.

Teht�v�n muokkaaminen

Teht�v�n muokkaamisen testaaminen muistuttaa teht�v�n lis��misen testaamista melkein t�ydellisesti. On kuitenkin tarkistettava erikseen, ett� teht�v� todellakin korvautuu uudella. Teht�v� ei korvaudu mill��n, jos lomakkeet on t�ytetty ep�t�ydellisesti.




 



