Luokkatestauksen piirteitä: metodit. 4. Luokkatestaus (B, 10) Luokkatestauksen piirteitä: yliluokat. Luokan valmistelu. Alfa-Omega syklin vaiheet

Koko: px
Aloita esitys sivulta:

Download "Luokkatestauksen piirteitä: metodit. 4. Luokkatestaus (B, 10) Luokkatestauksen piirteitä: yliluokat. Luokan valmistelu. Alfa-Omega syklin vaiheet"

Transkriptio

1 & 4. Luokkatestaus (B, 10) Luokkatestaus on matalimman tason testausta. Siinä testataan yksittäisiä luokkia tai ryppäitä (clusters). Ryväs on joukko vahvasti toisiinsa sitoutuneita luokkia. Pieniä ryppäitä voidaan testauksessa pitää yksittäisinä luokkina. Isot ryppäät kootaan integrointitestauksessa. Jatkossa luokkatestaus tarkoittaa sekä luokkien että pienten ryppäiden testausta. 1 Luokkatestauksen piirteitä: metodit Luokka testataan lähettämällä luokan metodeille yksi kerrallaan viestejä (kutsumalla niitä). Luokka testataan metodiensa kautta. Pelkkä yksittäisten metodien kutsuminen ei riitä, jos (ja kun) luokan metodeilla on keskinäisiä riippuvuuksia. Jokaisella luokan ilmentymällä, oliolla, on tila, joka määrää olion käytöksen. Tila on kaikkien sille tehtyjen metodikutsujen summa. Vaihtelemalla metodien kutsujärjestystä voidaan päätyä eri tiloihin. 2 Luokkatestauksen piirteitä: yliluokat Luokan valmistelu Luokka on kokoelma sille määriteltyjä ja sen yliluokilta perimiä metodeita ja attribuutteja. Aliluokan metodit voivat muuttaa perittyjen yliluokan metodeiden toimintaa muuttamalla olioiden tiloja. Pelkkä aliluokan metodien käyttö testauksessa ei välttämättä riitä. Ongelma voidaan ratkaista litistämällä luokka: otetaan testattavaksi luokaksi yhdistelmä aliluokasta ja sen perimistä kaikista yliluokista. Tämä voi tulla hyvin kalliiksi, jos perintähierarkia on syvä. 3 Ennen luokan testaamista sen täytyy olla valmis testattavaksi: Luokka on kirjoitettu valmiiksi: metodit on integroitu luokkaan. Luokassa ei ole testausta estäviä isoja virheitä. Luokka voidaan valmistella kahdella tavalla: Yksinkertaiset luokat voidaan valmistella kokoamalla vain metodit yhteen. Tätä sanotaan Small Pop kokoamiseksi. Monimutkaiset ja ehkä isoja virheitä sisältävät luokat valmistellaan Alfa-Omega syklillä. 4 Alfa-Omega -sykli Jokaisella oliolle voidaan määritellä kaksi virtuaalitilaa: alfa ja omega. Alfa kuvaa olion tilaa juuri ennen sen luontia. Omega kuvaa olion tilaa heti sen tuhoamisen jälkeen. Alfa-Omega syklissä oliolle suoritetaan eräänlainen savutesti suorittamalla jokainen sen metodi ainakin kerran. Jos sykli menee läpi, olion katsotaan olevan testauskelpoisessa kunnossa. 5 Alfa-Omega syklin vaiheet Testiajuri lähettää viestejä listan mukaisille metodeille seuraavassa järjestyksessä: 1. Konstruktorit: olion luonti. 2. Kapseloinnin get-metodit: lukijametodit. 3. Totuusarvoja palauttavat metodit. 4. Kapseloinnin set-metodit: kirjoittajametodit. 5. Iteraattorit: läpikäyvät metodit. 6. Destruktorit: olion tuhoaminen. Tyypin metodien suoritusjärjestys on private -> protected -> public. 6

2 ' Vastuu- ja toteutuspohjainen testaus Luokkatestaus on ennen kaikkea vastuupohjaista (responsibility-based). Luokka tarjoaa joukon palveluita eli on vastuussa siitä, että palvelut toimivat oikein. Palveluiden toiminnan ja poikkeustilanteiden hallinnan varmistus on luokkatestauksen ydin. Vastuupohjaisen testauksen tukena käytetään toteutuspohjaista (implementationbased) testausta. Siinä testitapaukset johdetaan testattavan luokan toteutuksesta. 7 Mustalaatikko- ja lasilaatikkotestaus Vastuupohjainen ja toteutuspohjainen testaus ovat Binderin termejä. Yleisemmin puhutaan kuitenkin mustalaatikko- ja lasilaatikkotestauksesta. Mustalaatikkotestauksessa testataan testattavan komponentin toiminnallisuutta. Lasilaatikkotestauksessa testataan testattavan komponentin rakennetta. Menetelmät eivät ole sidottuja luokkatestaukseen, vaan niitä voidaan käyttää kaikessa testauksessa. 8 Vastuu- ja toteutuspohjaisen testauksen testitapaukset Vastuu- ja toteutuspohjaiselle testaukselle ei tarvita erillisiä testitapauksia. Ensin suoritetaan vastuupohjaiset testit. Kun kaikki vastuupohjaiset testit on suoritettu, samoista testeistä lasketaan halutut toteutuspohjaisen testauksen kattavuudet (coverages). Jos halutut kattavuuskriteerit (coverage criteria) eivät toteudu, vastuupohjaisia testejä täydennetään sopivasti. Samalla usein löydetään puuttuneita vastuupohjaisia testejä. 9 Kattavuus ja kattavuuskriteeri Kattavuus on mittari, joka perustuu ohjelmasta tai sen osasta tehtyyn malliin. Kattavuus kertoo, miten suuren osan testitapaukset ovat testanneet mallista. Kattavuuskriteeri tarkoittaa ehtoja, mitkä testauksen on täytettävä, jotta se täyttää sitä vastaavalle kattavuudelle asetetut vaatimukset. Kattavuuskriteeri määrittelee siis, milloin kyseisen kattavuuden mukainen testaus on ollut riittävää. 10 Kattavuusesimerkki Kattavuus laajemmin Luokan metodikattavuus m voidaan määritellä esimerkiksi seuraavasti: m = M T /M, missä M on luokan metodien määrä ja M T on testitapauksissa käytyjen luokan metodien määrä. Olkoon meillä luokka C, jossa on 25 metodia. Käytetään luokan C testauksen kattavuuskriteerinä 100% metodikattavuutta. Jos meillä on testipaketti T, joka käy läpi 15 metodia, niin testipaketti T:n suorituksesta saatu metodikattavuus on m = 15/25 = 0,60, eli T antaa 60% metodikattavuuden. Testipaketti T ei täytä valittua kattavuuskriteeriä. 11 Kattavuus ei ole pelkästään toteutuspohjaisen testauksen tai edes luokkatestauksen mittari: Voimme määritellä esimerkiksi seuraavia kattavuuksia: Käyttötapauskattavuus: testeissä läpikäytyjen käyttötapausten suhde kaikkiin käyttötapauksiin. Toiminnallisten vaatimusten kattavuus: Testattujen toiminnallisten vaatimusten lukumäärän suhde kaikkiin toiminnallisiin vaatimuksiin. Tarkastuskattavuus: Tarkastuksissa läpikäytyjen dokumenttien sivumäärän suhde kaikkien tuotettujen dokumenttien sivumäärään. 12

