LAATUDOKUMENTTI

Samankaltaiset tiedostot
T SEPA - STAATTISET MENETELMÄT Tuomas Tolvanen, 55382U Timo Töyry, 58578B

LAATURAPORTTI Iteraatio 1

Ohjelmistojen mallintaminen. Luento 11, 7.12.

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

Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy

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

58160 Ohjelmoinnin harjoitustyö

Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy

VAATIMUSMÄÄRITTELY

Laadunvarmistusdokumentti

L models. Testisuunnitelma. Ryhmä Rajoitteiset

Convergence of messaging

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

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

Testaussuunnitelma. Dokumentti: Testaussuunnitelma.doc Päiväys: Projekti: AgileElephant Versio: V0.4

T Testiraportti - integraatiotestaus

Hirviö Laadunvarmistussuunnitelma

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

Laaturaportti [iteraatio 2] Ryhmä 14

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

SEPA diary. Dokumentti: SEPA_diary_PK_RI.doc Päiväys: Projekti : AgileElephant Versio: V0.2

Ohjelmiston testaus ja laatu. Testaustasot

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

UCOT-Sovellusprojekti. Testausraportti

dokumentin aihe Dokumentti: Testausraportti_I1.doc Päiväys: Projekti : AgileElephant

VERSIONHALLINTA. PARIOHJELMOINTI Lari Ahti, 62634M Antti Kauppinen, 58390D

Hirviö Laadunvarmistussuunnitelma

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

Santeri Saarinen Korjattu testaustasoja ja tehty tarkennuksia I1-testaukseen

Testaussuunnitelma. Dokumentti: Testaussuunnitelma.doc Päiväys: Projekti: AgileElephant

Ohjelmistotuotantoprojekti

Good Minton QA Raportti Iteraatio 1 Sulkapalloliiton Kilpailujärjestelmä

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

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

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

Tutkittua tietoa. Tutkittua tietoa 1

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Tapahtuipa Testaajalle...

T Testiraportti - järjestelmätestaus

VAATIMUSMÄÄRITTELY

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

Ohjelmistotestaus -09

Lohtu-projekti. Testaussuunnitelma

Mihin kaikkeen voit törmätä testauspäällikön saappaissa?

Automaattinen yksikkötestaus

Kuopio Testausraportti Kalenterimoduulin integraatio

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

Testaaminen ohjelmiston kehitysprosessin aikana

Testaussuunnitelma. Pizzeria - Pitseria HAAGA-HELIA ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma. WebPizza

T Testiraportti - integraatiotestaus

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 2: Vaiheet 3 & 4. Antti Jääskeläinen Matti Vuori

Test-Driven Development

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

Kuopio Testausraportti Asiakkaat-osakokonaisuus

Onnistunut SAP-projekti laadunvarmistuksen keinoin

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

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0

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

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 2: Vaiheet 3 & 4. Antti Jääskeläinen Matti Vuori

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

Työkalut ohjelmistokehityksen tukena

Vakuutusyhtiöiden testausinfo

TDD Käytännössä Todellinen työkalu vai lehmipoikien laukkaa? Harri Kulmala Solita Oy

Test-Driven Development

SEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus

Testiraportti 2. iteraatiosta

T Projektikatselmus

Mihin kaikkeen voit törmätä testauspäällikön saappaissa?

Testaus-tietoisku: Tärkeimpiä asioita testauksesta projektityökurssilaisille

SEPA päiväkirja. Aihe: Staattiset menetelmät Tekijät: Mikko Halttunen 58198B, Mikko Närjänen 58122B Ryhmä: Neptune T Ohjelmistoprojekti I

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

T Ohjelmistokehitysprojekti I - Iteraatiosuunnitelma (I2)

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

Harjoitustyön testaus. Juha Taina

Testaussuunnitelma Versio Päiväys Tekijä Kuvaus

COTOOL dokumentaatio Testausdokumentit

statbeatmobile PROJECT REVIEW iteration 1

I2 -Iteraatiosuunnitelma. CoSCA-simulaattorin jatkokehitysprojekti. TeamDC

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

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

I1 Iteraatiosuunnitelma. CoSCA-simulaattorin jatkokehitysprojekti. TeamDC

Kontrollipolkujen määrä

SEPA: Staattiset menetelmät Timo Sallinen, 51134F & Risto Kunnas, 50498T. Sisällysluettelo. 1 Johdanto. 2 SEPA harjoittelu käytännössä.

Ohjelmiston testaussuunnitelma

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

Testiautomaatio tietovarastossa. Automaattisen regressiotestauksen periaate ja hyödyt

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

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

Testilähtöinen ohjelmistokehitys. Testilähtöinen ohjelmistokehitys. TDD Testilähtöinen ohjelmistokehitys. Testi! Testi

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

T SEPA päiväkirja

T Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

SEPA päiväkirja. Dokumentti: SEPA_diary_EM_PV.doc Päiväys: Projekti : AgileElephant Versio: V0.9

