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

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

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

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

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

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

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaihe 3. Antti Jääskeläinen Matti Vuori

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

9. Periytyminen Javassa 9.1

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

7/20: Paketti kasassa ensimmäistä kertaa

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

7. Oliot ja viitteet 7.1

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

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

Taulukot. Jukka Harju, Jukka Juslin

ITKP102 Ohjelmointi 1 (6 op)

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

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

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

Metodien tekeminen Javalla

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Testivetoinen ohjelmistokehitys

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

Javan perusteita. Janne Käki

TIE Ohjelmistojen testaus 2016 Harjoitustyö Vaihe 3. Antti Jääskeläinen Matti Vuori

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

Java-kielen perusteet

17. Javan omat luokat 17.1

Sisältö. 22. Taulukot. Yleistä. Yleistä

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

Eclipse ja JUnit-ohjelmoijatestit

20. Javan omat luokat 20.1

Harjoitustyön testaus. Juha Taina

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

17. Javan omat luokat 17.1

Java-kielen perusteet

11/20: Konepelti auki

2. Olio-ohjelmoinista lyhyesti 2.1

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

15. Ohjelmoinnin tekniikkaa 15.1

Olio-ohjelmointi Javalla

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Java-kielen perusteet

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

Ohjelmointi 2, välikoe

Mikä yhteyssuhde on?

Sisältö. 2. Taulukot. Yleistä. Yleistä

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Harjoitus 5 (viikko 48)

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

Test-Driven Development

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

5. HelloWorld-ohjelma 5.1

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

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

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

4. Olio-ohjelmoinista lyhyesti 4.1

1. Omat operaatiot 1.1

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

7. Näytölle tulostaminen 7.1

9. Periytyminen Javassa 9.1

Test-Driven Development

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

Yksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen

Harjoitus 4 (viikko 47)

14. Poikkeukset 14.1

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

19. Olio-ohjelmointia Javalla 19.1

1 Tehtävän kuvaus ja analysointi

Java kahdessa tunnissa. Jyry Suvilehto

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

ITKP102 Ohjelmointi 1 (6 op)

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

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

Ohjelmointi 2 / 2010 Välikoe / 26.3

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Luokat ja oliot. Ville Sundberg

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Ohjelmoinnin jatkokurssi, kurssikoe

Jypelin käyttöohjeet» Miten voin liittää törmäyksiin tapahtumia?

TAMPEREEN TEKNILLINEN YLIOPISTO

5. HelloWorld-ohjelma 5.1

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

15. Ohjelmoinnin tekniikkaa 15.1

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

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

11. Javan valintarakenteet 11.1

Muuttujat ja kontrolli. Ville Sundberg

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

JUnit ja EasyMock (TilaustenKäsittely)

Transkriptio:

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

Yleinen byrokratia 2.9.2013 2

Kurssihenkilökunta Antti Jääskeläinen vastuu harjoitustyön rakenteesta ja yleisistä järjestelyistä ohjaa osaa ryhmistä vastaanotto: tiistaisin 11:30-12:30, huone TE204 antti.m.jaaskelainen@tut.fi Matti Vuori ohjaa osaa ryhmistä huone TE204, http://www.cs.tut.fi/~vuori5 matti.p.vuori@tut.fi Ryhmien oma assistentti vastaa työn yksittäisiin vaiheisiin liittyviin kysymyksiin, kyselyt koko harjoitustyön järjestelyistä Antille 2.9.2013 3

Harjoitustyöhön valmistautuminen Rekisteröidy IDLEen kurssille Muodosta ryhmä etsi pari luokaa ryhmä IDLEen ryhmät jaetaan ohjaajille (lähes) automaattisesti Lue harjoitustyön nettisivu yleinen ohjeistus, aikataulu http://www.cs.tut.fi/~testaus/s2013/project/ Lue päätestaussuunnitelma (Master Test Plan, MTP) eri vaiheiden tehtävät, työkalut http://www.cs.tut.fi/~testaus/s2013/project/master_test_plan.pdf 2.9.2013 4

Kurssin läpäisy Harjoitustyössä on neljä vaihetta kustakin tarjolla 0-4 pistettä nollan pisteen palautus ei ole hylätty, vaan kurssilla voi edelleen jatkaa Maksimipisteet harjoitustyöstä 16 puolet koko kurssin pisteistä Voidaksesi osallistua tenttiin sinun on saatava harjoitustyöstä vähintään 5 pistettä tehtävä hyväksytty palautus kaikissa työn vaiheissa Läpäistäksesi kurssin sinun on saatava vähintään 5 pistettä tentistä noin puolet kaikista saatavilla olevista pisteistä (~16/32) 2.9.2013 5