3 ? ) 3 < K? ),,? 3 )? 3 ) ) 3? Koodikattavuus Toteutuspohjaiset kattavuudet ovat koodikattavuuksia (code coverage). Koodikattavuudessa testitapausten suorittamia ohjelman osia verrataan ohjelman lähdekoodista tehtyyn malliin. Yleisimmät koodikattavuudet ovat metoditasolla. Niissä lähdekoodista tehty malli on metodista tehty vuokaavio (control flow graph tai flow graph). Vuokaavio Vuokaavio rakennetaan seuraavasti: Kaaviolla on alkusolmu, joka vastaa metodiin tuloa (metodin otsikkoa). Alkusolmuun ei tule särmiä. Kaaviolla on joukko loppusolmuja, jotka vastaavat metodista poistumisia (return-lauseita). Loppusolmusta ei lähde särmiä. Jokaisesta metodin lauseesta tulee solmu. Jokaisesta mahdollisesta siirtymästä lauseesta toiseen tulee särmä vastaavien lauseiden solmujen välille. Ohjelmointikielen korkean tason rakenteet vaativat vuokaavioon useita solmuja ja särmiä Vuokaavio II Halutessa ehtojen atomiset lausekkeet erotellaan omiksi solmuiksi. Särmät lausekesolmujen välillä kuvaavat ehtojen suoritusjärjestystä. Jos kaaviossa on joukko peräkkäisiä solmuja, joissa ei ole haaraumia, nämä voidaan koota yhteen segmentiksi (segment). Jos kaaviossa on monta loppusolmua, näistä kannattaa liittää särmät virtuaaliseen metodin loppusolmuun L. Joskus korkean tason rakenteiden lopumista kuvataan virtuaalisella rakenteen loppusolmulla E. Vuokaaviorakenteita )+*-,.* / )+* ,.*:9 ; / 6 3!1 354 )+* <5= )+*>9 ; / 6 3!1 354, ) Vuokaaviorakenteita II 8 9 / F G ; =7@ 1 3+A * 3B * 35CD4 )E* G ) 8 3 G5A5H ) A * G ) 8 3 GIBJH ) B *5K 3+A < 30 )7L 6 F%H <+* M N 3B ) A XIY RIT-ZP[ MPO QIRPS T UIVW XIY RT Z\[ ) B 35C 17 Ei-atomisten ehtojen hajottaminen Ei-atomiset ehtorakenteet saadaan hajotettua atomisiksi seuraavilla säännöillä: / 071 3EA]J]^3B74 )+*,7* 3EA 3B / Ä I3B74 )+*,7* 3+A 3B, ) 18 (

4 h Vuokaavioesimerkki Vuokaavioesimerkki II Olkoon meillä seuraava metodi: // Kommenteissa olevat numerot ovat vastaavan vuokaavion solmujen numerot public int displaylastmsg(int ntoprint) { // 1 np = 0; // 2 if ((msgcounter > 0) && (ntoprint > 0)) { // 3 for (int j = lastmsg;((j!= 0) && (np < ntoprint));--j) { // 4;5;8 System.out.println(messageBuffer[j]); // 6 ++np; // 7 } if (np < ntoprint) { // 9 for (int j = SIZE; (( j!= 0) && (np < ntoprint)); --j) { // 10; 11; 14 System.out.println(messageBuffer[j]); // 12 ++np; // 13 } } } return np; // Metodia vastaava vuokaavio on: N O ` a b c d ikj l\monp5j qrm5s t upv vminp5j qrm5s t\w N b e Ngf NIN N>O N ` N a 20 Vuokaavioesimerkki III Entry-exit -polut Kaaviossa peräkkäisiä solmuja ilman haaraumia voidaan yhdistää segmenteiksi: (1,2), (6,7,8), (12,13,14). Atomisia lausekkeita ei ole eroteltu omiksi solmuiksi. Jos erottelu tehdään, solmut 3, 5 ja 11 jakautuvat kahdeksi solmuksi. Esimerkissä ei tarvita rakenteiden virtuaalisia loppusolmuja. Ne eivät selkeyttäisi kaaviota. Koska esimerkissä on vain yksi loppu, siinä ei tarvita virtuaalista metodin loppusolmua. 21 Vuokaavion polku (path) on reitti jostakin solmusta i johonkin solmuun j. Vuokaavion entry-exit polku (entry-exit path) on polku alkusolmusta loppusolmuun. Jokainen entry-exit polku kuvaa yhden tavan käydä metodi läpi. Kun jokin metodin testitapaus suoritetaan, se kulkee metodin läpi. Näin jokainen testitapaus käy läpi jonkin testatun metodin entry-exit poluista. 22 Polkukattavuus Entry-exit polut ovat pohjana useimmille metoditason kattavuuskriteereille. Kriteeri määritellään osajoukkona kaikista mahdollisista entry-exit poluista. Laajin kattavuus on polkukattavuus (path coverage). Siinä kattavuuskriteerinä ovat kaikki mahdolliset entry-exit polut. Kaikkien polkujen lukumäärä voi olla ääretön tai ainakin hyvin iso luku. Tämän johdosta polkukattavuutta ei käytetä testauksessa. 23 Lausekattavuus Lausekattavuus (statement coverage) on yksinkertaisin vuokaavioihin perustuva kattavuus. Se lasketaan kaavalla c = N T /N, missä c = lausekattavuus. N T = testauksessa käytyjen vuokaavion solmujen määrä. N = vuokaavion kaikkien solmujen määrä. Lausekattavuuden kattavuuskriteeri määrittelee, kuinka suuressa osassa metodin koodia tulee vähintään käydä testauksessa. 24

5 x Lausekattavuus II Lausekattavuuden heikkouksia Täydelle 100% lausekattavuudelle riittää parhaimmillaan yksi entry-exit polku, jos se käy läpi kaikki vuokaavion solmut. Edellisessä vuokaavioesimerkissä tällainen polku olisi 1,2,3,4,5,6,7,8,5,9,10,11,12,13,14,11,15. Aina ei selvitä yhdellä polulla, mutta yleensä lausekattavuus ei vaadi kovin montaa polkua. Lausekattavuus on selkeä ja helposti ymmärrettävä kattavuus, mutta sen kattavuuskriteeri on yleensä liian löysä. 25 Sellaisissa if-lauseissa, missä ei ole else-haaraa, riittää täydessä lausekattavuudessa testata ehto yhdellä true-arvolla. Sellaisissa switch-lauseissa, missä ei ole defaulthaaraa, ei tarvitse testata tilannetta, missä mikään case-haaroista ei toteudu. Riittää, että while- ja for-silmukat käydään läpi täsmälleen kerran. Täysi lausekattavuus ei vaadi sellaista testiä, missä silmukkaan ei mennä lainkaan. Moniehtolauseissa täysi lausekattavuus voidaan saavuttaa testaamalla vain yksi ehtokombinaatio. 26 Haaraumakattavuus Haaraumakattavuus II Lausekattavuutta kehittyneempi kattavuus on haaraumakattavuus (branch coverage). Se lasketaan seuraavasti: c = E T /E, missä c = haaraumakattavuus. E T = testauksessa käytyjen vuokaavion särmien määrä. E = vuokaavion kaikkien särmien määrä. Haaraumakattavuuden kattavuuskriteeri määrittelee, kuinka suuressa osassa metodin vuokaavion särmiä täytyy käydä testauksessa. 27 Täydellinen haaraumakattavuus vaatii, että jokainen vuokaavion haarautumaa täytyy seurata ainakin kerran. Edellisessä vuokaavioesimerkissä tähän päästään kolmella entry-exit polulla: 1,2,3,15. 1,2,3,4,5,6,7,8,5,9,15. 1,2,3,4,5,6,7,8,9,10,11,12,13,14,11,15. Haaraumakattavuus on hyvä ja aika yksinkertainen kattavuus, jonka kattavuuskriteeri on usein riittävän tiukka. 28 Haaraumakattavuuden heikous Haaraumakattavuuskriteerille riittää, että joillain testitapauksilla saadaan käytyä läpi kaikki haaraumat. Jos haaraumaan, kuten if-lauseeseen, liittyy monta ehtoa, niin haaraumakattavuuskriteeri vaatii vain kaksi ehtojen kombinaatiota: yhden tosi-haaralle ja yhden epätosi-haaralle. Esim. if (a!= 0 b!= 0) vaatii kaksi testitapausta: a=0 ja a!= 0. Haaraumakattavuuskriteeri ei vaadi, että b:n arvot testataan erikseen. Moniehtokattavuus Moniehtokattavuus ottaa huomioon, että ehto voi toteutua monella eri tosiepätosikombinaatiolla. Se määritellään seuraavasti: c = AE T /AE, missä c = moniehtokattavuus. AE T = testauksessa käytyjen atomisten lausekkeiden (atomic predicates) tosi- ja epätosivaihtoehtojen summa. AE = metodin kaikkien ehtojen atomisten lausekkeiden tosi- ja epätosivaihtoehtojen kombinaatioiden summa

6 y Moniehtokattavuus II Moniehtokattavuus III Moniehtokattavuuden kriteeri määrittelee, miten monta atomista tosi- ja epätosikombinaatiota täytyy saavuttaa testauksella. Kaikkien kombinaatioiden lukumäärä saadaan summaamalla kaikkien ehtojen atomisten lausekkeiden kombinaatioiden lukumäärät yhteen. Esim. edellä meillä oli if (a!= 0 b!= 0). Lauseelle saadaan 100% moniehtokattavuus neljällä tapauksella: a = 0, b = 0; a!= 0, b = 0; a = 0, b!= 0; a!=0, b!= Täydellinen moniehtokattavuus takaa, että vuokaavion kaikki solmut, särmät ja ehdot on käyty läpi testauksessa. Moniehtokattavuus on tehokas työkalu, mutta se vaatii paljon. Jos meillä on n atomista tosiepätosilauseketta, niin tarvitaan 2 n testiä saavuttamaan 100% moniehtokattavuus. Aina ei päästä 100% moniehtokattavuuteen. Esim. if (a<0 a > 10) vaatii tapauksen, missä a<0 ja a>10, mikä on mahdottomuus. 32 Peruspolkukattavuus Peruspolkukattavuus (basis-path coverage) perustuu entry-exit polkuihin: c = IP T /IP, missä c = peruspolkukattavuus. IP T = testauksessa läpikäytyjen riippumattomien polkujen (independent paths) määrä IP = metodin kaikkien riippumattomien polkujen määrä. Riippumaton polku on sellainen entry-exit polku, jota ei saada lineaarisena kombinaationa muista riippumattomista poluista. 33 Riippumattomat polut Riippumattomat polut saadaan vuokaaviosta seuraavalla algoritmilla. 1. Merkitään kaikki solmut ja särmät käymättömiksi. 2. Etsitään lyhin entry-exit polku, jossa on ainakin yksi merkitsemätön solmu tai särmä. Lisätään polku riippumattomien polkujen joukkoon ja merkitään sen solmut ja särmät käydyiksi. 3. Jatketaan etsintää, kunnes vuokaavion kaikki solmut ja särmät on merkitty käydyiksi. Riippumattomien polkujen määrä: C = e n + 2, missä C = syklomaattinen monimuotoisuus (cyclomatic complexity) e = vuokaavion särmien määrä n = vuokaavion solmujen määrä Kaava vaatii, että vuokaaviossa on vain yksi loppusolmu. 34 Vuokaavioesimerkin riippumattomat polut Aiemmasta vuokaavioesimerkistä saadaan algoritmilla seuraavat riippumattomat polut: 1,2,3,15 1,2,3,4,5,9,15 1,2,3,4,5,9,10,11,15 1,2,3,4,5,6,7,8,5,9,15 1,2,3,4,5,9,10,11,12,13,14,11,15 Kaikille poluille ei välttämättä saada tehtyä testiaineistoa. Tällöin polku täytyy testata osana jotain toista polkua. 35 Peruspolkutestaus ja vuokaaviot Kattavaan peruspolkutestaukseen vaaditaan, että vuokaavion ehdot hajotetaan atomisiksi ehdoiksi. Hajottamalla riippumattomien polkujen määrä vuokaaviossa lisääntyy. Samalla täydelliseen riippumattomien polkujen kattavuuteen liittyy vaatimus, että jokainen mahdollinen atomisten ehtojen kombinaatio tullaan testaamaan ainakin kerran. 36

7 z Peruspolkutestauksen idea Peruspolkutestauksen idea on vähentää testattavien polkujen määrää litistämällä silmukat nollaksi ja yhdeksi kierrokseksi. Idea toimii, jos peruspoluista johdetaan testitapaukset. Sen sijaan ongelmia syntyy, jos suoritetuista testitapauksista päätellään käydyt riippumattomat polut. Jokainen testi suorittaa jonkin entry-exit polun, mutta se ei todennäköisesti ole mikään todetuista riippumattomista poluista. 37 Peruspolkutestaus ja testitapaukset Usein käytetty ratkaisu suoritettujen polkujen ja riippumattomien polkujen väliseen yhteyteen on sopia, että testitapauksen suorituksen sisältämä pisin riippumaton polku on katettu testitapauksella. Joka tapauksessa yksi testitapaus ei voi kattaa enempää kuin yhden riippumattoman polun. Näin ollen täydellisen peruspolkutestauksen testipaketissa on oltava vähintään yhtä monta testitapausta kuin vuokaaviossa on riippumattomia polkuja. 38 Silmukkakattavuus Yksinkertaiset silmukat Jos silmukalla on kiinteä määrä iteraatioita, sille riittää yksi silmukan läpi kulkeva testi. Jos silmukalla ei ole kiinteää määrää iteraatioita, sille tarvitaan ainakin kaksi testiä: 0 iteraatiokerrosta, silmukassa ei käydä lainkaan 1 iteraatiokierros, silmukka litistetään Lisäksi suositellaan seuraavia testejä: minimi iteraatiokierrosta, minimi voi olla 0 minimi+1 iteraatiokierrosta maksimi iteraatiokierrosta, jos maksimi tiedetään Silmukkakattavuus (covering iteration) perustuu silmukan suorittaviin entry-exit -polkuihin. Polut riippuvat silmukan tyypistä. Silmukoita on neljää tyyppiä: Yksinkertaiset silmukat: silmukalla on yksi sisääntulo- ja yksi poistumispiste. Sisäkkäiset silmukat: monta yksinkertaista silmukkaa sisäkkäin. Peräkkäiset silmukat: monta silmukkaa samalla entry-exit -polulla. Spagettisilmukat: silmukalla on useita sisääntuloja/tai poistumispisteitä Yksinkertaiset silmukat II Sisäkkäiset silmukat Täydelliseen yksinkertaisten silmukoiden testaukseen tarvitaan lisäksi seuraavat testit: minimi-1 kierrosta, jos mahdollista maksimi-1 kierrosta, jos maksimi tunnetaan maksimi+1 kierrosta tyypillinen kierrosmäärä iteroitavasta koodista johdettava määrä iteraatioita iteroitavassa koodissa voi olla iteraation raja-arvoja (boundaries) tai sisäisiä erikoistapauksia (interior points), joissa silmukan toiminta vaihtuu. Tällöin silmukka pitää testata myös poikkeusarvojen ympärillä olevien kierrosten lukumäärä. 41 Täydellinen sisäkkäisten silmukoiden testaus vaatisi vähintään 2 n testiä, missä n on sisäkkäisten silmukoiden määrä. Sisäkkäiset silmukat testataankin näin: 1. Testataan sisäkkäisin silmukka ensin yksinkertaisena silmukkana. Asetetaan muille silmukoille minimiarvot. 2. Kiinnitetään testatulle silmukalle sopiva arvo. 3. Testataan seuraavaksi sisäkkäisin silmukka. 4. Toistetaan vaiheita 2-3, kunnes uloin silmukka on testattu. 42

8 Peräkkäiset silmukat Jos peräkkäiset silmukat ovat toisistaan riippumattomia, ne testataan erikseen yksinkertaisina silmukoina. Jos peräkkäisillä silmukoilla on jokin riippuvuussuhde, ne testataan yhdessä samalla tavalla kuin sisäkkäiset silmukat. Riippuvuussuuhde tarkoittaa, että jälkimmäisen silmukan iteraatiokierrosten määrä riippuu edellisen kierroksen iteraatioista. Peräkkäisistä silmukoista testaatan ylin ensin. Muut silmukat Spagettisilmukoita ei ole mahdollista testata järkevästi. Ne voidaan aina suunnitella ja toteuttaa muilla silmukkatyypeillä, testauksen sijaan ne pitää suunnitella ja koodata uudestaan. Kiinteät silmukat ovat erikoistapauksia yksinkertaisista silmukoista. Niissä iteraatioiden määrä on vakio (minimi ja maksimi ovat sama luku). Nämä testataan yhdellä silmukan läpi kulkevalla testillä Tietovuokattavuus Tietovuokattavuus (data flow coverage) perustuu huomioon, että entry-exit -polussa on jonoja muuttujiin kohdistuvia toimintoja. Jos jossain tällaisessa jonossa on virhe, mutta jonon sisältävää polkua ei suoriteta minkään testitapauksen osana, niin testauksessa ei luultavasti löydetä virhettä. Tietovuotestauksessa (data flow testing) pyritään tunnistamaan ja testaamaan tällaisia muuttujiin kohdistuvia toimintoja. 45 Muuttujan toiminnot Jokaiselle muuttujalle voidaan määritellä kolmenlaisia toimintoja: Muuttuja voidaan määritellä (define). Tällöin muuttuja luodaan tai muuttujan arvo vaihtuu. Näitä sanotaan D-toiminnoiksi. Muuttujaa voidaan käyttää (use). Tällöin muuttujan arvo luetaan. Näitä sanotaan U- toiminnoiksi. Muuttuja voidaan tuhota (kill). Tällöin muuttujalle varattu tila vapautetaan muistista. Muuttuja ei ole enää käytettävissä. Näitä sanotaan K-toiminnoiksi. 46 Muuttujan toimintoparit All-uses -tietovuokattavuus Ottamalla jonkun muuttujan suhteen toimintopareja, saadaan muuttujaan kohdistuvia kaksitoimintoisia jonoja. Toimintojen välissä ei ole muita samaan muuttujaan kohdistuvia toimintoja. -D: muuttuja luodaan (- tarkoittaa, että toimintoa ei ole) DU: muuttuja luodaan ja sitä käytetään K-: muuttuja tuhotaan KD: muuttuja tuhotaan ja luodaan heti uudestaan UD: muuttujaa käytetään ja sitten tuhotaan jne. 47 Kun edelliset toimintaparit yleistetään kuvaamaan parin sisältävää entry-exit - polkua, saadaan tietovuokattavuuskriteerejä: all-uses -kattavuus: Jokaista DU-paria kohti testaan ainakin yksi parin sisältävä entry-exit - polku. Jos tietystä määritelmästä D menee monta eri polkua tiettyyn käyttöön U, näistä riittää valita yksi. Tämä on osoittautunut riittävän vahvaksi kattavuuskriteeriksi. all-du-paths -kattavuus: Jokaista DU-paria kohti testataan kaikki parin sisältävät entry-exit -polut. 48 {

9 Polunherkistys Manuaalinen polunherkistys Polunherkistys (path sensitization) tarkoittaa prosessia, missä selvitetään, millä metodin syötteillä ja paikallisten muuttujien arvoilla saadaan suoritettua tietty polku. Jos polunherkistys onnistuisi kaikille poluille, niin sen avulla voitaisiin täysin automatisoida kaikki polkuihin perustuvat testit. Valitettavasti on osoitettu, että ongelmalle ei ole olemassa yleistä ratkaisua. Jokainen tapaus olisi käsiteltävä erikseen. 49 Polunherkistys vaatii heuristiikan: sarjan päätöksiä. Seuraava algoritmi toimii usein: 1. Tarkista vastuupohjaisten testitapausten polut. Nämä yleensä kattavat suurimman osan tarvittavista poluista. Katso jääkö jokin ilmeinen käsittelemättömän polun herkistävä kombinaatio käsittelemättä. 2. Valitse herkistettävä polku. Etsi testitapaus, joka herkistää osan polusta. Etsi polulta haarauma, missä testiapaus ei enää seuraa haluttua polkua. Muuta syötettä mahdollisuuksien mukaan sellaiseksi, että haaraumasta jatketaan oikein. 50 Manuaalinen polunherkistys II Mahdottomat polut 3. Jos yksikään lasketuista poluista ei näytä osuvan lähelle haluttua polkua, listaa polulla olevat predikaatit (haaraumien atomiset ehdot). 4. Jos vaan mahdollista, vältä sellaisia polkuja, missä predikaatit lasketaan polun suoritusaikana. Jos jokin arvo on pakko laskea polun suoritusaikana, selvitä mahdollisuuksien mukaan alkuehdot, mistä muuttujalle saadaan haluttu tulos. 5. Aloita etsintä polun alusta tai lopusta. Seuraa polkua etsien predikaatit toteuttavia arvoja. Tarpeen vaatiessa palaa takaisin (tai luovuta). 51 Manuaalinenkaan polunherkistys ei välttämättä löydä syötteitä kaikille poluille: Joskus predikaatit ovat niin solmussa keskenään, että sopivien syötteiden arvojoukot ovat tyhjiä. Toisin sanottuna vaikka polun logiikka näyttää oikealta, mikään syötekombinaatio ei toteuta sitä. Joskus ohjelmassa on kuollutta koodia tai mahdottomia haaraumia joko suunnitteluvirheen takia tai tarkoituksella. Esim. seuraava koodi estää 100% haaraumakattavuuden (miksi?): while (true) { /* koodia */ if (lopetus()) return; } 52 Arvoalueanalyysi Avoimet ja suljetut rajaehdot Testausta ei voida tehdä ilman testitapausten syötteiden valintaa. Arvoalueanalyysi (Domain analysis) on suoraviivainen ja tehokas tapa valita syötteet. Arvoalue (domain) on kaikkien testattavan kohteen syötteiden joukko. Osa-arvoalue (subdomain) on rajaehdon (boundary condition) määrittämä osajoukko arvoalueesta. Arvoalueanalyysissa arvoalue ositetaan Rajehto on avoin (open), jos se voidaan esittää aitona epäyhtälönä. Rajaehto on suljettu (closed), jos se ei ole avoin. Avoimilla ehdoilla määritelty osa-arvoalue vastaa matematiikan avointa väliä: ]a,b[. Suljetuilla ehdoilla määritelty osa-arvoalue vastaa matematiikan suljettua väliä: [a,b]. Jos osa-arvoalueessa on sekä avoimia että suljettuja ehtoja, se vastaa matematiikan puoliavointa väliä: [a,b[ tai ]a,b]. tunnetuilla rajaehdoilla osa-arvoalueiksi

10 Arvoaluetestaus Arvoaluetestausesimerkki Arvoaluetestaus (domain testing) perustuu vikamalliin, missä testattavan kohteen yksi tai useampi rajaehto on toteutettu väärin. Vastaava testaustrategia on testata kaikki osa-arvoalueet erityisesti osa-arvoalueen reunoilla olevilla arvoilla. Arvoaluetestaus aloitetaan selvittämällä testattavan kohteen arvoalue, osittamalla arvoalue osa-arvoalueiksi ja selvittämällä kunkin arvoalueen rajaehdot. 55 Olkoon meillä kokoelmaluokka korkeintaan 4096:lle alkiolle (esimerkiksi taulukko). Olkoon n kokoelmaluokassa olevien alkioiden määrä. Oletetaan, että luokka hyväksyykin vain 4095 alkiota ( koodissa on n<4096 eikä n<=4096). Kokoelmaluokan arvoalue on kokoelmaluokan alkioiden määrä: [0..MAX], missä MAX=suurin mahdollinen kokonaisluku. Kokoelmaluokan arvoalue jakautuu ainakin kahteen osa-arvoalueeseen: 0 <= n <= 4096 ja n > Kokoelmaluokan osa-arvoalueen rajaehto on n<= Arvoaluetestausesimerkki II On-, off-, in- ja out-pisteet Kokoelmaluokan vikamalli on, että rajaehto n <= 4096 on toteutettu väärin. Kokoelmaluokan vikamallin mukainen testausstrategia on testata kokoelmaluokkaa ainakin 4095:lla, 4096:lla ja 4097:lla alkiolla. Tuloksena saadaan, että kokoelmaluokka on toteuttanut rajehdon n<=4096 väärin. Kokoelmaluokassa on toinenkin rajehto: n>=0. Myös tämä ehto pitäisi testata. Sen testaamiseksi testataan tyhjä kokoelmaluokka (n=0) ja yhden alkion kokoelmaluokka (n=1). 57 Arvoaluetestauksen testiarvojen valintakriteerit perustuvat on- ja off-pisteisiin. on-piste (on-point) on osa-arvoalueen rajalla oleva piste. Rajat saadaan rajaehdoista. off-piste (off-point) on osa-arvoalueen rajan ulkopuolella oleva piste. in-piste (in-point) toteuttaa osa-arvoalueen kaikki rajaehdot eikä ole rajalla. out-piste (out-point) ei toteuta mitään osaarvoalueen rajehdoista eikä ole rajalla. Pisteiden valinta riippuu rajaehdon avoimuudesta X 1 -arvoaluetestaus 1 X 1 -arvoaluetestaus II 1 X 1 ( one-by-one ) arvoaluetestausstrategia valitsee kunkin rajaehdon kohdalta vähintään yhden on-pisteen ja yhden off-pisteen. Pisteiden valintastrategia on seuraava: Jokaista osa-alueen relaatio-operaattorilla määriteltyä rajaehtoa kohti valitaan yksi on-piste ja yksi off-piste. Pisteiden tulee olla mahdollisimman lähellä osa-arvoalueen rajaa. Relaatio-operaattoreita ovat ainakin <, <=, > ja >= 59 Jokaista osa-alueen yhtäsuuruusoperaattorilla määriteltyä rajaehtoa kohti valitaan yksi on-piste ja kaksi off-pistettä. off-pisteet valitaan mahdollisimman läheltä molemmilta puolilta rajaa. Jokaista ei-skalaarista tyyppiä kohti valitaan yksi on-piste ja yksi off-piste. Valittujen arvojen tulee olla mahdollisimman lähellä toisiaan. Jokaista epälineaarista rajaehtoa kohti (esim. ehto y < x 2-2) valitaan yksi on-piste ja yksi off-piste Viereisten osa-alueiden testauksessa käytetään mahdollisuuksien mukaan samoja pisteitä ja testejä. 60 & }

11 Testauksen suunnittelumallit Metoditason suunnittelumallit Suunnittelumalli (design pattern) on yleistetty ratkaisu toistuvasti esiintyvään suunitteluongelmaan. Myös testaus on suunnittelua, ja myös siinä toistuvat samat ongelmat. Testauksen suunnittelumalli (test design pattern) tarjoaa yleistetyn ratkaisun johonkin testaukseen liittyvään ongelmaan. Binder esittää kirjassaan 37 testauksen suunnittelumallia. 61 Metoditasolla Binder määrittelee seuraavat testauksen suunnittelumallit: Category-partition Syötteiden ja tulosteiden arvoalueanalyysiin perustuva testipaketin suunnittelu. Combinational Function Päätöstauluihin perustuva testipaketin suunnittelu. Recursive Function Rekursiivisen funktion testipaketin suunnittelu. Polymorphic Message Polymorfisia parametreja vastaanottavan palvelimen asiakkaan testipaketin suunnittelu. 62 Luokkatason suunnittelumallit Luokkatason suunnittelumallit II Luokkatasolla Binder määrittelee seuraavat testauksen suunnittelumallit: Invariant Boundaries Vaikeasti hallittavien kompleksisten arvoalueiden testipaketin suunnittelu. Nonmodal Class Tilattomien luokkien testitapausten suunnittelu (olion toiminta ei riipu sen tilasta). Modal Class Tilaperustaisten luokkien testitapausten suunnittelu (olion toiminta riippuu sen tilasta). 63 Quasi-modal Class Näennäistilaluokkien testitapausten suunnittelu (näennäistilaluokka: olion toiminta riippuu olion hallitsemista tiedoista; esim. kokoelmaluokat ovat näennäistilaluokkia). Small pop ja Alpha-Omega Cycle Koodauksen ja testauksen suhde luokka- ja metoditasolla. Polymorphic Server Polymorfisia viestejä hyväksyvän palvelimen testaus. Modal Hierarchy Tilaperustaisten luokkien testaus, kun osa tiloista ja siirtymistä peritään yliluokilta. 64 Testauksen suunnittelumalliesimerkki Kaikkien, tai edes tärkeimpien, testauksen suunnittelumallien käsittely veisi liikaa aikaa. Esimerkkinä käsittelen Category-Partition - testauksen suunnittelumallin. Testauksen suunnittelumallien rakenne on: tavoite: tuotettava testipaketti, sisältö: ratkaistava testausongelma, vikamalli: löydettävät ongelmat, strategia: testipaketin suunnittelu- ja toteutustapa, Alkuehto: mitä vaaditaan ennen mallin käyttöä ja Category-Partition Tavoite Suunnittella metodin syötteiden ja tulosteiden analyysiin perustuva metodin testipaketti. Sisältö Joskus metodit tarjoavat useita palveluita, jotka pitää testata erikseen. Jos metodi on suunniteltu hyvin, palvelut voidaan aina erottaa toisistaan syöteparametrien ja luokan attribuuttien arvojen avulla. Category-Partition -mallia käyttämällä tällaiset hyvin käyttäytyvät monta palvelua tarjoavat metodit voidaan testata systemaattisesti. Menetelmä sopii myös yhden palvelun metodeille. Loppuehto: milloin mallin mukainen testaus on ok & &

12 Category-Partition II Category-Partition III Vikamalli Viat liittyvät syötteiden kombinaatioihin, jolloin virheellinen syötekombinaation tulkinta synnyttää väärän tuloksen. Strategia Toimi seuraavasti: 1. Tunnista testattavan metodin toiminnot. 2. Tunnista kunkin testattavan toiminnon syöte- ja tulosparametrit Osita kunkin syöteparametrin arvojoukko sopiviksi toisistaan erillään oleviksi osa-arvojoukoiksi. Tee ositus sellaiseksi, että metodin toiminta on kaikilla osaarvojoukon alkioilla samanlaista. 4. Valitse kustakin osa-arvojoukosta joukko testiarvoja esimerkiksi 1 X 1 -menetelmällä. Pyri valitsemaan arvoja sekä osa-arvojoukon keskeltä että reunoilta. 5. Ota huomioon sellaiset valittujen arvojen väliset yhteydet, jotka voivat vaikuttaa testien suoritusjärjestykseen. 6. Generoi jokaista valittujen arvojen kombinaatiota kohti testitapaus. 7. Tee jokaiselle testitapaukselle oraakkeli, jolla testaat testin hyväksymisehdot. 68 Category-Partition III Alkuehto Small Pop Loppuehto Kaikkien syöteparametrien valittujen arvojen kombinaatiot on testattu ainakin kerran. Jokainen metodin generoima poikkeus on testattava ainakin kerran. Testauksessa tulee päästä 100% haaraumakattavuuteen tai perustella, miksi siihen ei päästy. 69 Category-Partition -esimerkki Olkoon meillä metodi, joka tulostaa saamansa tunnisteen id perusteella virheilmoituksen ja lisää siihen perään annetun merkkijonon extra. Lailliset id:n arvot ovat väliltä 0-9. extra voi olla mikä tahansa merkkijono. Tehdään metodille C-P:n mukaiset testitapaukset. Metodin määrittely on seuraava: void error(int id, String extra); 70 Category-Partition -esimerkki II Category-Partition -esimerkki III 1. error-metodilla on yksi palvelu: tulosta virheilmoitus. 2. syöteparametrit ovat int id ja String extra, tulosparametreja ei ole. 3. id voidaan osittaa osa-arvoalueiksi seuraavasti: Kaikkia laittomia arvoja varten yksi luokka. Luokan alkiot eivät vastaa mitän virheilmoitusta Jokaista laillista arvoa kohti yksi luokka. vastaavasti extra voidaan osittaa seuraavasti: null-parametrista yksi luokka. Muista merkkijonoista yksi luokka Valitaan id:n osa-arvoalueiden testiarvoiksi yksi laiton arvo ja jokainen laillinen arvo. Valitaan extran testiarvoiksi null ja satunnainen merkkijono. 5. Testiarvojen välillä ei ole rajoituksia. 6. Valitaan testitapaukset: error(-1,null); error(-1, random ); error(1,null); error(1, random );... error(9,null); error(9, random ); 7. Kirjoitetaan oraakkeli, joka varmistaa, että testeillä saadut virheilmoitukset ovat oikein. 72 &~'

Luokkatestauksen piirteitä: metodit. 4. Luokkatestaus (B, 10) Luokkatestauksen piirteitä: yliluokat. Luokan valmistelu. Alfa-Omega syklin vaiheet

Luokkatestauksen piirteitä: metodit. 4. Luokkatestaus (B, 10) Luokkatestauksen piirteitä: yliluokat. Luokan valmistelu. Alfa-Omega syklin vaiheet 4. Luokkatestaus (B, 10) Luokkatestaus on matalimman tason testausta. Siinä testataan yksittäisiä luokkia tai ryppäitä (clusters). Ryväs on joukko vahvasti toisiinsa sitoutuneita luokkia. Pieniä ryppäitä

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

Lisätiedot

Dynaaminen analyysi III

Dynaaminen analyysi III Dynaaminen analyysi III Luento 8 Antti-Pekka Tuovinen 16 April 2013 1 Tavoitteet White box testitapausten suunnittelutekniikat Lausekattavuus Haarautumakattavuus Ehto- ja polkukattavuus Huomioita white

Lisätiedot

Kombinaatiotestauksen tekniikat. 5. Kombinaatiotestaus (P&Y: 11) Luokittelutestauksen algoritmi. Luokittelutestaus. Pankkiautomaattiin kirjautuminen

Kombinaatiotestauksen tekniikat. 5. Kombinaatiotestaus (P&Y: 11) Luokittelutestauksen algoritmi. Luokittelutestaus. Pankkiautomaattiin kirjautuminen Ohjelmistojen testaus luentokalvot 5. Kombinaatiotestaus (P&Y: 11) Toiminnallinen määrittely palvelee hyvin erilaisia sidosryhmiä, joista testaajat ovat vain yksi. Näin määrittely ei yleensä ole sellaisessa

Lisätiedot

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen www.cs.helsinki.fi 16 April 2018 1 Tavoitteet White box testitapausten suunnittelutekniikat Lausekattavuus Haarautumakattavuus Ehto- ja polkukattavuus

Lisätiedot

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

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testausdokumentti Kivireki Helsinki 17.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Anu Kontio Ilmari

Lisätiedot

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa:

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa: Testaus käsite Sekalaista asiaa Sami Kollanus 15.11.2006 Jos ajatellaan, että = V&V, voidaan erottaa: Staattinen Dynaaminen Toisaalta voidaan määritellä Myersin (1979) mukaan: Testaus on ohjelman suoritusta,

Lisätiedot

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmiston testaus ja laatu. Testausmenetelmiä Ohjelmiston testaus ja laatu Testausmenetelmiä Testausmenetelmiä - 1 Testauksen menetelmien päälähestymistapoina ovat black-box testi testaaja ei voi tutkia lähdekoodia testaus perustuu sovellukselle suunnitteluvaiheessa

Lisätiedot

5. Kombinaatiotestaus (P&Y: 11)

5. Kombinaatiotestaus (P&Y: 11) 5. Kombinaatiotestaus (P&Y: 11) Toiminnallinen määrittely palvelee hyvin erilaisia sidosryhmiä, joista testaajat ovat vain yksi. Näin määrittely ei yleensä ole sellaisessa muodossa, että siitä voidaan

Lisätiedot

Ohjelmistotuotanto, s2001 2/27/2003

Ohjelmistotuotanto, s2001 2/27/2003 2. Rakenteellinen testaus (white-box) Ohjelmistotuotanto Ohjelmistojen testaus 2 Rakenteellinen testaus perustuu ohjelman rakenteen hyväksikäyttöön tieto- ja kontrollivuoesityksiin tietovuo (data flow)

Lisätiedot

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

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testaussuunnitelma PULSU Syksy 2008 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (9 op) Projektiryhmä Heikki Manninen Noora Joensuu

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

Ohjelmistotuotanto, s

Ohjelmistotuotanto, s Rakenteellinen testaus (white box) Ohjelmistotuotanto Testaus Rakenteellinen testaus perustuu ohjelman rakenteen hyväksikäyttöön - tieto ja kontrollivuoesityksiin tietovuo (data flow) - tiedon kulku kontrollivuo

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi. Verifiointi- ja validointitekniikat. Verifiointi- ja validointitekniikat II

Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi. Verifiointi- ja validointitekniikat. Verifiointi- ja validointitekniikat II 7. Verifiointi ja validointi Verifiointi ja validointi (V&V) on ohjelmistotuotannon työvaihe, missä varmistetaan, että ohjelmisto täyttää sille asetetut implisiittiset ja eksplisiittiset vaatimukset ja

Lisätiedot

Testaussuunnitelma Labra

Testaussuunnitelma Labra Testaussuunnitelma Labra Helsinki 25.8.2008 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 1 Kurssi 581260 Ohjelmistotuotantoprojekti (9+1op) Projektiryhmä Anssi Kapanen,

Lisätiedot

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

Lähdekoodin suorituksen malli. 2. Äärelliset mallit (P&Y: 5) Ohjausvuokaaviot. Atomiset ehdot OVK:ssa. Atomiset ehdot

Lähdekoodin suorituksen malli. 2. Äärelliset mallit (P&Y: 5) Ohjausvuokaaviot. Atomiset ehdot OVK:ssa. Atomiset ehdot 2. Äärelliset mallit (P&Y: 5) Malli (model) on kuvaus, joka on kuvattavaa kohdetta yksinkertaisempi, mutta joka säilyttää (mahdollisimman hyvin) mallinnettavan kohteen tarkasteltavat ominaisuudet. Hyvä

Lisätiedot

2. Äärelliset mallit (P&Y: 5)

2. Äärelliset mallit (P&Y: 5) 2. Äärelliset mallit (P&Y: 5) Malli (model) on kuvaus, joka on kuvattavaa kohdetta yksinkertaisempi, mutta joka säilyttää (mahdollisimman hyvin) mallinnettavan kohteen tarkasteltavat ominaisuudet. Hyvä

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

58160 Ohjelmoinnin harjoitustyö

58160 Ohjelmoinnin harjoitustyö 58160 Ohjelmoinnin harjoitustyö Testaus 30.3.2009 Tuntiop. Sami Nikander sami.nikander@helsinki.fi 58160 Ohjelmoinnin harjoitustyö, Sami Nikander 30.3.2009 1 Testaus Ohjelman systemaattista tutkimista

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

1. Mitä tehdään ensiksi?

1. Mitä tehdään ensiksi? 1. Mitä tehdään ensiksi? Antti Jussi i Lakanen Ohjelmointi 1, kevät 2010/ Jyväskylän yliopisto a) Etsitään Googlesta valmis algoritmi b) Mietitään miten itse tehtäisiin sama homma kynällä ja paperilla

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 24.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 24.1.2011 1 / 36 Luentopalaute kännykällä alkaa tänään! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

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