Ohjelmistojen suunnittelu

Ohjelmiston toteutussuunnitelma

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Ohjelmiston testaus ja laatu. Testausmenetelmiä

A4.1 Projektityö, 5 ov.

Transkriptio:

LAATUDOKUMENTTI

LAATUDOKUMENTTI 2 (15) VERSION HALLINTA Versio Päivä Tekijä Kuvaus 0.1 11.10.2006 Kaarlo Lahtela Ensimmäinen versio 0.2 17.10.2006 Kaarlo Lahtela Lauri Kiiski 0.3 24.10.2006 Kaarlo Lahtela runko 0.4 30.10.2006 Kaarlo Lahtela Projektitason suunnitelmaa 0.5 31.10.2006 Aleksi Airola Dokumentin katselmointi 0.6 2.11.2006 Kaarlo Lahtela Dokumentointikäytäntöjä. 0.7 2.11.2006 Lauri Kiiski Iteraatio 1 tason suunnitelmia. 0.8 2.11.2006 Lauri Kiiski SEPA:ien tekstit lisätty. 0.9 Lauri Kiiski I1 Aikataulu ja henkilöresurssit 0.10 Aleksi Airola Katselmointi 1.0; I1 palautus Kaarlo Lahtela Viimeistely

LAATUDOKUMENTTI 3 (15) SISÄLLYS 1. JOHDANTO...4 2. PROJEKTI TASON SUUNNITELMA...5 2.1. Laatutavoitteet...5 2.1.1. Laatupaletti...5 2.2. Toimintatavat...6 2.2.1. Testaamisen laajuus...6 2.2.2. Testitasot...6 2.2.3. Testi tyypit...6 2.2.4. Laadunvarmistusmenetelmät...7 2.2.5. Laatuparametrit...7 2.2.6. Laatumittarit...8 2.2.7. Refaktorointi...8 2.2.8. Testityngät...8 2.3. Laadunvarmistuskäytännöt...8 2.3.1. Jatkuva integrointi...8 2.3.2. Pariohjelmointi...8 2.3.3. Staattiset menetelmät...9 2.4. Henkilövastuut...9 2.5. Testitapauksien dokumentointi...9 2.6. Testien kirjaaminen...10 2.7. Virheiden seuranta ja reagointi...10 2.8. Laitteisto- ja ohjelmistoresurssit...11 2.9. Standardit...11 2.10. Tuotokset...11 2.11. Testien keskeytys- ja jatkamisehdot...12 2.12. Testauksen lopetuskriteerit...12 3. ITERAATIOTASON SUUNNITELMAT...13 3.1. Ensimmäinen iteraatio...13 3.1.1. Testattavat toiminnot...13 3.1.2. Ei-testattavat toiminnot...13 3.1.3. Laadunvarmistuskäytäntöjen käyttäminen...13 3.1.4. Testi ympäristö ja testidata...14 3.1.5. Aikataulu ja henkilöresurssit...14 3.1.6. Testikierrokset...15 3.2. Toinen iteraatio...15 3.2.1. Testattavat toiminnot...15 3.2.2. Ei-testattavat toiminnot...15 3.2.3. Laadunvarmistuskäytäntöjen käyttäminen...15 3.2.4. Laitteisto- ja ohjelmistoresurssit...15

LAATUDOKUMENTTI 4 (15) 1. JOHDANTO Tässä dokumentissa kuvataan projektin laatuun liittyviä käytäntöjä Dentegovälityspalvelimen toteutuksessa. Järjestelmän toteuttaa Dentego-ryhmä, Teknillisen korkeakoulun T-76.4115-kurssilla vuosina 2006-2007. Laatudokumenttia pidetään yllä kurssin aikana, siten miten se vaatii, aina kurssin loppuun asti. Projektin tavoitteet on kerrottu projektisuunnitelmassa 1 ja vaatimukset on kirjattu vaatimusmäärittelyssä 2. Alussa käsittelemme projektintason asioita ja lopussa on iteraatiotason asioita. 1 Projektisuunnitelma: https://svn.dentego.com/dokumentit/projektisuunnitelma.pdf 2 Vaatimusmäärittely: https://svn.dentego.com/dokumentit/vaatimusmaarittely.pdf

