Testausdokumentti. Kaapo - Kaavioiden piirto-ohjelma. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

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

Testaussuunnitelma Labra

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

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

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

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

Convergence of messaging

Ohjelmistotuotantoprojekti

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

Testaussuunnitelma. PUSU-ryhmä. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti Mooan

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

T Testiraportti - järjestelmätestaus

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

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

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

T Testiraportti - integraatiotestaus

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Loppuraportti. Kaapo - Kaavioiden piirto-ohjelma. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

TIE = JOTU. VH5 - MagicDraw

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Mainoksen taittaminen Wordilla

Ohjelmistojen mallintaminen. Luento 11, 7.12.

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

Lohtu-projekti. Testaussuunnitelma

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

Testausraportti v.1.3

UCOT-Sovellusprojekti. Testausraportti

Testaussuunnitelma. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

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

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

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

COTOOL dokumentaatio Testausdokumentit

Suunnitteludokumentti

VH5, JOTU, MagicDraw:n käyttö

Automaattinen yksikkötestaus

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmoinnin perusteet Y Python

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

OHJ-7400 Graafisen käyttöliittymän ohjelmointi, Harjoitustyö

58160 Ohjelmoinnin harjoitustyö

Kuopio Testausraportti Asiakkaat-osakokonaisuus

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

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

Ohjelmiston testaus ja laatu. Testaustasot

1 KR-Laskut Mallitiliöinnit Kommenttikentän käyttö mallitiliöinneissä Mallitiliöinnin tallennus-sivu...

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

AUTOCAD-TULOSTUSOHJE. Tällä ohjeella selitetään Autocadin mittakaavatulostuksen perusasiat (mallin mittayksikkönä millimetrit)

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

Subversion-ohje. Linux Traffic Control-käyttöliittymä Ryhmä paketti2

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

v1.2 Huom! Piirto-ohjelmissa asioita voi tehdä todella monella tavalla, tässä esitellään yksi esimerkkitapa tällaisen käyrän piirtämiseen.

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

JUnit ja EasyMock (TilaustenKäsittely)

Opponointitestaus VYM -> LiKe

Good Minton QA Raportti Iteraatio 1 Sulkapalloliiton Kilpailujärjestelmä

Versio Päiväys Tekijä Kuvaus Tikkanen varsinainen versio

T Testiraportti - integraatiotestaus

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Hirviö Järjestelmätestauksen testitapaukset ja suoritusloki I1

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

DOORSin Spreadsheet export/import

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows 1.

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

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

Google-dokumentit. Opetusteknologiakeskus Mediamylly

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

Tero Mononen / Kumppanuuskampus

T Projektikatselmus

Test-Driven Development

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA

Testaussuunnitelma. Oppimistavoitteiden hallintajärjestelmä harri

Yhteenvetodokumentti. myva. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

LoCCaM Riistakamerasovellus. Dimag Ky dimag.fi

KYMP Webmail -palvelu

GeoGebra-harjoituksia malu-opettajille

Epooqin perusominaisuudet

Vaatimusdokumentti. Kaapo - Kaavioiden piirto-ohjelma

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

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

Suunnitteluvaihe prosessissa

STATUSTEN JA HOITOJAKSOJEN KORJAUS

Ohjelmiston testaussuunnitelma

Projektisuunnitelma Viulu

KÄYTTÖOHJE. Servia. S solutions

E s i t y s g r a f i i k k a a s e l k o k i e l e l l ä MICROSOFT. PowerPoint. P e t r i V a i n i o P e t r i I l m o n e n TIKAS-SARJA

HAKUKONEMARKKINOINTI KOTISIVUJEN PÄIVITYSOHJE

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

COTOOL dokumentaatio Testitapaukset

Tentti erilaiset kysymystyypit

ELM GROUP 04. Teemu Laakso Henrik Talarmo

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

Scratch ohjeita. Perusteet

Kotopro käyttäjän ohje

Hakemistojen sisällöt säilötään linkitetyille listalle.

Transkriptio:

