Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Yksikkötestaus ● Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin.

Samankaltaiset esitykset


Esitys aiheesta: "Yksikkötestaus ● Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin."— Esityksen transkriptio:

1 Yksikkötestaus ● 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_framework s http://en.wikipedia.org/wiki/List_of_unit_testing_framework s – Javalla yleisin kehys on Junit ● integroitu yleisimpiin ohjelmistokehitysympäristöihin

2 Yksikkötestaus ● 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.

3 Yksikkötestaus ● 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.

4 Yksikkötestaus ● 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 { @Test public void testLaskimenLuonti() { Laskin laskin = new Laskin(); } }

5 Yksikkötestaus ● 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

6 Yksikkötestaus ● Seuraava testi: Halutaan että laskin voi laskea laskun 1+1 import org.junit.Assert; import org.junit.Test; public class LaskinTest { @Test public void testLaskimenLuonti() { Laskin laskin = new Laskin(); } @Test public void testYksiPlusYksi() { Laskin laskin = new Laskin(); Assert.assertEquals(2, laskin.plus(1, 1)); } }

7 Yksikkötestaus ● 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.

8 Yksikkötestaus ● Seuraava testi: Halutaan että laskin voi laskea laskun 1+2 import org.junit.Assert; import org.junit.Test; public class LaskinTest { @Test public void testLaskimenLuonti() { Laskin laskin = new Laskin(); } @Test public void testYksiPlusYksi() { Laskin laskin = new Laskin(); Assert.assertEquals(2, laskin.plus(1, 1)); } @Test public void testYksiPlusKaksi() { Laskin laskin = new Laskin(); Assert.assertEquals(3, laskin.plus(1, 2)); } }

9 Yksikkötestaus ● Toteutetaan toiminnallisuus joka läpäisee uuden testin. Jos plus- metodin 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.


Lataa ppt "Yksikkötestaus ● Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin."

Samankaltaiset esitykset


Iklan oleh Google