LAATUDOKUMENTTI 5 (15) 2. PROJEKTI TASON SUUNNITELMA 2.1. Laatutavoitteet Tärkeimmät asiakkaan laatutavoitteet kehitettävästä järjestelmästä ovat: 2.1.1. Laatupaletti Menetelmät Tavoitteet Järjestelmä on tietoturvallinen Turvallisuus otetaan huomioon jo suunnittelussa. Käytetään valmiita tekniikoita, jotka ovat olleet yleisesti käytössä ja testattuna. Tiedon pitää olla siis turvallista, eheää ja sen pitää olla saatavissa. Järjestelmä on vikasietoinen Järjestelmän on pysyttävä toiminnassa pitkiä aikoja, eikä sitä saa lamauttaa virheellisillä viesteillä. Järjestelmän on oltava luotettava, eikä se saa menettää tietoa. Järjestelmä on jatkokehitettävä Jatkokehitettävyys on yksi tärkeistä laatutavoitteista. Tarkoituksena on lisätä ominaisuuksia järjestelmään jatkossa, jotta yhteistyökumppanien kanssa siirrettävät tiedot voidaan siirtää tietoverkkoon. Projektissa pyritään Good Enough Quality 3 :yn. Tällä tarkoitetaan, että projektista on riittävästi hyötyä, eikä siinä ole kriittisiä ongelmia. Tehtävän hyöty pitää olla suurempi, kuin sen tuottama vaiva. Ja kehitys lopetetaan, kun kaikki asiat huomioon ottaen jatkokehitys olisi enemmän haitaksi kuin hyödyksi. Taulu 1 Laatupaletti Järjestelmä on tietoturvallinen Järjestelmä on vikasietoinen Järjestelmä on jatkokehitettävä Riskit Vähäinen Java kokemus Käytössä on uusia tekniikoita JUnit testit Proto Katselmointi Rasitustesti Staattiset analyysit EP & BVA (ks. 2.2.4) Pariohjelmointi Jatkuva integrointi Pitkä testiajo Refactorointi 3 Good Enough Quality, Defined by James Bach; IEEE Computer, 1997, vol. 30, no. 8, pp. 96-98

LAATUDOKUMENTTI 6 (15) 2.2. Toimintatavat Seuraavassa on kuvattu laadunvarmistamisessa käytettyjä toimintatapoja, joilla varmistetaan tuotteen laatu. 2.2.1. Testaamisen laajuus Kaikki tuotettu koodi testataan. Koodilla ja testeillä on prioriteettitasoja, joilla saadaan painotettua tärkeämpien elementtien laatua. 2.2.2. Testitasot 2.2.3. Testi tyypit Testausta tehdään neljällä eri tasolla. Kehittäjät käyttävät JUnit testejä yksikkötestaukseen. Tällä saavutetaan aikainen bugien havainnointi, joten ongelmat on helppo korjata jo aikaisessa vaiheessa kehitystä. Yksikkötestit ovat tehokkaita, toistettavia, ylläpidettäviä ja kustannustehokkaita. Yksikkötestiä tehdään suurimmalle osalle koodia. Osassa koodia käytetään myös laadunvarmistusmenetelmänä: Test Driven Development (TTD), jossa yksikkötestit tehdään ennen varsinaisen koodin tekemistä. Integraatiotestausta tehdään kehittäjien toimesta. Tällä saavutetaan, että komponentit toimivat keskenään. Integraatiotestauksella saadaan varmistettua, että arkkitehtuuri on toteutettu oikein kaikissa komponenteissa. Systeemitestaus tehdään testaustiimin puolesta. Testauksella saavutetaan, että järjestelmä vastaa toiminnallisia vaatimuksia. Hyväksymistestauksella testataan, että järjestelmä toteuttaa asiakkaan vaatimukset. Kriteerit määritellään asiakkaan kanssa myöhemmin ensimmäisessä iteraatiossa. Kehityksessä käytämme useaa testityyppiä, joilla varmistetaan tuotteen laatu usealla eri osa-alueella. Funktionaalinen testaus, jolla varmistetaan, että tuote vastaa vaatimusmäärittelyn mukaisia toiminnallisia ominaisuuksia. Funktionaalinen testaus aloitetaan jo ohjelmoinnin alkuvaiheista asti. Tehokkuustestaus toteutetaan kokonaisuudessaan toisessa iteraatiossa. Tehokkuustesteissä testataan, että välityspalvelimemme pystyy käsittelemään vaatimuksien mukaisen määrän tietoliikennettä. Rasitustestillä testataan, miten järjestelmä käyttäytyy suurissa tietoliikenteen määrissä. Pitkät testiajot testaavat, että järjestelmä on vikasietoinen. Järjestelmää ei päivitetä, ja sitä pidetään pitkä aika yllä rasituksessa, ja samalla seurataan, ettei synny virheitä. Yhteensopivuustestaus jää vähäiseksi. Ohjelmisto testataan parin eri tietokannan kanssa. Itse webservices alustaa ei testata eri ympäristöissä, vaan alusta toimii kolmansien osapuolien määrittelemien laitteistojen päällä, johon emme vaikuta.