Testausdokumentti Kaapo - Kaavioiden piirto-ohjelma Helsinki 1.9.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilari Heikkinen Allan Holsti Tero Kallioinen Kristian Ovaska Mikko Paltamaa Hannu-Pekka Rajaniemi Asiakas Inkeri Verkamo Johtoryhmä Juha Taina Sampo Yrjänäinen Kotisivu http://www.cs.helsinki.fi/group/oops Versiohistoria Versio Päiväys Tehdyt muutokset 1.0 1.9.2005 Dokumentti valmis 0.1 15.8.2005 Dokumenttirunko luotu

Sisältö 1 Johdanto 1 2 Yksikkötestaus 1 2.1 Testien listaus................................ 2 3 Integrointitestaus 3 4 Järjestelmätestaus 3 4.1 Testaus ja tulokset.............................. 3 5 Tunnetut virheet 5 5.1 Elementin koon muuttaminen ja yhteydet................. 5 5.2 Katkoviivayhteyden piirto.......................... 5 5.3 Murtoviivayhteyden muokkaus....................... 6 5.4 Luokka project.graphics.solidgraphics................... 6 5.5 Undo/redo.................................. 6 5.6 Yhteysviivan ja elementin leikkauspisteen laskeminen........... 7 6 Yhteenveto 7 i

1 Johdanto Oops on Helsingin yliopiston tietojenkäsittelytieteen laitoksella toteutettava ohjelmistotuotantoprojekti. Kaapo, eli Kaavioiden piirto-ohjelma on geneerinen, käyttäjän tarpeisiin mukautuva piirtotyökalu. Projektiin liittyvä materiaali on saatavissa ryhmän kotisivulta osoitteesta http://www.cs.helsinki.fi/group/oops Tämä dokumentti sisältää raportin ohjelman ensimmäisen julkaistun version testauksesta ja tunnetuista virheistä. 2 Yksikkötestaus Yksikkötestauksessa on käytetty apuna JUnit-ohjelmaa. Testauksen suunnittelusta poiketen kaikille luokille ei ole kirjoitettu testejä eivätkä kirjoittajat ole aina olleet eri henkilöitä kuin luokan koodaajaat. Useimmissa tapauksissa testit on jätetty kirjoittamatta, koska kyseinen luokka ei sovellu yksikkötestattavaksi kuten esimerkiksi käyttöliittymäluokat, grafiikkaluokat sekä kaavioiden ja elementtejen tyyppiluokat. Monet abstraktit luokat on myös jätetty testaamatta koska ne sisältävät vain hyvin triviaaleja ei-abstrakteja metodeita. Tapauksissa joissa abstrakti luokka implementoi testattavia metodeita on avuksi koodattu ei-abstrakti tynkäluokka (stub class). Tynkä perii abstraktin luokan ja toteuttaa triviaalisti sen abstraktit metodit. Abstraktin luokan ei-abstraktit metodit testataan tämän luokan ilmentymän avulla. Muita puutteita testauksen kattavuudessa ovat export-luokat sekä ConnectionWrapperluokka, joka on vain osittain testattu. Export-luokat ovat ulkopuolisia komponentteja eivätkä matalan prioriteetin vuoksi valmiiksi koodattuja. ConnectionWrapper luokkan oikea toiminta on selkeintä GUI:n välityksellä,jota on myös käytetty sen testaamiseen. Niinpä luokan testaus on ollut lähempänä järjestelmätestauksen menetelmää kuin yksikkötestausta. 1

