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

Samankaltaiset tiedostot
Ohjelmistojen mallintaminen. Luento 11, 7.12.

Testivetoinen ohjelmistokehitys

Test-Driven Development

Test-Driven Development

JUnit ja EasyMock (TilaustenKäsittely)

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

4. Luokan testaus ja käyttö olion kautta 4.1

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

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

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

2. Olio-ohjelmoinista lyhyesti 2.1

Harjoitustyön testaus. Juha Taina

1 Tehtävän kuvaus ja analysointi

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

Metodien tekeminen Javalla

Ohjelmointi 2 / 2010 Välikoe / 26.3

private TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;

Automaattinen yksikkötestaus

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

Olio-ohjelmointi Javalla

Rajapinta (interface)

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

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

Testilähtöinen ohjelmistokehitys. Testilähtöinen ohjelmistokehitys. TDD Testilähtöinen ohjelmistokehitys. Testi! Testi. Test-Driven Development, TDD

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Mikä yhteyssuhde on?

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Javan perusteita. Janne Käki

9. Periytyminen Javassa 9.1

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

Luokat ja oliot. Ville Sundberg

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

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

4. Olio-ohjelmoinista lyhyesti 4.1

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 1: Yleisinfo ja vaiheet 1 & 2. Antti Jääskeläinen Matti Vuori

Tehtävä 1. TL5302 Olio-ohjelmointi Koe Malliratkaisuja. Tässä sekä a)- että b)-kohdan toimiva ratkaisu:

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Ohjelmistotuotantoprojekti

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

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

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

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

9. Periytyminen Javassa 9.1

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Eclipse ja JUnit-ohjelmoijatestit

Oliot viestivät metodeja kutsuen

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Taulukot. Jukka Harju, Jukka Juslin

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++

P e d a c o d e ohjelmointikoulutus verkossa

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 1: Yleisinfo ja vaiheet 1 & 2. Antti Jääskeläinen Matti Vuori

1. Olio-ohjelmointi 1.1

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

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

Harjoitus 3 (viikko 39)

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

5. HelloWorld-ohjelma 5.1

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Interaktiivinen tarinankerronta

Ohjelmistojen mallintaminen, syksy 2011, laskuharjoitus 2

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

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

15. Ohjelmoinnin tekniikkaa 15.1

Luokan sisällä on lista

Projektisuunnitelma. (välipalautukseen muokattu versio) Vesiprosessin sekvenssiohjelmointi ja simulointiavusteinen testaus

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

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Tietokannat II -kurssin harjoitustyö

Metodien tekeminen Javalla

Listarakenne (ArrayList-luokka)

Convergence of messaging

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

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

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

8. Näppäimistöltä lukeminen 8.1

Transkriptio:

Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin. Tavoitteena on pilkkoa ohjelmisto pieniin testattaviin yksikköihin ja varmistaa niiden oikeellisuus Testaus tapahtuu yleensä testausohjelmistokehyksen avulla Mahdollistaa luotujen testien automaattisen ajamisen Valmiita testausohjelmistokehyksiä löytyy lähes jokaiselle ohjelmointikielelle: http://en.wikipedia.org/wiki/list_of_unit_testing_frameworks Javalla yleisin kehys on Junit integroitu yleisimpiin ohjelmistokehitysympäristöihin

Testaus hyödyllinen ainakin suunnittelussa, toteutuksessa sekä ylläpidossa. Suunnittelu: Halutaan luoda vain testattavaa toiminnallisuutta Toteutusvaihe: TDD (Test-driven development) jossa kirjoitetaan ensiksi testi, joka ei mene läpi koska vaadittu toiminnallisuus puuttuu, sitten toiminnallisuus joka läpäisee testin. Toistetaan kunnes haluttu isompi toiminnallisuus valmiina. Testien kirjoitus toiminnallisuuden kirjoittamisen jälkeen on myös hyödyllistä, mutta lähinnä ylläpitoa ajatellen Ylläpitovaihe: Olemassaolevat testit helpottavat ylläpitovaiheessa tehtävien muutosten testausta. Yksi muutos voi rikkoa useampia toiminnallisuuksia, joiden rikkoutumisesta olemassaolevat testit ilmoittavat.

TDD-sykli tarkemmin: Luo uusi testi joka testaa ei-olemassaolevaa toiminnallisuutta Aja olemassaolevat testit ja varmista että uusi testi ei mene läpi. Jos testi menee läpi testi voi olla viallinen, tai toivottu toiminnallisuus on jo toteutettu. Kirjoita uutta toiminnallisuutta varten toteutus joka läpäisee testin. Uuden toiminnallisuuden tulee olla toteutettu siten, että se läpäisee juuri kirjoitetun testin ei muuta. Aja olemassaolevat testit ja varmista että ne menevät läpi. Jos testit eivät mene läpi, tarkista uuden toiminnallisuuden aiheuttamat muutokset. Refaktoroi eli siisti koodia. Esimerkiksi toistuva koodi tulee siirtää omaan metodiinsa. Palaa alkuun.

Esimerkki Junit-testauskehystä käyttäen: Tavoitteena laskin joka osaa laskea pluslaskuja. Ensimmäinen testi: Halutaan että Laskin-olion voi luoda import org.junit.test; public class LaskinTest { public void testlaskimenluonti() {

Luodaan toiminnallisuus joka läpäisee testin public class Laskin { public Laskin() { Testit ajetaan ja kaikki menevät läpi. Huomaa että testiluokan tulee olla samannimisessä pakkauksessa (joskin eri sijainnissa) kuin testattavan luokan. Tällöin testiluokka ei tarvitse erillistä import-käskyä testattavalle luokalle

Seuraava testi: Halutaan että laskin voi laskea laskun 1+1 import org.junit.assert; import org.junit.test; public class LaskinTest { public void testlaskimenluonti() { public void testyksiplusyksi() { Assert.assertEquals(2, laskin.plus(1, 1));

Toteutetaan toiminnallisuus joka läpäisee testin. Huomaa että toiminnallisuuden tulee vain toteuttaa testin vaatima toiminnallisuus. Yksi plus yksi testille riittää hyvin toteutus joka palauttaa aina arvon 2. public class Laskin { public Laskin() { public int plus(int ekaluku, int tokaluku) { return 2; Kun testit ajetaan, ne menevät läpi.

Seuraava testi: Halutaan että laskin voi laskea laskun 1+2 import org.junit.assert; import org.junit.test; public class LaskinTest { public void testlaskimenluonti() { public void testyksiplusyksi() { Assert.assertEquals(2, laskin.plus(1, 1)); public void testyksipluskaksi() { Assert.assertEquals(3, laskin.plus(1, 2));

Toteutetaan toiminnallisuus joka läpäisee uuden testin. Jos plusmetodin toiminnallisuutta muutetaan siten, että se palauttaa aina luvun kolme, aikaisempi testi ei enää mene läpi. On mahdollista toteuttaa toiminnallisuus myös ehtolauseen avulla ( jos ekaluku on yksi, ja tokaluku on kaksi, palauta 3 ) mutta myöhemmin joutuisimme refaktoroimaan koodin testit läpäiseväksi. public class Laskin { public Laskin() { public int plus(int ekaluku, int tokaluku) { return ekaluku + tokaluku; Kun testit ajetaan, ne menevät läpi ja sykli jatkuu kunnes toiminnallisuus on valmis.