LAATUDOKUMENTTI 7 (15) Heuristisia arvioita tehdään minimaalisesti ylläpitotyökaluun. Tällä selvitetään pahimpia käytettävyysongelmia. Painotus on kuitenkin välityspalvelimen toiminnassa. Katselmointi on menetelmä, jossa tutkitaan lähdekoodia. Tällä parannetaan tuotteen laatua ja varsinkin kokemattomimpien Java-ohjelmoijien koodista saadaan perus suunnitteluvirheitä karsittua. Näin uudet ohjelmoijat myös oppivat hyviä ohjelmointitekniikoita. Näin myös ohjelmiston tehokkuus parantuu. Lähdekoodin analysoimisella staattisesti varmistetaan, että koodi on selkeää luettavaa, eikä koodissa ole liian monimutkaisia toteutuksia. Vertaistestaus suoritetaan kurssin ryhmä 8 Noin seitsemän veljestä kanssa siten, että suoritamme testit toistemme järjestelmiin. Vertaistestaus suoritetaan 17. 21.2.2007. 2.2.4. Laadunvarmistusmenetelmät Seuraavia laadunvarmistusmenetelmiä käytetään projektissa koko sen kehityselinkaaren aikana: Equivalence Partition (EP). Tällä jaetaan syötteet ja tulostukset alueisiin, jotka ovat samoja. Oletus on, jos jokin alueella oleva arvo toimii, toimii koko alue oikein. Boundary Value Analysis (BVA). Tällä tarkastetaan syötteitä ja tulosteita lähellä raja-arvoa, jotka ovat yleisimpiä virheitä. Test Driven Development (TDD). Tässä on tarkoituksena tehdä yksikkötestit ennen varsinaista koodia. Näin saadaan suunniteltua, mitä koodin pitäisi tehdä, ja toteutuksesta pitäisi tulla parempi, koska se on mietitty kahteen kertaan. Tätä menetelmää käytetään alussa kahden kehittäjän kanssa, ja analysoidaan miten paljon projektissa kannattaa panostaa tähän. Exploratory Testing (ET). Tutkiva testaus on menetelmä, jossa testataan ilman ennalta tehtyjä tarkkoja suunnitelmia. Tätä käytetään iteraatioiden loppuvaiheissa. Tätä käytetään myös pääsääntöisesti käyttöliittymän testauksessa. Pairwise Testing (PT). Tällä saadaan rajattua tutkittavan syötteen ja tulosteen määrää heikentämättä testauksen laajuutta haitallisesti. Soveltuu hyvin EP:n ja BVA:n kanssa yhdessä käytettäväksi. Test Case Based Testing (TCB). Testitapauksiin perustuva testaus antaa hyvän peruspohjan järjestelmään kriittisimpien vaatimuksien testaamiseen. Tällä saavutetaan kaikkien tärkeimpien vaiheiden läpikäynti ja testaus aina. Tätä testaus tyyppiä tukee hyvin tutkiva testaus. 2.2.5. Laatuparametrit ISO 9126 määrittelee laatuparametreiksi toiminnallisuuden, luotettavuuden, käytettävyyden, tehokkuuden, ylläpidettävyyden ja siirrettävyyden. Näistä oleellisimpia projektissamme ovat toiminnallisuus, luotettavuus ja ylläpidettävyys. Järjestelmämme saatavuudella ja oikealla ja luotettavalla

LAATUDOKUMENTTI 8 (15) toiminnalla on kovat vaatimukset. Vaatimukset selviävät vaatimusmäärittelyssä. 2.2.6. Laatumittarit Projektissa laadun tavoitteena on suorittaa mahdollisimman paljon testeistä hyväksytysti. Vähintään kriittiset ja suuren prioriteetin testitapaukset on mentävä läpi. Pienemmän prioriteetin testitapauksista on suoritettava hyväksytysti vähintään 80%. Ohjelmistolle tehtävistä JUnit yksikkötesteistä pitää suorittaa hyväksytysti 98%. 2.2.7. Refaktorointi Koodin refaktoroinnilla varmistetaan koodin laadukkuus, mikä mm. helpottaa ylläpidettävyyttä. Jokainen kehittäjä käyttää viikoittain koodinsa refaktorointiin omatoimisesti noin tunnin. Lisäksi projektissa käytettävien staattisten menetelmien avulla saadaan selville ongelmakohtia, joissa tarvitaan refaktorointia. 2.2.8. Testityngät Ohjelmistossamme on useita rajapintoja. Osa rajapinnoista on ohjelmistomme adaptereiden välisiä ja osa tarjoaa muille järjestelmille rajapinnan viestintään ohjelmistomme kanssa. Koska muut järjestelmät eivät ole meillä testauksessa käytettävissä, teemme niiden viestintää simuloivat stubit eli tyngät. Käytämme tynkiä samoin myös ohjelmistomme komponenttien välisillä rajapinnoilla, jotta kehitystyö ei riipu liikaa muiden komponenttien kehitystahdista. Tynkiä voidaan komentaa simuloimaan ja testaamaan normaalin toiminnan lisäksi myös erilaisia poikkeavia tilanteita. Tynkien avulla voimme suorittaa automatisoidusti etukäteen suunniteltuja testejä. Käytännössä tyngät toteutetaan junitin yksikkötesteillä. Testeissä tyngät lähettävät testattavalle komponentille erilaisia ML-muotoisia viestejä. 2.3. Laadunvarmistuskäytännöt Käytämme laadunvarmistuksessa erityisesti seuraavia käytäntöjä. Näistä käytännöistä tehdään lisäksi SEPA-päiväkirjat ennen käytäntöjen käyttöönottoa. 2.3.1. Jatkuva integrointi Käytämme projektissa jatkuvaa integrointia. Jatkuvalla integroinnilla tarkoitetaan projektin kokoonpanojen jatkuvaa ja automaattista rakentamista, testaamista ja tulosten raportointia. Tavoitteena jatkuvan integroinnin käytössä on varmistaa ohjelman toimiminen kokonaisuutena ja edesauttaa virheiden havaitsemista. Automaattisen raportoinnin avulla pyritään lisäämään näkyvyyttä ohjelmistokokonaisuuden laatuun ja tilaan. 2.3.2. Pariohjelmointi Projektissa käytetään pariohjelmointia kehitysmenetelmänä, millä pyritään parantamaan tuotettavan koodin tasoa. Pariohjelmointi myös edistää hajautetussa projektissa kommunikointia ja nopeuttaa havaittuihin ongelmiin

