Ohjelmistojen mallintaminen. Luento 11, 7.12.

Samankaltaiset tiedostot
Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

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

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

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

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

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

Test-Driven Development

Automaattinen yksikkötestaus

Tapahtuipa Testaajalle...

Kertaus: yleistys-erikoistus ja perintä

Test-Driven Development

Ohjelmistotuotantoprojekti

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

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

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

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

Ohjelmistojen mallintaminen

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

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

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

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

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

TDD Käytännössä Todellinen työkalu vai lehmipoikien laukkaa? Harri Kulmala Solita Oy

Testaussuunnitelma. Ohjelmistotuotantoprojekti Nero. 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

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Testaussuunnitelma. PUSU-ryhmä. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

UCOT-Sovellusprojekti. Testausraportti

COTOOL dokumentaatio SEPA: Refaktorointi

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

Ohjelmistotestaus -09

Ohjelmistotekniikan menetelmät, kesä 2008

dokumentin aihe Dokumentti: Testausraportti_I1.doc Päiväys: Projekti : AgileElephant

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

Testaussuunnitelma. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

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

13/20: Kierrätys kannattaa koodaamisessakin

Testaus osana ohjelmistojen elinkaarta I

Lakki. Lisää ot sik k o osoit t am alla. Nöyrästi vain lakki kourassa... Jussi Vänskä Espotel Oy. vierailuluentosarja OTM kurssi 2010

Ohjelmistotekniikka - Luento 2

Testaus-tietoisku: Tärkeimpiä asioita testauksesta projektityökurssilaisille

Ohjelmistotuotanto. Luento

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

L models. Testisuunnitelma. Ryhmä Rajoitteiset

Ohjelmien testaustyökalut

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

statbeatmobile PROJECT REVIEW iteration 1

Testivetoinen ohjelmistokehitys

Testaaminen ohjelmiston kehitysprosessin aikana

COTOOL dokumentaatio Testausdokumentit

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Ohjelmistojen mallintaminen, mallinnustekniikat käytännössä

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

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

Laaturaportti [iteraatio 2] Ryhmä 14

Hirviö Laadunvarmistussuunnitelma

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

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Tutkittua tietoa. Tutkittua tietoa 1

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

Kurssin aihepiiri: ohjelmistotuotannon alkeita

Versio Päiväys Tekijä Kuvaus Tikkanen varsinainen versio

Ohjelmistojen mallintaminen. Luento 8,

Testiautomaatio tietovarastossa. Automaattisen regressiotestauksen periaate ja hyödyt

Esityksen sisältö Määrittelyjen mukaisuudesta varmistuminen - PlugIT-leima

Ohjelmistojen mallintaminen. Luento 5,

Ohjelmiston testaus ja laatu. Testaustasot

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Testaus Korppi-kehityksessä. Panu Suominen THK / JYU

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistoprosessit ja ohjelmistojen laatu (4op)

Verifiointi ja validointi

T Testiraportti - järjestelmätestaus

Mihin kaikkeen voit törmätä testauspäällikön saappaissa?

Ohjelmistotekniikan menetelmät, kevät 2008

Onnistunut Vaatimuspohjainen Testaus

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

Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita

Laadunvarmistusdokumentti

LAATURAPORTTI Iteraatio 1

Testaussuunnitelma Labra

2. Ohjelmistotuotantoprosessi

Hirviö Laadunvarmistussuunnitelma

Harjoitustyön testaus. Juha Taina

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut

Käyttötapausanalyysi ja testaus tsoft

Ohjelmiston testaus ja laatu. Testausmenetelmiä

10. Tarkastukset. Tarkastusten rakenne

Tarkastusten rakenne. 10. Tarkastukset. Tuotoksen tekijän rooli. Tarkastustiimi. Tarkastusprosessin vaiheet. Tarkastusprosessi

58160 Ohjelmoinnin harjoitustyö

Ville Friman. Testauslähtöinen ohjelmistokehitys

Testaus elinkaaressa. Testaustasot ja vaiheet

T Testiraportti - integraatiotestaus

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

Dynaaminen analyysi IV

Ohjelmistojen suunnittelu

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

Testauslähtöinen ohjelmistokehitys

JULKISTEN PALVELUJEN ELINKAARI; HYVÄ PALVELU EILEN, TÄNÄÄN, HUOMENNA MIHIN PALVELUT OVAT MENOSSA? Lauri Helenius, Solita Oy

Transkriptio:

Ohjelmistojen mallintaminen Luento 11, 7.12.

Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation, eli suosi rajapintoja Favor composition over inheritance, eli älä väärinkäytä perintää Merkki huonosta suunnittelusta: koodihaju (engl. code smell) Lääke huonoon suunnitteluun/koodihajuun: refaktorointi Muutetaan koodin rakennetta parempaan suuntaan muuttamatta toiminnallisuutta Mietittiin Kirjasto-esimerikin puitteissa miten ohjelman määrittelyä ja suunnittelua lähestytään ketterässä hengessä: Vaatimukset käyttötapauksia Määrittelyvaiheen luokkamalli Arkkitehtuuri Oliosuunnittelu Oliosuunnittelussa käytössä vastuupohjainen, responsibility driven -tekniikka Noudattaa kaikkia ym. yleisiä oliosuunnitteluperiaatteita