Testaussuunnitelma. Opeapuri. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testaussuunnitelma Opeapuri Helsinki 2.4.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Krister Eklund

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

Lisätiedot

Olio-ohjelmointi Syntaksikokoelma

Olio-ohjelmointi Syntaksikokoelma C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja

Lisätiedot

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

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä. Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä. JUnit-ympäristö 1. Luo tests -pakkaukseen uusi luokka. Nimeä VHTestit. 2. Laita VHTestit periytymään TestCase:sta

Lisätiedot

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

1 Tehtävän kuvaus ja analysointi

1 Tehtävän kuvaus ja analysointi Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A. Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta

Lisätiedot

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta 811312A Tietorakenteet ja algoritmit 2017-2018 Kertausta kurssin alkuosasta II Perustietorakenteet Pino, jono ja listat tunnettava Osattava soveltaa rakenteita algoritmeissa Osattava päätellä operaatioiden

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

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

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Convergence of messaging

Convergence of messaging Convergence of messaging Testaussuunnitelma The Converge Group: Mikko Hiipakka Anssi Johansson Joni Karppinen Olli Pettay Timo Ranta-Ojala Tea Silander Helsinki 20. joulukuuta 2002 HELSINGIN YLIOPISTO

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tällä luennolla Algebralliset tietotyypit Hahmonsovitus (pattern matching) Primitiivirekursio Esimerkkinä binäärinen hakupuu Muistattehan...