LAATUDOKUMENTTI 9 (15) reagointia. Pariohjelmoinnin vaikutusta koodin laatuun pyritään arvioimaan, sekä staattisten menetelmien avulla että kehittäjien arvioiden perusteella. 2.3.3. Staattiset menetelmät Käytämme projektissa staattisia menetelmiä ohjelmakoodin laadunvarmistukseen. Menetelmät jakautuvat ohjelmakoodin automatisoituun analysointiin ja koodikatselmointikäytäntöihin. Automaattisessa analysoinnissa käytetään Javalle suunniteltuja analysointityökaluja, jotka analysoivat ohjelmakoodissa olevia ohjelmointivirheitä ja ohjelman kompleksisuutta. Työkalujen avulla saatujen tulosten perusteella tehdään koodiin tarvittaessa muutoksia. Analysointi pyritään integroimaan CruiseControl -järjestelmään, jolloin se voidaan suorittaa yksikkötestien yhteydessä säännöllisesti automatisoituna. Katselmointikäytäntöihin kuuluu koodikatselmus, joka järjestetään ohjelman logiikan kannalta tärkeimmille komponenteille, kuten sovellusadapterin ja tietoliikenneadapterin keskeisimmille osille. Katselmointien tavoitteena on löytää komponenttien toteutuksesta mahdollisia ongelmia, jotka eivät ole tulleet ilmi muilla laadunvarmistusmenetelmillä. Katselmointi toteutetaan formaalina koodikatselmointina, jossa katselmointiin osallistuvat henkilöt tutustuvat katselmuksen kohteena olevaan koodiin ennen katselmointia. Katselmointitilaisuudessa katselmoinnin tulokset käydään läpi luokka ja metodi kerrallaan ja päätetään vaativatko löytyneet ongelmat jatkotoimenpiteitä. Katselmoinnin tulokset kirjataan ylös ja niiden perusteella tutkitaan SEPA:ssa katselmointikäytännön tehokkuutta. 2.4. Henkilövastuut Laadunvarmistuksen vastuut on jaettu eri henkilöille alla olevan taulukon mukaisesti. Taulu 2 Henkilövastuut Henkilö Tehtävä Vastuualue Aleksi Airola Katselmoija Projektipäällikkö, dokumenttien katselmointi Antti Kauppinen Testaaja Testidata, pariohjelmointi Kaarlo Lahtela Laatupäällikkö Dokumentit, laadunvalvonta Lari Ahti Testaaja Testidata, pariohjelmointi Lauri Kiiski Laatuassistentti Ohjeistus, testiloki, testien automatisointi Olli Vanhapiha Testaaja Testien automatisointi Timo Töyry Testaaja Staattiset menetelmät Tuomas Tolvanen Katselmoija Staattiset menetelmät 2.5. Testitapauksien dokumentointi JUnit testit dokumentoidaan JavaDoceilla. Niitä ei dokumentoida millään muulla tavalla. Testitapaukset listataan taulukkoon. Testitapaukset sisältävät seuraavat asiat: Testitapaus ID yksilöi testitapauksen. Nimi kertoo mitä testitapaus käsittelee.

