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

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

Testaus ja testausympäristöt
Koostumussuhde Jukka Juslin © Jukka Juslin.
Testaus ja testausympäristöt
6. Metodit.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö Netbeans ja XAMPP Projektin luominen.
© 2004 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Java-perusteet Kari Kujansuu
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
13. Pakkaukset.
Sovellusohjelman suunnittelu & toteutus
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
(Joskus puhutaan myös komponenttitestauksesta.) Pienin kokonaisuus, joka on järkevä testata erikseen. ● Perinteisesti yksittäinen aliohjelma. ● Olio-ohjelmien.
© Jukka Harju, Jukka Juslin Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 9 Poikkeuskäsittely.
9. Periytyminen Javassa.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
Dynaamiset oliottMyn1 Dynaamiset oliot Dynaamisen olion tunnuksen esittely ja olion määrittely voivat tapahtua yhtäaikaisesti tai eri aikaan. Dynaamisen.
13. Hyvä ohjelmointitapa (osa 1)
Virtuaaliset jäsenfunktiot tMyn1 Virtuaaliset jäsenfunktiot Virtuaalinen jäsenfunktio on esiteltävä monimuotoisessa kantaluokassa. Virtuaalisen jäsenfunktion.
© Jukka Harju, Jukka Juslin
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Workshop: Test-first approach Pietu Pohjalainen. Testaus perinteisesti Tarkoituksena löytää virheitä ohjelmasta mutta mikä on virhe? Sijoittuu tavallisesti.
Java Java on Sun Microsystems yhtiön kehittämä laaja olio-pohjainen ohjelmointikieli, joka on laitteistoriippumaton. Laitteistoriippumattomuudessa on.
String-vertailusta ja Scannerin käytöstä (1/2)
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op ALU.
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
20. Javan omat luokat.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
17. Kooste Kooste Kooste (aggregation) on luokkien A ja B välinen suhde, joka tarkoittaa “A on B:n osa” tai “A kuuluu B:hen”. − Koostesuhteessa.
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
Johdetun luokan olion esittely... tMyn1 Johdetun luokan olion esittely ja määrittely Esittelyluokka tarkoittaa olion tunnuksen luokkaa. Määrittelyluokka.
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
Vesa Ollikainen & Outi Grotenfelt
Olioiden taulukointi Perustaulukon käyttö Luokan ilmentymät voidaan tallettaa taulukkoon samoin kuin muuttujat Esimerkki talletetaan taulukkoon opintojaksojen.
11. Rajapinnat Sisällys Mitä rajapinnat ovat? Kuinka ne määritellään ja otetaan käyttöön? Moniperiytyminen rajapintojen avulla. Varoituksen.
Monimuotoinen luokka tMyn1 Monimuotoinen luokka Monimuotoinen luokka mahdollistaa saman jäsenfunktion toteutuksen monella tavalla. Tällöin puhutaan virtuaalisesta.
Javan oliovirrat eli oliotiedostojen käsittely. Olio- eli objektitiedostojen käsittely Käsittely täysin samanlaista kuin muiden tiedostojen 1.Otetaan.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
8. Periytyminen Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö.
Tiedostot. 8.2 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen.
1.0 TE DiplomityöEsitelmä/ / JT Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olio- orientoituneeseen ohjelmointiin Jukka.
Olio-ohjelmoinista lyhyesti. 2.2 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen.
String-vertailusta ja Scannerin käytöstä (1/2)
17. Kooste.
5. Kapselointi.
3. Olio-ohjelmoinista lyhyesti
6. Tiedostot.
18. Testaus.
Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta
Poikkeustenkäsittelylohkot try-catch
1. Olio-ohjelmointi.
7. Hyvä ohjelmointitapa..
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
14. Hyvä ohjelmointitapa.
6. Metodit.
13. Pakkaukset.
8. Periytyminen.
4. Attribuutit.
3. Attribuutit.
13. Pakkaukset.
8. Periytyminen.
4. Luokan testaus ja käyttö olion kautta
eli oliotiedostojen käsittely
Esityksen transkriptio:

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: s s – Javalla yleisin kehys on Junit ● integroitu yleisimpiin ohjelmistokehitysympäristöihin

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.

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.

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 public void testLaskimenLuonti() { Laskin laskin = new Laskin(); } }

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

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

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.

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

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.