Tänään hieman testauksesta ja ohjelmoinnista Ohjelmiston elinkaareen kuuluvat vaiheet ovat siis Määrittely Suunnittelu Toteutus Testaus Ylläpito Kuten on todettu, ketterissä menetelmissä vaiheet etenevät rinnakkain toistuen lyhyissä iteraatioissa, joiden aikana toteutetaan ohjelmaan uusia ominaisuuksia Testauskin jakautuu vaiheisiin: Yksikkötestaus Toimivatko yksittäiset metodit ja luokat kuten halutaan? Integrointitestaus Varmistetaan komponenttien yhteentoimivuus Järjestelmä/hyväksymistestaus Toimiiko kokonaisuus niin kuin vaatimusdokumentissa sanotaan? Regressiotestauksella tarkoitetaan järjestelmälle muutosten ja bugikorjausten jälkeen ajettavia testejä jotka varmistavat että muutokset eivät riko mitään ehjää

Testauksen automatisointi Yksittäistä testiä sanotaan testitapaukseksi (test case) Yksikkötesteissä on yleensä jokaista testattavan luokan metodia kohti vähintään yksi testitapaus, yleensä useampia Yksikkötestauksessa pyritään mahdollisimman hyvään kattavuuteen Kattavuutta voidaan mitata esimerkiksi sillä kuinka suurta osaa koodiriveistä testit tutkivat Manuaalisesti tapahtuva testaus on toivottoman työlästä Erityisesti sen takia, että ei riitä että ohjelma testataan kerran, jokaisen muutoksen jälkeen on tehtävä regressiotestaus joka varmistaa että muutos ei riko mitään Testit kannattaa siis tehdä koodiksi joka voidaan ajaa siten, että testikoodi varmistaa automaattisesti testattavan koodin toiminnan Testikoodin ajamisen täytyy olla helppoa, nappia painamalla tapahtuvaa xunit-testauskehys on automatisoidun yksikkö- ja integrointitestauksen defacto-standard JUnit on Javalle tarkoitettu xunitin versio

JUnit JUnitin peruskäyttö on todella helppoa erityisesti modernien kehitysympäristöjen (Netbeans, Eclipse, IntelliJ) yhteydessä ks. pieni JUnit-tutoriaali osoitteesta https://wiki.helsinki.fi/display/ohpejaohja2010/junit Ohjelmoinnin harjoitustyössä ja muutenkin kaikessa laitoksella jatkossa tehtävässä ohjelmoinnissa vaaditaan JUnit-testien käyttöä Puhumattakaan työelämässä tapahtuvasta ohjelmoinnista Testien tekeminen jälkikäteen on toivottoman työlästä... JUnit ei ole alunperin tarkoitettu noin typerään toimintaan, JUnitin kehittäjällä Kent Beckillä oli alusta asti mielessä jotain paljon järkevämpää ja mielenkiintoisempaa Test Drive it!

TDD eli Test Driven Development Ohjelmoija (eikä siis erillinen testaaja) kirjoittaa testikoodin Testit laaditaan ennen koodattavan luokan toteutusta, yleensä jo ennen lopullista suunnittelua Sovelluskoodi kirjoitetaan täyttämään testien sisältämät vaatimukset Testit määrittelevät miten ohjelmoitavan luokan tulisi toimia Testit toimivatkin osin koodin dokumentaationa, sillä testit myös näyttävät miten testattavaa koodia käytetään Testaus ohjaa kehitystyötä eikä ole erillinen toteutuksen jälkeinen laadunvarmistusvaihe Oikeastaan TDD ei ole testausmenetelmä vaan ohjelmiston kehitysmenetelmä, joka tuottaa sivutuotteenaan automaattisesti ajettavat testit Testien on ennen toteutuksen valmistumista epäonnistuttava Näin pyritään varmistamaan, että testit todella testaavat haluttua asiaa Toiminnallisuus katsotaan toteutetuksi, kun testit menevät läpi

(1) tehdään yksi testitapaus TDD-sykli testitapaus testaa ainoastaan yhden pienen asian (2) Tehdään koodi joka läpäisee testitapauksen (3) refaktoroidaan koodia, eli parannellaan koodin laatua ja struktuuria Testit varmistavat koko ajan ettei mitään mene rikki Kun koodin rakenne on kunnossa, palataan vaiheeseen (1)

TDD Automaattinen testaus ja TDD ovat usein osana ketterää ohjelmistokehitystä Mahdollistaa turvallisen refaktoroinnin Koodi ei rupea haisemaan Ohjelman rakenne säilyy laajennukset mahdollistavana Luennolla demotaan TDD:tä ja toista tärkeää ketterän ohjelmistokehityksen käytäntöä pariohjelmointia