LAATUDOKUMENTTI 10 (15) Prioriteetti kertoo miten tärkeä testitapaus on. Tämän perusteella päätetään miten paljon aikaa tähän käytetään. Eri tasot ovat pakollinen, korkea ja matala. Kuvaus kertoo tarkemmin mitä testitapauksessa tehdään. Oletettu tulos kertoo miten testitapauksen pitäisi käyttäytyä. Syöte käytetyt parametrit. Tuloste mitä saadaan ulos. Vaatimusmäärittely mihin vaatimuksiin testitapaus viittaa. Taulu 3 Testitapauksien dokumenttipohja Testitapaus ID Nimi Prioriteetti Kuvaus Oletettu tulos Syöte Tuloste Vaatimusmäärittely Kaikki pakollisen ja korkean tason prioriteetilla olevat testitapaukset suoritetaan aina. Seuraavaksi pyritään suorittamaan matalan tason testitapauksia vähintään kerran. 2.6. Testien kirjaaminen Testien tekemisen jälkeen, testeistä tehdään myös testilokit. Testilokissa kuvataan testien onnistuminen. Loki on vasemmalta puoleltaan samanlainen kuin testitapauksien dokumentoinnin vasen puoli testitapauksen ID, nimi ja prioriteetti. Onnistuneet testitapaukset merkitään vihreällä ja epäonnistuneet merkitään punaisella. Kun testejä tehdään useaan kertaan, niin tuloksia kerätään aina oikealle puolelle lisää. Joka kerrasta kerrotaan aina minä päivänä se on tehty ja mitä build-versiota on testattu. Taulu 4 Testilokin dokumenttipohja 10.12.2006 Build 867 14.1.2007 Build 1283 Testitapaus ID Nimi Prioriteetti Tulos Kommentit Tulos Kommentit 1 FAIL PASS 2 2.7. Virheiden seuranta ja reagointi Virheiden seurantaan käytetään projektiryhmän palvelimella JIRAjärjestelmää. Virheet täytyy kirjata järjestelmään, jos Virhettä ei korjata heti Virhe löytyy järjestelmä- tai hyväksymistestauksessa Vertaisryhmä tai asiakas löytää sen Virhettä ei kirjata järjestelmään, jos Virhe havaitaan toteutuksen yhteydessä ja se korjataan heti Virhettä raportoitaessa täytyy mahdollisimman hyvin kuvata virhe ja ympäristö, jossa virhe ilmenee. Lisäksi täytyy kuvata virheen

LAATUDOKUMENTTI 11 (15) ilmentymistiheys ja miten sen pystyy tuottamaan uudestaan, sekä työmääräarvion. Laatupäällikkö antaa virheelle vakavuusluokituksen viisiportaisella asteikolla: 1. Estävä virhe (Blocker) Estää ohjelman käytön. Kehitystyö on keskeytettävä komponentissa ohjelmiston korjaamisen ajaksi. 2. Kriittinen (Critical) Vaikeuttaa vakavasti ohjelman käyttöä. Kehitystyötä voidaan jatkaa, mutta virheestä vastuullinen ei jatka kehitystyötä ennen kuin virhe on korjattu. 3. Korkea (Major) Vaikeuttaa ohjelman käyttöä, mutta ohjelman saa toimimaan jollakin muulla tavalla. Virhe tulee korjata ennen iteraatioiden loppua. 4. Pieni (Minor) Häiritsee käyttöä. Virheen pyritään korjaamaan iteraatiossa, jos ei ole suurempia ongelmia. 5. Triviaali (Trivial) Virhe on kosmeettinen, eikä vaikeuta ohjelmiston käyttöä. Korjataan, jos aikaa riittää. Virheiden seurannasta on vastuussa QA-ryhmä (Kaarlo Lahtela ja Lauri Kiiski). QA-ryhmä asettaa kullekin virheelle vastuullisen, ellei raportoija ole ottanut sitä omalle vastuulleen. Lisäksi QA-ryhmä seuraa virheiden tilaa ja tarvittaessa korjaa myös työmäärä arvioita. Kaikille ryhmän jäsenille luodaan tunnukset JIRA:an, kuten myös asiakkaalle, mentorille ja vertaistestaajille. 2.8. Laitteisto- ja ohjelmistoresurssit Kehittäjät käyttävät omilla työasemillaan testauksessa ja kehityksessä Eclipse 3.2:ta. Eclipse 3.2:ssa on kaikilla kehittäjillä käytössä yksikkötestausta varten junit 3.8.1 ja Coverclipse 0.9.5.2. Microsoft SQL Server 2005 on käytettävissä projektiryhmän Windows P -palvelimella niille kehittäjille, jotka eivät käytä omalla koneellaan Microsoft SQL Server 2005 Express Editionia. Asiakas ylläpitää omissa tiloissaan Windows 2003 Server -testauspalvelinta, joka on tuleva tuotantopalvelin. Testauspalvelimella on käytössä SQL Server 2005. Testauspalvelinta käytetään systeemitestaukseen ja se tulee ryhmälle käytettäväksi viikolla 47. Projektiryhmän Debian-palvelimella ajetaan CruiseControl 2.5:tä jatkuvaan integrointiin (ks. 2.3.1). Virheiden raportointiin ja tehtävien jakamiseen, sekä manageritason seurantaan käytetään JIRA:a. 2.9. Standardit 2.10. Tuotokset IEEE Std 829-1998, IEEE Standard for Software Test Documentation ISO 9126 Testauksen ja laadunvarmistuksen tuotokset: Laatudokumentti, joka kuvaa laatutavoitteet ja käytännöt niiden varmistamiseen. Yksikkötestit, JUnit-testit, jotka dokumentoidaan JavaDoceissa.

