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

TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

TIE-21200 Ohjelmistojen testaus

Harjoitustyön esittely osa 1:

Yleisinfo ja vaiheet 1 & 2

Antti Jääskeläinen

Matti Vuori

Page 2: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

Yleinen byrokratia

2.9.2013 2

Page 3: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

[email protected]

• Matti Vuori

– ohjaa osaa ryhmistä

– huone TE204, http://www.cs.tut.fi/~vuori5

[email protected]

• Ryhmien oma assistentti vastaa työn yksittäisiin vaiheisiin liittyviin

kysymyksiin, kyselyt koko harjoitustyön järjestelyistä Antille

2.9.2013 3

Page 4: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 5: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 6: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

Harjoitustyö

2.9.2013 6

Page 7: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 8: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 9: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 10: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 11: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 12: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

Vaiheet 1 & 2:

Yksikkötestaus

2.9.2013 12

Page 13: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 14: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 15: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 16: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 17: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 18: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

Työkalut

2.9.2013 18

Page 19: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 20: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 21: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

Java 3/3

• Lisätietoja saatavilla osoitteista

– http://www.cprogramming.com/tutorial/java/syntax-differences-java-

c++.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

Page 22: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 23: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 24: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 25: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 26: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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

Page 27: TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa ...tie21201/s2013/project/testaus_harjoitustyo_osa_1.pdf · TIE-21200 Ohjelmistojen testaus Harjoitustyön esittely osa

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