2.1 Testien listaus Seuraavassa on listattu järjestelmän luokat sekä niiden testaustiedot. Classes Javadoc Tests Outcome Comment filemanager.componentnotsupportedexception yes - - Exception class filemanager.exportplugin yes - - Only abstract methods filemanager.filemanager yes yes ok - filemanager.objectserializer yes yes ok - filemanager.tostringexport - - - Dummy class filemanager.epsexport - - - Not finished gui.attributeview.attributeview yes - - GUI class gui.attributeview.attributeviewjlabel yes - - GUI class gui.diagramview.diagrampanel yes - - GUI class gui.diagramview.diagramview yes - - GUI class gui.diagramview.diagramviewjlabel yes - - GUI class gui.diagramview.hotspot yes - - GUI class gui.projectview.projectview yes - - GUI class gui.projectview.projectviewcellrenderer yes - - GUI class gui.projectview.projectviewjlabel yes - - GUI class gui.projectview.projectviewjtree yes - - GUI class gui.projectview.projectviewtreemodel yes - - GUI class gui.projectview.projectviewtreenode yes - - GUI class gui.kaappogui yes - - GUI class gui.toolpanel yes - - GUI class project.attribute yes yes ok - project.connection yes - - Mostly abstract methods project.connectionwrapper yes some ok - project.diagram yes yes ok Stub test project.diagramcomponent yes - - Mostly abstract methods project.diagramcomponentwrapper yes yes ok Stub test project.diagramwrapper yes yes ok - project.element yes - - Mostly abstract methods project.elementwrapper yes yes ok - project.project yes yes ok - project.projectcomponent yes yes ok Stub test project.graphics.attributepanel yes - - Stub test project.graphics.connectiongraphics yes - - GUI class project.graphics.dcgraphics yes yes ok Stub test project.graphics.directtextarea yes - - GUI class project.graphics.filledarrowhead yes - - GUI class project.graphics.genericattributepanel yes - - GUI class project.graphics.linearrowhead yes - - GUI class project.graphics.linehead yes - - Stub test project.graphics.solidgraphics yes - - GUI class projectmanager.command.abstractedit Yes - - Abstract class projectmanager.command.abstractundoableedit Yes - - Abstract class projectmanager.command.addconnectionedit Yes yes ok - projectmanager.command.addelementedit Yes yes ok - projectmanager.command.addtoselectionedit Yes yes ok - projectmanager.command.changediagramnameedit Yes yes ok - projectmanager.command.changeprojectnameedit Yes yes ok - projectmanager.command.changevisiblediagramedit Yes yes ok - projectmanager.command.edit Yes - - Interface class projectmanager.command.editfailedexception Yes - - Exception class projectmanager.command.modifydcomponentattribute Yes yes ok - projectmanager.command.moveconnectioneditpoint Yes yes ok - projectmanager.command.movedcomponentedit Yes yes ok - projectmanager.command.movediagramupedit Yes yes ok - projectmanager.command.movediagramdownedit Yes yes ok - projectmanager.command.newdiagramedit Yes yes ok - projectmanager.command.removedcomponentedit Yes yes ok - projectmanager.command.removediagramedit Yes yes ok - projectmanager.command.resizeelementedit Yes yes ok - projectmanager.command.removefromselectionedit Yes yes ok - projectmanager.command.selectionedit Yes yes ok - projectmanager.projectmanager yes yes ok - projectmanager.selection yes yes ok - types.diagramcomponents.actor - - - Type class types.diagramcomponents.actorgrpahics - - - Type class types.diagramcomponents.association - - - Type class types.diagramcomponents.associationgraphics - - - Type class types.diagramcomponents.dependency - - - Type class types.diagramcomponents.dependencygraphics - - - Type class types.diagramcomponents.generalization - - - Type class types.diagramcomponents.generalizationgraphics - - - Type class types.diagramcomponents.text - - - Type class types.diagramcomponents.textgraphics - - - Type class types.diagramcomponents.usecase - - - Type class types.diagramcomponents.usecasegraphics - - - Type class types.diagrams.dataflowchart - - - Type class types.diagrams.usecasediagram - - - Type class types.typemanager yes yes ok - Kaapo yes yes ok - Observable yes yes ok Stub test Observer yes - - Interface 2