LAATUDOKUMENTTI 12 (15) Testitapaukset, jotka dokumentoidaan testitapausdokumenttiin Ohjelmiston testit, jotka dokumentoidaan testilokiin. Testien lopuksi tehdään testiraportti, jossa on kuvattuna yhteenveto testeistä. SEPA-päiväkirjat Vertaistestausohjeet ja -raportit. 2.11. Testien keskeytys- ja jatkamisehdot Testaaminen keskeytetään, jos sovellus- tai tietoliikenneadapterin rajapinta ei pysty vastaanottamaan viestejä. Testaaminen keskeytetään myös, jos testauksen aikana ilmenee vakavia ongelmia, jotka estävät järkevän testauksen. Keskeytynyttä testaamista jatketaan, kun testattavasta komponentista tai järjestelmästä toimitetaan korjattu versio. Ensimmäisenä ajetaan regressiotestit ja sitten jatketaan muilla testeillä. 2.12. Testauksen lopetuskriteerit Testaaminen lopetetaan, kun testauksen tavoitteet ovat täyttyneet. Testaaminen lopetetaan laatupäällikön ja projektipäällikön harkinnan mukaan, jos testaamiseen käytettävä aika loppuu. Ajan loppumista pyritään välttämään riittävillä resursseilla ja testien priorisoinnilla.

LAATUDOKUMENTTI 13 (15) 3. ITERAATIOTASON SUUNNITELMAT 3.1. Ensimmäinen iteraatio 3.1.1. Testattavat toiminnot Taulu 5 Testattavat toiminnat Tunniste Toiminto Tärkeys Viittaus vaatimuksiin TF1 Viestin vastaanotto Pieni UC6.1, FR3 TF2 Viestin välitys Pieni UC6.2, FR3 TF3 Adapterikuittaus Tärkeä UC6.1 TF4 Siirtoprotokollatason kuittaus Pakollinen UC6.1 TF5 Tietoliikenneadapteri vastaanottaa viestin Pakollinen UC6.1, FR3 TF6 Tietoliikenneadapteri välittää datan sovellusadapterille. Tärkeä UC6.1, FR3 TF7 Sovellusadapteri jakaa datan oikealle messagehandlerille. Pakollinen UC6.1, FR3 TF8 Sovellusadapteri tallentaa datan Tärkeä UC6.1, FR3 TF9 Sovellusadapteri toimittaa tietoliikenneadapterille dataa Tärkeä UC6.2, FR3 TF10 Tietoliikenneadapteri toimittaa sovellusadapterilta saadun datan eteenpäin. Tärkeä UC6.*, FR3 3.1.2. Ei-testattavat toiminnot Emme testaa kolmansien osapuolien koodia. Luotamme, että käyttämämme kirjastot ovat toimivia. Testaamme kuitenkin käyttämiemme komponenttien konfiguraation oikeellisuuden. 3.1.3. Laadunvarmistuskäytäntöjen käyttäminen Iteraatio I:ssä tullaan ottamaan vaiheittain käyttöön CruiseControl jatkuvan integraation työkaluna. Ohjelmointityö aloitetaan rakentamalla projektien rungot ja niille rakennusskriptit. Välittömästi tämän jälkeen voidaan ottaa käyttöön automaattinen kokoonpano ja versioiden merkintä CruiseControltyökalulla. Seuraavaksi jatkuvaan integrointiin lisätään automaattinen yksikkötestien suoritus sekä ajan ja tarpeiden sanelemana muita työkaluja. Pariohjelmointia käytetään heti projektin alusta lähtien. Alussa pariohjelmoinnin avulla tutustutaan lyhyesti käytännössä TDD:iin. Jatkossa pariohjelmointia käytetään komponentteihin, joiden toteutus on haastavinta tai riskialteinta. Ennen Iteraatio I:n päätöstä suoritetaan koodikatselmointi Tietoliikenneadapterin tietoliikenne-toiminnallisuudelle sekä Sovellusadapterin viestinkäsittely-toiminnoille. Iteraatio I:n lopussa syntyneelle koodille suoritetaan myös ohjelmallinen staattinen analysointi. Iteraatio I:n jälkeen menetelmä integroidaan osaksi CruiseControljärjestelmää. Katselmointikäytännöistä järjestetään ryhmälle koulutus ennen ensimmäisen katselmoinnin suorittamista.

