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. 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 = 1525 = 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 P C 2 2 C C C 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 10( :9 10;2<0 = > 4? )6 :9 10B= > 4? )6 : Vuokaaviorakenteita II JK= 4 L M > 6 :9 5 A<D 6 1E 0 F 0 :GH9 I0 M HJ M:E:N E 0 M HJ M&FON F 0:P 5 <Q? R;S F E ]&^ W&Y(_U` RUT V&WUX Y;Z&[\ ]&^ W!Y;_K` F :G 17 Ei-atomisten ehtojen hajottaminen Ei-atomiset ehtorakenteet saadaan hajotettua atomisiksi seuraavilla säännöillä: 4 5<6 IE"aOabF<9 10;2<0 IE F Ë c c&f<9 10;2<0 1E F 2 1 *+$#).

4 l 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; 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: S T d e f g h mon pkqsr!t:n uvq:w;x y!tz;zq&r!t:n uvq:w;xk{ S f i Skj S&S SBT S d S e 20 Vuokaavioesimerkki III Entry-exit -polut Kaaviossa peräkkäisiä solmuja ilman haaraumia voidaan yhdistää segmenteiksi: (1,2), (6,7,), (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 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,,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,,5,9,15. 1,2,3,4,5,6,7,,9,10,11,12,13,14,11,15. Haaraumakattavuus on hyvä ja aika yksinkertainen kattavuus, jonka kattavuuskriteeri on usein riittävän tiukka. 2 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 ehtojen (atomic predicates) tosi- ja epätosivaihtoehtojen summa. AE = metodin kaikkien atomisten ehtojen tosi- ja epätosivaihtoehtojen summa (eli 2*atomisten ehtojen summa) *+$#)

6 Moniehtokattavuus II Moniehtokattavuuden kriteeri määrittelee, miten monta atomista tosi- ja epätosikombinaatiota täytyy saavuttaa testauksella. 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!= 0. Moniehtokattavuus III 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ätosiehtoa, 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 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,,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 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. 3 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ääntulojatai 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. 4 *+$#)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

UML -mallinnus TILAKAAVIO

UML -mallinnus TILAKAAVIO UML -mallinnus TILAKAAVIO SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat

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

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 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

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

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

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistojen mallintaminen. Luento 11, 7.12. 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,

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

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

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

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

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

Vapaus. Määritelmä. Vektorijono ( v 1, v 2,..., v k ) on vapaa eli lineaarisesti riippumaton, jos seuraava ehto pätee:

Vapaus. Määritelmä. Vektorijono ( v 1, v 2,..., v k ) on vapaa eli lineaarisesti riippumaton, jos seuraava ehto pätee: Vapaus Määritelmä Oletetaan, että v 1, v 2,..., v k R n, missä n {1, 2,... }. Vektorijono ( v 1, v 2,..., v k ) on vapaa eli lineaarisesti riippumaton, jos seuraava ehto pätee: jos c 1 v 1 + c 2 v 2 +

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

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

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

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

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

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

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

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

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

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

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

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

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

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Sisällys 3. Pseudokoodi Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if--rakenteilla. oisto while-, do-while- ja for-rakenteilla. 3.1 3.2 Johdanto

Lisätiedot

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten Sisällys 16. Ohjelmoinnin tekniikkaa Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti

Lisätiedot

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0. Vapaus Määritelmä Oletetaan, että v 1, v 2,..., v k R n, missä n {1, 2,... }. Vektorijono ( v 1, v 2,..., v k ) on vapaa eli lineaarisesti riippumaton, jos seuraava ehto pätee: jos c 1 v 1 + c 2 v 2 +

Lisätiedot

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä Luku 7 Verkkoalgoritmit Verkot soveltuvat monenlaisten ohjelmointiongelmien mallintamiseen. Tyypillinen esimerkki verkosta on tieverkosto, jonka rakenne muistuttaa luonnostaan verkkoa. Joskus taas verkko

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

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

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri Testausraportti Oppimistavoitteiden hallintajärjestelmä harri Helsinki 13.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 2.5.2017 Timo Männikkö Luento 13 Merkkijonon sovitus Horspoolin algoritmi Laskennallinen vaativuus Päätösongelmat Epädeterministinen algoritmi Vaativuusluokat NP-täydellisyys

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

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari Konsensusongelma hajautetuissa järjestelmissä Niko Välimäki 30.11.2007 Hajautetut algoritmit -seminaari Konsensusongelma Päätöksen muodostaminen hajautetussa järjestelmässä Prosessien välinen viestintä

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

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

Onnistunut Vaatimuspohjainen Testaus

Onnistunut Vaatimuspohjainen Testaus Onnistunut Vaatimuspohjainen Testaus Kari Alho Solution Architect Nohau Solutions, Finland Sisältö Mitä on vaatimuspohjainen testaus? Vaatimusten ymmärtämisen haasteet Testitapausten generointi Työkalujen

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot

Sisällys. 15. Lohkot. Lohkot. Lohkot

Sisällys. 15. Lohkot. Lohkot. Lohkot Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet

Lisätiedot

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

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testaussuunnitelma Koskelo Helsinki 16.12.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Tom Bertell Johan

Lisätiedot

Johdatus graafiteoriaan

Johdatus graafiteoriaan Johdatus graafiteoriaan Syksy 2017 Lauri Hella Tampereen yliopisto Luonnontieteiden tiedekunta 166 Luku 4 Erilaisia graafeja 4.1 Eulerin graafi 4.2 Hamiltonin graafi 4.3 Tasograafi 4.4 Graafin värittäminen

Lisätiedot

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

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3 AgilElephant SEPA Diary Petri Kalsi 55347A Heikki Salminen 51137K Tekijä: Petri Kalsi Omistaja: ElectricSeven Aihe: PK&HS Sivu 1 / 7 Dokumenttihistoria Revisiohistoria Revision päiväys: 29.11.2004 Seuraavan

Lisätiedot

7 Vapaus. 7.1 Vapauden määritelmä

7 Vapaus. 7.1 Vapauden määritelmä 7 Vapaus Kuten edellisen luvun lopussa mainittiin, seuraavaksi pyritään ratkaisemaan, onko annetussa aliavaruuden virittäjäjoukossa tarpeettomia vektoreita Jos tällaisia ei ole, virittäjäjoukkoa kutsutaan

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

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3 16. Lohkot 16.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.2 Lohkot Kaarisulut

Lisätiedot

(Laajojen) Oliojärjestelmien testaus

(Laajojen) Oliojärjestelmien testaus (Laajojen) Oliojärjestelmien testaus Erkki Pöyhönen, Arto Stenberg erkki.poyhonen@nokia.com, arto.stenberg@nokia.com Nokia Research Center, SW Technology Laboratory 1 NOKIA Laajojen oliojärjestelmien testaus

Lisätiedot

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 11 Ti Timo Männikkö Algoritmit 2 Luento 11 Ti 24.4.2018 Timo Männikkö Luento 11 Rajoitehaku Kapsäkkiongelma Kauppamatkustajan ongelma Paikallinen etsintä Lyhin virittävä puu Vaihtoalgoritmit Algoritmit 2 Kevät 2018 Luento

Lisätiedot

Ohjelmistotuotanto, verifiointi ja validointi Syksy Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi

Ohjelmistotuotanto, verifiointi ja validointi Syksy Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi 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

Johdatus verkkoteoriaan luento Netspace

Johdatus verkkoteoriaan luento Netspace Johdatus verkkoteoriaan luento 20.3.18 Netspace Kurssin sijainti muussa suunnitellussa kokonaisuudessa Verkko eli graafi, tasoverkko, solmut, välit, alueet, suunnatut verkot, isomorfiset verkot, verkon

Lisätiedot

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3 15. Lohkot 15.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.2 Lohkot Aaltosulkeet

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys For-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. If-else-lause vaihtoehtoisesti

Lisätiedot

Rinnakkaistietokoneet luento S

Rinnakkaistietokoneet luento S Rinnakkaistietokoneet luento 5 521475S Silmukalliset ohjelmat Silmukat joissa ei ole riippuvuussyklejä voidaan vektoroida eli suorittaa silmukan vektorointi Jokainen yksittäinen käsky silmukan rungossa

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

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti

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

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

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

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

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

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

Rinnakkaistietokoneet luento S

Rinnakkaistietokoneet luento S Rinnakkaistietokoneet luento 2 521475S Tietokonealgoritmien rinnakkaisuuden analysointi Algoritmi on proseduuri, joka koostuu äärellisestä joukosta yksiselitteisiä sääntöjä jotka muodostavat operaatiosekvenssin,

Lisätiedot

1. Johdanto (P&Y:1-4) Ohjelmistojen testaus. Verifiointi ja validointi. Verifiointi ja validointi 2. Ohjelmistojen testaus - luentokalvot

1. Johdanto (P&Y:1-4) Ohjelmistojen testaus. Verifiointi ja validointi. Verifiointi ja validointi 2. Ohjelmistojen testaus - luentokalvot Ohjelmistojen testaus luentokalvot 1. Johdanto (P&Y:14) Ohjelmistojen testaus Juha aina Kurinalainen insinöörityö sisältää suunnittelun ja rakentamisen lisäksi välttämättä tehtäviä, joiden tarkoitus on

Lisätiedot

Ohjausrakenteet. Valinta:

Ohjausrakenteet. Valinta: Ohjausrakenteet Luento antaa yleiskuvan siitä kuinka ohjelmassa suorittaan vaihtoehtoisia tehtäviä valintarakenteiden avulla ja kuinka samanlaisia ohjelma-askeleita toistetaan toistorakenteiden avulla

Lisätiedot

Muistutus aikatauluista

Muistutus aikatauluista Muistutus aikatauluista (Nämä eivät välttämättä koske avoimen yo:n opiskelijoita Erkki Kailan rinnakkaisella kurssilla) Luento 1: kotitehtävät sulkeutuvat 20.9 12:00, ennen tutoriaalia Tutoriaali 1 sulkeutuu

Lisätiedot

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö Algoritmit 1 Demot 1 31.1.-1.2.2018 Timo Männikkö Tehtävä 1 (a) Algoritmi, joka tutkii onko kokonaisluku tasan jaollinen jollain toisella kokonaisluvulla siten, että ei käytetä lainkaan jakolaskuja Jaettava

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

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos: 8 Kanta Tässä luvussa tarkastellaan aliavaruuden virittäjävektoreita, jotka muodostavat lineaarisesti riippumattoman jonon. Merkintöjen helpottamiseksi oletetaan luvussa koko ajan, että W on vektoreiden

Lisätiedot

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta 811312A Tietorakenteet ja algoritmit 2016-2017 Kertausta jälkiosasta IV Perustietorakenteet Pino, jono ja listat tunnettava Osattava soveltaa rakenteita algoritmeissa Osattava päätellä operaatioiden aikakompleksisuus

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

Sisällys. 16. Lohkot. Lohkot. Lohkot

Sisällys. 16. Lohkot. Lohkot. Lohkot Sisällys 16. ohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.1 16.2 ohkot aarisulut

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

CoMa - Testausdokumentti

CoMa - Testausdokumentti CoMa - Testausdokumentti Mindmap - Kari Velling Helsinki 16.12.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä

Lisätiedot

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( ) Königsbergin sillat 1700-luvun Königsbergin (nykyisen Kaliningradin) läpi virtasi joki, jonka ylitti seitsemän siltaa. Sanotaan, että kaupungin asukkaat yrittivät löytää reittiä, joka lähtisi heidän kotoaan,

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

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