3 Integrointitestaus Suunniteltua integrointitestausta ei viety läpi. Syynä tähän on toteutuksessa käytetty menetelmä, jossa ohjelman eri osia on evoluutiomallin mukaisesti rakennettu ja suunniteltu eteenpäin kokonaisuutena. Rajapintoja ei myöskään toteutettu yksi yhteen suunniteltujen kanssa. Ohjelman osat toimivat hyvin läheisessä yhteistyössä eivätkä ole helposti jaettavissa osajärjestelmiin. Ryhmän yhteinen päätös oli, ettei integrointitestaus ole mielekästä. Rajapintojen oikea toiminta varmennetaan osittain yksikkötesteissä, joissa niitä samoista syistä ei voida sivuttaa, sekä lopullisesti ohjelman järjestelmätesteissä. 4 Järjestelmätestaus Järjestelmätestauksessa ohjelman toimintaa testattiin suunnitteludokumentissa määriteltyjen laajennettujen käyttötapausten perusteella. Testauksessa huomioitiin ohjelman rajoitukset, joita syntyi suunnittelun ja toteutuksen välisistä eroista. Testit vietiin läpi niiltä osin kuin ohjelman toteutus sen salli. 4.1 Testaus ja tulokset Seuraavassa esitellään jokaisesta käyttötaupauksen testaus ja tulokset. LKT1 Kaavion luonti Kaavion luonnissa käyttäjä valitsee aluksi haluamansa kaaviotyypin ja sen jälkeen luo kaavion valitsemalla add -painikkeen. Järjestys eroaa suunnitellusta ja näin ollen testauksessa ei voitu toimia käyttötapauksessa kuvatulla tavalla. Käyttötapauksessa pitäisi testata myös mm. luokkakaaviolla, mutta ohjelman tämän hetkisessä versiossa ei ole toteutettuna luokkakaaviotyyppiä, joten sitä ei voida testata. Ohjelman toiminta oli moitteetonta huomioiden käyttötapauksen ja ohjelman toiminnan välisen eron. LKT2 Elementin lisääminen Elementin lisääminen tapahtuu käyttötapauksessa kuvatulla tavalla (kts. Suunnitteludokumentti). Ainoa poikkeus käyttötapauksen läpivientiin on se että piirtoalustalla ei ole maksimiarvoa vaan se kasvaa tarpeen mukaan. Eli jos elementti lisätään tämän hetkisen piirtoalustan oikeaan alakulmaan niin piirtoalusta kasvaa elementin tarvitsemalla tilalla. LKT3 Elementin poistaminen Ohjelman toiminta kaikissa muissa tilanteissa paitsi elementti useassa kaaviossa on suunnitteludokumentissa kuvatun päätöstaulun mukaista. Tilannetta elementti on useassa kaaviossa ei voida testata, koska ohjelma ei tällä hetkellä tue kyseistä toimintoa. LKT4 Elementin koon muuttaminen Koon muutos toimii odotetulla tavalla kaissa tilanteissa paitsi elementin koon muuttuessa maksimikoon yli. Tilannnetta ei voida testata koska ei ole käytettävissä elementtiä, jolla olisi maksimikoko ja sen kokoa voisi muuttaa. 3

LKT5 Elementin liikuttaminen Toimii odotetusti kaikissa tilanteissa. LKT6 Elementin attribuuttien arvojen muuttaminen Ohjelma toimii yhdellä elementillä oikein stringien tapauksessa, inttejä ei pääse testaamaan puuttuvien attribuuttien takia. Elementti ei voi esiintyä tällä hetkellä useissa kaavioissa, joten kyseistä tapausta ei päästä testaamaan. Monen elementin ollessa valittuna attribuutteja ei voi muokata. LKT7 Yhteyden lisääminen Ohjelma toimii kuvatulla tavalla kun molemmissa päissä on yhteys, alkupää on olemassa, välissä on elementti ja ei elementtejä. Ohjelma ei tue syntaksin tarkistusta, eikä yhteyksillä ole sääntöjä. Mahdoton toteuttaa on myös toiminto, jossa alkupäätä ei määritellä mutta loppupää annetaan, koska ohjelma piirtää yhteyden heti jos ensimmäinen klikkaus ei osu elementtiin. Toisaalta toiminto voidaan suorittaa kun ensin lisätään yhteys, joka ei ole kiinni missään ja sen loppupää vedetään haluttuun elementtiin. LKT8 Yhteyden poistaminen Kaikki käyttötapaukset voidaan suorittaa onnistuneesti. LKT9 Yhteyden uudelleen asemointi Kaikki käyttötapaukset voidaan suorittaa onnistuneesti. LKT10 Yhteyden attribuuttien arvojen muuttaminen String tyyppisillä arvoilla kaikki ok. Huomioitavaa on että yhteys ei voi esiintyä useissa kaavioissa eikä int arvoisia attribuutteja ole. LKT11 Murtoviivan kulkureitin muuttaminen Käyttötapaukset toimivat oikein ohjelman sallimissa rajoissa, eli yhdellä muokkauspisteellä. Ohjelmassa ei ole käytettävissä murtoviivaa, jossa olisi kaksi muokkauspistettä. Murtoviivan toimintaan liittyy ratkaisemattomia ongelmia (kts. 5 ja Toteutusdokumentti). LKT12 Tekstin lisääminen kaavioon Kaikissa tuetuissa kaavioissa tekstin lisääminen onnistuu ilman ongelmia. Ongelmia aiheuttaa kentän tyhjänä olo, tällöin jos valinta on poistunut alueelta, niin tekstin kirjoituskohdan uudelleen valinta on vaikeaa. LKT13 Ryhmän valitseminen Kaikki toimivat oikein, paitsi että yhteysryhmiä voi liikutella ja valinta tapahtuu ctrl pohjassa. Toisaalta yhteysryhmien liikuttelussa voi tulla erikoisia tilanteita jos yhteys on tavallaan kiinni toisessa yhtydessä. LKT14 Alueen rajaaminen Valinta toimii kaikissa tilanteissa oikein. LKT15 Undo Toimii ainakin perustilanteissa oikein 4