LAATUDOKUMENTTI 14 (15) 3.1.4. Testi ympäristö ja testidata Jokaisella kehittäjällä on omalla työasemallaan kehitysympäristö, jolla ohjelma pystytään kääntämään. Kehittäjät käyttävät omia työasemiaan kehityksen aikaiseen yksikkötestaukseen ja integraatiotestaukseen. Asiakas tarjoaa systeemi- ja integraatiotestaukseen testauspalvelimen. Testidata on välitettäviä ML-dokumentteja. ML Schema -ryhmä tuottaa testidokumentteja saadun teknisen dokumentaation perusteella ja muokkaamalla valmiita esimerkkidokumentteja. Testidokumentit eivät sisällä luonnollisten henkilöiden tietoja. 3.1.5. Aikataulu ja henkilöresurssit Testaus jatkuu läpi koko projektin rinnakkain kehitystyön kanssa. Ohjelmiston varsinaiset testaus- ja korjausjaksot ovat 9.-20.11.2006 ja 29.11.-9.12.2006, joissa varmistetaan, että demossa ohjelmiston laatu vastaa odotettua. Tehtävistä vastuulliset valitsevat tehtävien toteuttamiseen avukseen tilanteen mukaan siihen parhaiten sopivat henkilöt. Taulu 6 Aikataulu ja henkilöresurssit Nro Tehtävä Edeltävä tehtävä Vastuulliset Työmäärä (h) Määräaika 1 Testitapausten suunnittelu Laatusuunnitelman välidemoon palautus Kaarlo, Lauri 6 9.11.2006 2 Testitynkien suunnittelu Kaarlo, Tuomas, Laatu-suunnitelma välidemoon Lauri 5 7.11.2006 3 Ohjeistus välidemoon 1 Lauri 2 9.11.2006 4 Testidatan tuottaminen välidemoon 1 Tuomas 2 15.11.2006 5 Testauksen SEPApäiväkirjat SEPA-ryhmät 18 9.11.2006 6 CruiseControlin Ohjelmoinnin käyttöönotto aloitus Lauri, Olli 10 16.11.2006 7 Työkalujen lisäys CruiseControliin 6 Lauri, Olli 8 30.11.2006 8 Välidemossa tarvittavien testitynkien ensimmäiset Lauri, Olli 7 10.11.2006 versiot 9 Tietoliikenneadapterin testaus 8 Kaarlo, Olli 2 10.11.2006 10 Sovellusadapterin testaus 8 Kaarlo, Tuomas 2 10.11.2006 11 Testituloksien analysointi Kaarlo, Tuomas, 9, 10 ja reagointi Lauri 3 1 12 Tehtävien (9-11) toisto 11 Kaarlo 20.11.2006 13 Testauksen yhteenveto 12 Kaarlo 2 22.11.2006 14 Välidemo 2 15 Testitapausten suunnittelu 13 Kaarlo, Lauri 4 24.11.2006 16 Testitynkien suunnittelu 13 Kaarlo, Tuomas, Lauri 3 24.11.2006 17 Ohjeistus 15 Lauri 1 28.11.2006 18 Testidatan tuottaminen 15 Tuomas 2 28.11.2006

LAATUDOKUMENTTI 15 (15) 19 20 21 22 Testauspalvelimen käyttöönotto ja valmistelu systeemitestaukseen Sovellusadapterin koodikatselmointi Tietoliikenneadapterin koodikatselmointi Tietoliikenneadapterin Asiakas antaa pääsyn palvelimelle Kaarlo, Lauri 8 30.11.2006 Tuomas 5 30.11.2006 Kaarlo 4 30.11.2006 17 Kaarlo 2 29.11.2006 testaus 23 Sovellusadapterin testaus 17 Tuomas 2 29.11.2006 24 Integraatiotestaus 22, 23 Lauri, Tuomas 3 29.11.2006 25 Systeemitestaus 24 Kaarlo, Lauri 3 30.11.2006 26 Testituloksien analysointi Kaarlo, Lauri, 22-25 ja reagointi Olli 3 1.12.2006 27 Tehtävien (22-26) toisto 26 Kaarlo 5.12.2006 28 Testiraportointi 27 Kaarlo, Lauri 8 7.12.2006 29 Dokumenttien katselmointi 28 Kaarlo 3 7.12.2006 30 Dokumenttien korjaukset 29 Aleksi, Kaarlo, Lauri 6 8.12.2006 Testausdokumenttien 11.12.2006 31 30 Kaarlo 0,5 palautus klo 11:00 32 Iteraatiodemo 12.12.2006 3.1.6. Testikierrokset CruiseControlilla ajetaan yksikkötestejä jatkuvasti kerran vuorokaudessa. Ensimmäisellä testikierroksella testitynkien testit suoritetaan manuaalisesti. Testityngät automatisoidaan suorittamaan kertaalleen läpäisseet testit kerran vuorokaudessa. Muut testit suoritetaan aikataulun mukaan. Testikierroksia suoritetaan kunnes testauksen lopetusehdot täyttyvät. 3.2. Toinen iteraatio Tämä kappale tullaan kokonaisuudessaan tarkentamaan toisen iteraation alussa. 3.2.1. Testattavat toiminnot Ylläpitäjän käyttöliittymä. 3.2.2. Ei-testattavat toiminnot 3.2.3. Laadunvarmistuskäytäntöjen käyttäminen Suoritetaan katselmointi tärkeimmille uusille toiminnoille. 3.2.4. Laitteisto- ja ohjelmistoresurssit Emma otetaan käyttöön toiseen iteraatioon, jos Coverclipsen tulokset ja niistä raportoiminen ei vastaa odotuksia. CruiseControliin otetaan käyttöön lisää plugineja.