Lisätiedot

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari Tehtävä 9 : 1 Merkitään kirjaimella G tehtäväpaperin kuvan vasemmanpuoleista verkkoa sekä kirjaimella H tehtäväpaperin kuvan oikeanpuoleista verkkoa. Kuvan perusteella voidaan havaita, että verkko G on

Lisätiedot

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö Algoritmit 1 Luento 13 Ti 23.2.2016 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

Dynaaminen analyysi I

Dynaaminen analyysi I Dynaaminen analyysi I Luento 6 Antti-Pekka Tuovinen 4 April 2013 1 Tavoitteet Testitapausten suunnittelun ja suorituksen perusteet Black-Box testitapausten suunnittelu Ekvivalenssiluokat Raja-arvo (reuna-arvo)

Lisätiedot

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

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } } Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisätiedot

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö Algoritmit 2 Luento 7 Ti 4.4.2017 Timo Männikkö Luento 7 Joukot Joukko-operaatioita Joukkojen esitystapoja Alkiovieraat osajoukot Toteutus puurakenteena Algoritmit 2 Kevät 2017 Luento 7 Ti 4.4.2017 2/26

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017

Lisätiedot

Johdatus graafiteoriaan

Johdatus graafiteoriaan Johdatus graafiteoriaan Syksy 2017 Lauri Hella Tampereen yliopisto Luonnontieteiden tiedekunta 62 Luku 2 Yhtenäisyys 2.1 Polku 2.2 Lyhin painotettu polku 2.3 Yhtenäinen graafi 2.4 Komponentti 2.5 Aste