LKT16 Redo Toimii ainakin perustilanteissa oikein LKT17 Tallennus vanhaan tiedostoon Toimii kaikissa tilanteissa. LKT18 Tallennus uuteen tiedostoon Toimii kaikissa tilanteissa. LKT19 Tiedoston avaus Ohjelma toimii odotetusti kaikissa tilanteissa. Avaamisessa on huomioitava ettei ohjelmaan voi välttämättä avata aiemmin tallennettua kaaviota, jos tallennetun kaavion ja ohjelman versio eivät ole yhteensopivat. 5 Tunnetut virheet Tässä luvussa on lueteltu ohjelmiston tunnetut virheet. Joidenkin virheiden korjaaminen onnistuu parhaiten muuttamalla arkkitehtuuria tai rajapintoja; näiden virheiden kohdalla on korjausehdotus. 5.1 Elementin koon muuttaminen ja yhteydet Kun elementin (esim. Use Case) koko muuttuu, siinä olevien yhteyksien päätepisteet eivät pysy synkroonissa (eivät liiku). Ongelma liittyy siihen, että yhteyksien päätepisteet ovat absoluuttisia pikselikoordinaatteja, ja näiden muuttaminen ei ole suoraviivaista kun elementin koko ja muoto muuttuvat. Hyvä ratkaisu olisi ilmaista päätepisteet jonkinlaisina suhteellisina koordinaatteina; tällöin yhteyspisteen päivittäminen olisi helpompaa. Esim. ympyrä-elementillä suhteellinen päätepiste [0..1] voisi olla tietty paikka ympyrän kehällä (0=suoraan ylös, 0.5=suoraan alas, jne). Suhteellisista päätepisteistä olisi myös se hyöty, että esim. laatikkomallisen elementin sivun keskelle lisätty yhteys pysyy sivun keskellä (yhtä kaukana kulmista), vaikka laatikon koko muuttuu. 5.2 Katkoviivayhteyden piirto Jos viivan tyyppi on katkoviiva (DASHED), LineArrowHead-tyypin nuolet piirtyvät normaalilla viivalla. Use Case -kaavion yhteys Dependency on tällainen yhteystyyppi. Nuolenpään yhteysviivan mukainen osa tulisi piirtää katkoviivana. 5