Harjoitustyö 2.9.2013 6

Työn vaiheet Työssä on neljä vaihetta 1. yksikkötestauksen suunnittelu 2. yksikkötestauksen suoritus ja raportointi 3. järjestelmätestauksen suunnittelu 4. järjestelmätestauksen suoritus ja raportointi Testikohde yksikkötestauksessa on RegexSearcher Java-luokka säännöllisten lausekkeiden etsintään merkkijonosta /share/ohjcourses/testaus/packages/regexsearcher.tar.gz Lintulassa Testikohde järjestelmätestauksessa on jedit ohjelmoijan tekstieditori http://www.jedit.org/ 2.9.2013 7

Palautukset 1/2 Vaihe 1: yksikkötestaussuunnitelma Vaihe 2: yksikkötestausraportti korjattu suunnitelma yksikkötestit Vaihe 3: järjestelmätestaussuunnitelma Vaihe 4: järjestelmätestausraportti korjattu suunnitelma muut tiedostot lähestymistavan mukaan 2.9.2013 8

Palautukset 2/2 Palautukset tehdään IDLEssä Kaikki suunnitelmat ja raportit palautetaan PDF-muodossa Vaiheessa 2 palautetaan yksikkötestit testit suoritetaan automaattisesti palautuspaketin on oltava oikean muotoinen! 2.9.2013 9

Välinäytöt ja palautetilaisuudet Välinäytöt viikko ennen vaiheiden 1 ja 3 palautuksia tilaisuus esittää kysymyksiä ja esitellä siihenastisia tuotoksia vapaaehtoisia 20 minuuttia per ryhmä Palautetilaisuudet viikko vaiheiden 1 ja 3 palautusten jälkeen palaute suunnitelmasta ja tilaisuus saada ohjausta seuraavaan vaiheeseen pakollisia: kummassakin tilaisuudessa ainakin toisen ryhmän jäsenen oltava paikalla, kummankin ryhmän jäsenen käytävä ainakin toisessa tilaisuudessa 15 minuuttia per ryhmä 2.9.2013 10

Aikataulu Yksikkötestaussuunnitelma viikko 38: välinäytöt viikko 39: palautus viikko 40: palautetilaisuudet Yksikkötestausraportti viikko 43: palautus Järjestelmätestaussuunnitelma viikko 45: välinäytöt viikko 46: palautus viikko 47: palautetilaisuudet Järjestelmätestausraportti viikko 49: palautus 2.9.2013 11

Vaiheet 1 & 2: Yksikkötestaus 2.9.2013 12

Päämäärä RegexSearcher-luokan yksikkötestaus Tarkoitus on kehittää testijoukko, joka testaa, toimiiko luokka riittävän hyvin käyttöönottoa varten toimii regressiotestijoukkona luokan myöhemmille versioille Testaus suoritetaan käyttäen JUnit-yksikkötestauskehystä Vaihe 1: suunnittele testijoukon rakenne aloita testijoukon toteutus Vaihe 2: viimeistele testijoukon toteutus suorita testit raportoi tulokset 2.9.2013 13

Suunnitelman teko Mitä testataan? Testitapausten kehittäminen mihin ominaisuuksiin pitäisi keskittyä? millaisilla syötteillä niitä pitäisi testata? Testauksen logistiikka: miten testitapaukset on paras jakaa luokkiin ja testijoukkoihin? Milloin on testattu tarpeeksi? koodikattavuutta voi käyttää apuvälineenä, mutta siihen ei parane luottaa liikaa Milloin testikohde läpäisee testauksen? 2.9.2013 14

Testitapauksen rakenne Alustus luo tarvittavat oliot ja saata ne sopivaan tilaan Suoritus suorita testiaskeleet Tarkastus varmista, että paluuarvot ja olioiden tilat ovat oikein tärkein askel! Siivous vapauta varatut resurssit (oliot, tiedostokahvat yms.) 2.9.2013 15

Raportin teko Mitä on testattu? Poikettiinko suunnitelmista? Jos, niin miten? kaikki sujuu harvoin täsmälleen suunnitelman mukaan, poikkeamia voi tehdä tarpeen vaatiessa Kuinka kattava testaus oli? Millaisessa kunnossa testikohde testauksen perusteella on? Läpäiseekö testikohde testauksen? Mitä virheitä on löydetty? virheraportit kirjoitetaan löydetyistä virheistä, ei epäonnistuneista testeistä: usealle samaan ongelmaan törmänneelle testille yhteinen raportti 2.9.2013 16