Lisätiedot

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1 11. Javan valintarakenteet 11.1 Sisällys If- ja if--lauseet. Orpo. Valintaa toisin: switch-lause. 11.2 Valintarakenteet Valintarakenteilla ilmaistaan formaalisti, kuinka algoritmin suoritus voi haarautua

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019

Lisätiedot

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

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Lisää pysähtymisaiheisia ongelmia

Lisää pysähtymisaiheisia ongelmia Lisää pysähtymisaiheisia ongelmia Lause: Pysähtymättömyysongelma H missä H = { w111x w validi koodi, M w ei pysähdy syötteellä x } ei ole rekursiivisesti lueteltava. Todistus: Pysähtymisongelman komplementti

Lisätiedot

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Duaalisuus kokonaislukuoptimoinnissa. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

Duaalisuus kokonaislukuoptimoinnissa. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki Duaalisuus kokonaislukuoptimoinnissa Mat-2.4191, Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki Sisältö Duaalisuus binäärisissä optimointitehtävissä Lagrangen duaalisuus Lagrangen

Lisätiedot

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko, Tehtävä 1 : 1 a) Olkoon G heikosti yhtenäinen suunnattu verkko, jossa on yhteensä n solmua. Määritelmän nojalla verkko G S on yhtenäinen, jolloin verkoksi T voidaan valita jokin verkon G S virittävä alipuu.