5.3 Murtoviivayhteyden muokkaus Kun murtoviivayhteyden polun segmenttiä muokataan tarkistaa ohjelma segmentin suunnan vertailemalla sen alku- ja loppupistettä. Mikäli nämä ovat samat tutkii ohjelma viereisen segmentin pisteitä. Koodi on tältä osin puutteellinen sillä jos viereisen segmentin alku- ja loppupiste ovat samat niin ohjelma ei jatka tarkastusta seuraavaan segementtiin. Lopputuloksena on että jos kaksi viereistä segementtiä ovat molemmat nollan pituisia tulkitsee ohjelma niiden sunnan väärin puolet ajasta. Tilanne olisi mahdollista korjata muokkaamalla olemassa olevaa algoritmia niin että se tarkistaa niin monta yhteyden segmenttiä kuin on tarpeen. Toinen mahdollisuus olisi säilyttää ConnectionWrapper luokassa tieto yhteyden ensimmäisen segmentin suunnasta josta olisi helppo selvittää halutun segmentin suunta sen indexin perusteella. 5.4 Luokka project.graphics.solidgraphics Kun SolidGraphics-luokkaa käyttävän elementin (esim. Use Case) kokoa yrittää pienentää vasemmanpuoleisesta tai ylemmästä hot-spotista, mutta elementtiä ei voi pienentää pienemmäksi kuin se jo on, elementti liikkuu joskus oikealle tai alas. Liikkuminen ei tapahdu aina vaan tapahtuu hiirtä nopeasti liikuttamalla. Bugi liittyy siihen, että SolidGraphics määrää updatedcgraphics-metodinsa sisällä elementin (minimi)koon eivätkä ulkopuoliset (esim. GUI) pääse siihen varsinaisesti vaikuttamaan. Paras tapa korjata bugi on tehdä rajapinta, joka pyytää elementin pienimmän mahdollisen koon (vrt. Swingin minimumsize). Tällöin ulkopuoliset tietävät, mihin kokoon elementin saa pienentää, eivätkä yritä pienentää liian pieneksi. Rajapinta voi tulla esim. DiagramComponent-luokalle. Piirtämiseen liittyvä virhe: kun elementin (esim. Use Case) tekstikenttään lisää tekstiä piirtoalustalla ja elementin koko kasvaa, siniset hot-spot-neliöt piirtyvät väärin (vanhat jäävät piirtoalustalle). Näkymä korjautuu kun elementiltä katoaa fokus. Ellipsiin ja pyöristettyyn suorakaiteeseen liittyvä virhe: teksti voi joskus piirtyä elementin reunojen yli. SolidGraphics-luokassa olisi tarkoitus laskea matemaattisesti sellainen elementin koko, että teksti mahtuu kokonaan reunojen sisään (halutulla marginaalilla). Em. muodoille ei (tietoisesti) ole vielä tehty matemaattisesti tarkkaa tarkistusta. 5.5 Undo/redo Undo-redu-ketju ei aina toimi täysin oikein. Eräs virhe liittyy kaavion poistamiseen: 1. lisää Use Case -kaavio 2. lisää Data Flow -kaavio 3. poista Data Flow -kaavio klikkaamalla oikealla hiiren napilla kyseisen kaavion päällä 6

4. valitse Undo 5. valitse Redo Data Flow -kaavio ei tule entiselle paikalleen projektipuussa (viimeiseksi), vaan ensimmäiseksi. 5.6 Yhteysviivan ja elementin leikkauspisteen laskeminen Kun kahden elementin (esim. Use Case) välille vedetään yhteys, ohjelma laskee yhteyspisteet siten, että ne ovat molempien elementtien reunalla. Joskus päätepiste ei jää loppuelementin reunalle, vaan menee virheellisesti reunan läpi elementin sisään. Virhe on hyvin harvinainen ja vaikea toistaa. 6 Yhteenveto Järjestelmätestejen onnistunut läpivienti osoittaa ohjelman toimivan sille esitettyjen vaatimusten mukaisesti. Integrointitestejen puuttuminen ei tarkoita etteikö rajapintoja olisi tullut testattua. Ohjelman rakenteen vuoksi rajapintojen toimivuutta kokeiltiin jo yksikkötestauksessa. Monet yksikkötestauksessa löydetyt virheet ja ongelmat sijaitsivat jossain muualla kuin testattavassa luokassa, koska testit kirjoitettiin jokseenkin satunnaisessa järjestyksessä riippuvuuksien monimutkaisuuden suhteen. Yksikkötestejen kattavuus selittänee osittain miksi järjestelmätestaus ei löytänyt yhtään uutta virhettä. Yleisesti testeissä löydettiin enemmän puutteita kuin varsinaisia virheitä. Suuri osa virheistä ja omituisesta käyttäytymisestä löydettiin koodaajien omatoimisella ohjelman kokeilulla, siis beta-testauksella. Tämä lienee jokseenkin normaalia monimutkaisia käyttöliittymiä sisältävissä ohjelmissa. Koodaajien palaute testeistä oli se, että niiden olemassaolosta oli hyötyä. Tieto siitä, että oma koodi testataan toisten toimesta motivoi tarkempaan työhön. Läpi menneet testit toivat myös itsevarmuutta oman koodin pätevyydestä, varsinkin jos luokkaan joutui muista syistä koskemaan vielä testien kirjoittamisen jälkeen. 7