Virheraportin rakenne Kerro, mikä testikohteessa on vialla pitäisi näkyä jo otsikossa, jotta vikaluettelosta saisi yleiskuvan testikohteen kunnosta Missä ja miten vika ilmenee testiympäristö syötteet odotetut ja saadut tulokset jne. Motivoi ihmisiä korjaamaan vika vaikutukset käyttäjään vaikutukset kehitykseen ja testaukseen 2.9.2013 17

Työkalut 2.9.2013 18

Java 1/3 Tila olioille varataan aina keosta StringBuilder s = new StringBuilder( abc ); Olioita käsitellään aina viitteinä StringBuilder t = s; s.append( def ); t.tostring(); // palauttaa abcdef Olioiden yhtäsuuruus s == t // ovatko s ja t sama olio? s.equals(t) // ovatko s ja t ekvivalentit? null on viite ei mihinkään (tai oikeasti ei, mutta sinne päin) Ei eksplisiittistä olioiden tuhoamista tai purkajia, roskienkeruu siivoaa oliot kun niihin ei enää viitata s = null; t = null; 2.9.2013 19

Java 2/3 Primitiivityypit toimivat C++:n tapaan byte, short, int, long, float, double, boolean, char Merkkijonot ovat olioita mutta niille on erityistukea syntaksissa String str = abc + toinenstr; Määre final muuttujan määrittelyssä estää primitiivimuuttujan arvon muuttamisen estää olioviitteen kääntämisen viittaamaan toiseen olioon (muttei viitatun olion tilan muuttamista) @-merkillä alkavat annotaatiot ovat määreitä, joilla voidaan lisätä koodiin metadataa @Override public void perittymetodi() { } JUnit käyttää näitä mm. tunnistamaan testimetodit 2.9.2013 20

Java 3/3 Lisätietoja saatavilla osoitteista http://www.cprogramming.com/tutorial/java/syntax-differences-javac++.html http://www.programmersheaven.com/2/faq-java-differences- Between-JAVA-And-C-CPP http://en.wikipedia.org/wiki/comparison_of_java_and_c%2b%2b 2.9.2013 21

JUnit Yksikkötestikehys Java-ohjelmille Huolehtii testien alustamisesta, suorituksesta ja raportoinnista Testitapaukset esitetään rakenteisessa ja ylläpidettävässä muodossa Testitapaukset ovat JUnitin metodeita Useita testitapauksia voidaan koota samaan testiluokkaan kannattaa tehdä testitapauksille, jotka vaativat samanlaisen alustuksen Lisätietoja saatavilla sivulta http://www.junit.org Vastaavia xunit-kehyksiä on tarjolla myös muille ohjelmointikielille 2.9.2013 22

JUnit: Testiluokka public class TestiLuokka { // yhteinen alustus @Before public void alusta() { } // yhteinen siivous @After public void siivoa() { } } // testitapaukset @Test public void testi1() { } @Test public void testi2() { } 2.9.2013 23

JUnit: Testitapaukset 1/2 @Test public void tekstihaku() { RegexSearcher searcher = new RegexSearcher("ijk", false, false); searcher.settext("abcdefghijklmnopqrstuvwxyz"); Match match = searcher.findnext(); } assertequals("begin", 8, match.begin); assertequals("end", 11, match.end); 2.9.2013 24

JUnit: Testitapaukset 2/2 // null-parametrin pitäisi aiheuttaa poikkeus @Test(expected=RuntimeException.class) public void nullteksti() { RegexSearcher searcher = new RegexSearcher("ijk", false, false); searcher.settext(null); searcher.findnext(); } 2.9.2013 25

Eclipse Ohjelmistokehitysympäristö ennen kaikkea Javalle tuki monille muille kielille tarjolla pluginien avulla Käytössä tällä kurssilla testien kirjoittamiseen ja ajamiseen käyttö vapaaehtoista Käytettävissä Lintulassa tai asennettavissa omalle tietokoneelle Lintulassa kurssin käyttöön oma versio johon on asennettu valmiiksi CodeCover-kattavuusmittausplugin, löytyy polusta /share/ohjcourses/testaus/eclipse/eclipse Ohjeet käyttöön päätestaussuunnitelmasta Lisätietoja sivulta http://www.eclipse.org 2.9.2013 26

Vinkkejä Eclipsen käyttöön Osittain kirjoitetun nimen voi täydentää painamalla Ctrl-Space Nimen ollessa valittuna sen määrittelyyn voi hypätä painamalla F3 Koodiin voi lisätä breakpointteja editorin vasemman reunan popup-menusta Breakpointteihin pysähdytään ainoastaan suoritettaessa ohjelmaa debug-moodissa Editorin vasemman reunan virhe- tai varoitusikonia klikkaamalla saa esiin ehdotuksia korjaukseksi 2.9.2013 27