Lisätiedot

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu 811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,

Lisätiedot

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

Algoritmit 1. Luento 13 Ma Timo Männikkö

Algoritmit 1. Luento 13 Ma Timo Männikkö Algoritmit 1 Luento 13 Ma 26.2.2018 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

Lisätiedot

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Vastaavuus puolestaan on erikoistapaus relaatiosta.

Lisätiedot

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

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 25.1.2010 1 / 41 Valintakäsky if Tähänastiset ohjelmat ovat toimineen aina samalla tavalla. Usein ohjelman pitäisi

Lisätiedot

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

Lisätiedot

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

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Graafit ja verkot Suuntamaton graafi: eli haaroja Joukko solmuja ja joukko järjestämättömiä solmupareja Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Haaran päätesolmut:

Lisätiedot

Hohde Consulting 2004

Hohde Consulting 2004 Luento 5: XQuery AS-0.110 XML-kuvauskielten perusteet Janne Kalliola XQuery XQuery uudet funktiot sekvenssit muuttujat Iterointi järjestys suodatus järjestäminen Ehtorakenteet Muita toimintoja www.hohde.com

Lisätiedot

Ohjelmistotuotantoprojekti

Ohjelmistotuotantoprojekti Ohjelmistotuotantoprojekti Ryhmä Muppett TESTAUSDOKUMENTTI Helsinki 5.8.2008 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti, kesä 2008 Projekti: Muutos- ja korjauspyyntöjen

Lisätiedot

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

TIE448 Kääntäjätekniikka, syksy 2009. Antti-Juhani Kaijanaho. 7. joulukuuta 2009

TIE448 Kääntäjätekniikka, syksy 2009. Antti-Juhani Kaijanaho. 7. joulukuuta 2009 TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 7. joulukuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe F maanantai 14.12. klo 12 rekisteriallokaatio Arvostelukappale

Lisätiedot

Funktiot. funktioita f : A R. Yleensä funktion määrittelyjoukko M f = A on jokin väli, muttei aina.

Funktiot. funktioita f : A R. Yleensä funktion määrittelyjoukko M f = A on jokin väli, muttei aina. Funktiot Tässä luvussa käsitellään reaaliakselin osajoukoissa määriteltyjä funktioita f : A R. Yleensä funktion määrittelyjoukko M f = A on jokin väli, muttei aina. Avoin väli: ]a, b[ tai ]a, [ tai ],

Lisätiedot

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio Ellipsoidimenetelmä Kokonaislukuoptimointi Sovelletun matematiikan lisensiaattiseminaari Kevät 2008 / 1 Sisällys Ellipsoidimenetelmän geometrinen perusta ja menetelmän idea Formaali ellipsoidimenetelmä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2 Johdatus diskreettiin matematiikkaan Harjoitus 4, 7.10.2015 1. Olkoot c 0, c 1 R siten, että polynomilla r 2 c 1 r c 0 on kaksinkertainen juuri. Määritä rekursioyhtälön x n+2 = c 1 x n+1 + c 0 x n, n N,

Lisätiedot

Reaalilukuvälit, leikkaus ja unioni (1/2)

Reaalilukuvälit, leikkaus ja unioni (1/2) Luvut Luonnolliset luvut N = {0, 1, 2, 3,... } Kokonaisluvut Z = {..., 2, 1, 0, 1, 2,... } Rationaaliluvut (jaksolliset desimaaliluvut) Q = {m/n m, n Z, n 0} Irrationaaliluvut eli jaksottomat desimaaliluvut

Lisätiedot

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.

Lisätiedot

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

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

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1 11. Javan valintarakenteet 11.1 Sisällys If- ja if-else-lauseet. Orpo else. Valintaa toisin: switch-lause. 11.2 If-lause Merkitään varatulla sanalla if. Kuvaa yksisuuntaisen päätöksen: rakenteen lauseet

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

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

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =

Lisätiedot

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Tietorakenteet, laskuharjoitus 7, ratkaisuja Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9

Lisätiedot

Ohjelmistojen testaus

Ohjelmistojen testaus Ohjelmistojen testaus Juha Taina 1. Johdanto (P&Y:1-4) Kurinalainen insinöörityö sisältää suunnittelun ja rakentamisen lisäksi välttämättä tehtäviä, joiden tarkoitus on tunnistaa ja poistaa keskeneräisestä

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

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

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot