”Pieni haaste” (Myers 1979, mukailtu) Olkoon testattavana aliohjelma (tai metodi), joka on määritelty seuraavasti: ● Parametreinä annetaan kolme kokonaislukua,

Slides:



Advertisements
Samankaltaiset esitykset
makramee-tekniikalla
Advertisements

Osaamisen ja sivistyksen parhaaksi Tilatiedot ja niiden muutokset
Hetken kuluttua, sinulle avautuu taian maailma...
JavaScript (c) Irja & Reino Aarinen, 2007
GEOMETRIA MAA
Kiintolevyn osiointi.
Olisiko oppineesta rotasta astronautiksi avaruuslennolle Marsiin?
Osaamisen ja sivistyksen parhaaksi Oppijan verkkopalveluiden hyväksymistestauksen testausohjeet Yleisohjeet testaukseen Havaintoraportin täyttäminen.
1. Olio-ohjelmointi.
Duaali Teemu Myllynen.
Texas Essential Knowledge and Skills (TEKS)
 Kirjoita harkiten keskusteluryhmiin Jos kirjoitat viestejä julkisiin keskusteluryhmiin varmista, että viestisi liittyy ryhmän aiheeseen. Älä lähetä.
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ VARTEN.
Testaus Tiptopissa draft Mats Lindstedt, Mika Rintala.
(Joskus puhutaan myös komponenttitestauksesta.) Pienin kokonaisuus, joka on järkevä testata erikseen. ● Perinteisesti yksittäinen aliohjelma. ● Olio-ohjelmien.
Rippikoulu ja nuoren hyvinvointi Avainsanat LIMINAALISUUS JA INTENSIIVINEN YHTEISÖLLISYYS KIUSAAMATTOMUUS PUHTAAN PÖYDÄN MAHDOLLISUUS SUORITTAMISEN VÄHÄISYYS.
RSA – Julkisen avaimen salakirjoitusmenetelmä Perusteet, algoritmit, hyökkäykset Matti K. Sinisalo, FL.
Funktionaalisen aliohjelman mustalaatikkotestaus (1/12)
TyyppimuunnoksettMyn1 Tyyppimuunnokset Joskus kääntäjän on tehtävä itse päätöksiä, jos ohjelmoija ei ole ajatellut yksityiskohtia: int arvo1=10; long arvo2=25;
Ohjelmoinnin tekniikkaa Sisällys for -lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely.
Ohjelman perusrakenteet
Tiedon esittäminen.
TIETO JA TIETOKONEOHJELMA TIETOKONEOHJELMA KÄSITTELEE TIETOJA TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA MENETELMILLÄ.
Tiedonhakumenetelmät Helena Ahonen-Myka Kevät 2004, osa 9 Merkkijonohahmon etsintä selaamalla.
FY 9 kurssi Kokeessa saa olla A4 molemmin puolin täytettynä
Janan keskinormaali A A ja B ovat janan päätepisteet ja M sen keskipiste. M Janan keskinormaali on kohtisuorassa janaa vastaan sen keskipisteessä. AM =
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Johtokoodaus Historia, toiminnalliset syyt ja toteutustapojen hintaerot ovat johtaneet eri johtokoodaustapojen kehittämiseen. Hyvälle johtokoodaukselle.
Osaamisen ja sivistyksen parhaaksi Oppijan verkkopalveluiden hyväksymistestitapausten kuvausohje.
Onnistunut IT-projekti - Haaveesta totta? Tiken näkemys
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
Algoritmi-harjoituksia…
© 2010 IBM Corporation1 Objektien käyttöoikeudet  Kaikilla sisällönhallinnan objekteilla on käyttöoikeudet. Käyttöoikeudet on jaoteltuina Lukuoikeuksiin,
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
C 1. Testaus on ”sarja toimintoja” Itse asiassa, testaus on vuorovaikutusta, jota rytmittää ohjelmiston arviointi. Vaikka on hyödyllistä tunnistaa sarja.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
Poikkeukset Yleistä Virheeseen varautuminen tarkoittaa sitä, että ohjelmoija huomioi koodia kirjoittaessaan ajonaikaisen virheen mahdollisuuden.
6. Relaatioalgebra ja relaatiokalkyyli
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Komponenttipohjainen ohjelmistotekniikka (TJTSS56) Osa 4 Kevätlukukausi 2010 Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos Markku Sakkinen.
@ Leena Lahtinen Toistorakenne Ohjelmassa toistetaan tiettyjä toimenpiteitä monta kertaa peräkkäin Toisto noudattaa sille kuuluvia tarkkoja standardoituja.
1 Ohjelmointikielten varhaishistoria Esa-Matti Miettinen
Testaus Testaus Testauksella pyritään löytämään virheitä, jotka sitten korjataan. Yksittäinen testi on yleensä ohjelman suoritus (tietyillä.
Rinnakkaisuus Järjestelmässä, jossa voi olla useita prosesseja rinnakkain suorituksessa voi tulla tilanteita, joissa prosessien suoritusta täytyy kontrolloida.
Lasilaatikkotestauksen toinen lähestymistapa. ● Siinäkin käytetään vuoverkkoa. ● Tarkastelun kohteena ovat moduulin muuttujat (myös sen käyttämät globaalit.
FunktiottMyn1 Funktiot Funktiot voidaan jakaa –Kirjastofunktioihin, jotka ovat valmiina kaikkien käytössä. Erikoisempien kirjastofunktioiden käyttöönotto.
© Conformiq Software Ltd. | The Future of Software Testing Virheenarvaus.
11. Relaatiotietokannan suunnittelualgoritmit ja lisäriippuvuudet Tällä kurssilla käsitellään kirjan luvusta 11 ainoastaan algoritmi 11.1 häviöttömän liitoksen.
Kontrollirakenteet laajemmin
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Todennäköisyyslaskentaa
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
S ysteemianalyysin Laboratorio Teknillinen korkeakoulu Kotitehtävä 24 – Teppo Voutilainen Optimointiopin seminaari - Syksy 2005 Kotitehtävän 24 ratkaisu.
Väliaineen vastus.
S ysteemianalyysin Laboratorio Teknillinen korkeakoulu Esitelmä # - Esitelmöijän nimi Optimointiopin seminaari - Syksy 2000 / 1 Potentiaalien kertaus ja.
Usein aliohjelman kutsun tulos ei riipu pelkästään eksplisiittisistä syötteistä vaan myös moduulin tai olion tilasta (state). ● Tila määräytyy yleensä.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
MA5 Trigonometria. TrigonometriaTrigonometria Kolmion pinta-ala on puolet kannan ja kantaa vastaan piirretyn korkeusjanan pituuksien tulosta Kolmion pinta-ala.
Yksikkötestaus ● Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
Bridgen jatkokurssi 2 – lähtökortit jatkuvat
Kritiikin alkulähteillä
16. Ohjelmoinnin tekniikkaa
7. Näytölle tulostaminen
4. Luokan testaus ja käyttö olion kautta
Vinkkejä juridiikan opiskeluun
16. Ohjelmoinnin tekniikkaa
Esityksen transkriptio:

”Pieni haaste” (Myers 1979, mukailtu) Olkoon testattavana aliohjelma (tai metodi), joka on määritelty seuraavasti: ● Parametreinä annetaan kolme kokonaislukua, jotka ilmoittavat kolmion sivujen pituudet. ● Tuloksena aliohjelma ilmoittaa, onko kolmio tasasivuinen, tasakylkinen (kaksi yhtä pitkää sivua) vai erisivuinen. Yritä miettiä sellainen valikoima testitapauksia (todellisten parametrien yhdelmiä), jolla aliohjelman toiminnan oikeellisuus saataisiin mielestäsi hyvin testatuksi.Olisiko niillä jotain prioriteettijärjestystä, jos aika ei riittäisi kaikkien testitapausten ajamiseen? (Binderin kirjan (1999) alussa lainataan tätä esimerkkiä ja esitetään vähän laajempi Java-esimerkki.) Jos tämä tuntuu liian helpolta, niin vaaditaan aliohjelman ilmoittavan myös, onko kolmio suora-, tylppä- vai teräväkulmainen.

Haasteen ratkaisu (1/8) Oletetaan ensin, että aliohjelman saamat parametrit aina todella kelpaavat kolmion sivujen pituuksiksi, siis ovat positiivisia ja jokainen niistä on pienempi kuin kahden muun summa (kolmioepäyhtälö). Jos tämän katsotaan olevan kutsujan vastuulla, aliohjelmalla on oikeus palauttaa mikä tulos hyvänsä silloin, kun tämä ehto ei toteudu. Joissakin kielissä (ainakin Eiffelissä) voidaan todella määritellä tällainen esiehto, niin että järjestelmä tarkistaa sen automaattisesti jokaisen kutsuyrityksen yhteydessä ja aiheuttaa poikkeukseen, ellei ehto toteudu. Toisin sanoen aliohjelma ei tällöin voi saadakaan kelvottomia kutsuja.

Haasteen ratkaisu (2/8) On selvää, että tarvitaan vähintään yksi testitapaus kustakin vaihtoehdosta. Yksi tasasivuinen tapaus tuntuu riittävältä: on vaikea kuvitella sellaista ohjelmointivirhettä, että tulos riippuisi sivun pituudesta. Tasakylkisiä testitapauksia voisi olla 6: eripituinen sivu voi toisaalta olla joko pitempi tai lyhempi kuin muut ja toisaalta esiintyä joko ensimmäisenä, toisena tai kolmantena parametrinä. Myös erisivuisia testitapauksia voisi olla 6: suuruusjärjestyksen kaikki mahdolliset permutaatiot. Tarkat parametrien arvot eri testitapauksiin voidaan valita satunnaislukugeneraattorilla väliltä [1, MAXINT] siltä varalta, että aliohjelma sittenkin toimisi virheellisesti vain joillakin sivunpituuksilla.

Haasteen ratkaisu (3/8) Seuraavaksi oletetaan, että aliohjelman pitääkin itse tarkastaa, toteuttavatko parametrit kolmioepäyhtälön. Silloin tarvitaan myös virheellisiä testitapauksia. Tasasivuinen tapaus ei tietenkään voi olla virheellinen. Erisivuisia virheellisiä testitapauksia voisi olla 6 kuten kelvollisiakin: erona on vain se, että pisin sivu on liian pitkä. Tasakylkisiä virheellisiä testitapauksia riittäisi 3, koska eripituinen sivu ei voi olla liian lyhyt.

Haasteen ratkaisu (4/8) On mahdollista, että aliohjelma toimii virheellisesti jo kolmioepäyhtälön tarkastuksessa! Mikäli siihen tarvittavaa laskentaa ei ole suunniteltu huolellisesti, siinä voi tapahtua ylivuoto, jos kahden parametrin summa on suurempi kuin MAXINT. Siksi tarvitaan tällaisia, sekä kelvollisia että virheellisiä testitapauksia. Eiffelin esiehdon kirjoittamisessa voi tulla virheitä aivan samoin kuin aliohjelman sisällä olevassa tarkastuksessa. Siksi tällaiset testitapaukset ovat tarpeen myös siinä lähestymistavassa. Silloin kuitenkin nähdään automaattisesti, onko mahdollinen virhe esiehdossa vai aliohjelmassa.

Haasteen ratkaisu (5/8) Seuraavaksi oletetaan, että aliohjelman pitää itse tarkastaa, onko jokaisen parametrin arvo positiivinen. Silloin tarvitaan vähintään 3 uutta virheellistä testitapausta, joissa kussakin yksi parametri on virheellinen ja toiset kelvollisia. Mielellään kuitenkin kokeiltaisiin virheellisenä arvona sekä nollaa että jotakin negatiivista arvoa (tapauksia 2x). Mahdollisesti voitaisiin myös ottaa huomioon kelvollisten parametrien välinen suuruussuhde (tapauksia 3x) sekä tapaukset, joissa 2 tai 3 parametriä on virheellisiä. Monissa kielissä (esim. Pascalissa ja Adassa) voidaan määritellä tietotyyppi jonkin toisen tyypin osa-arvoalueeksi. Jos jokaisen parametrin tyypiksi määritellään [1.. MAXINT], tuollaiset virheelliset parametrit hylätään jo käännösvaiheessa --- testejä ei siis tarvita.

Haasteen ratkaisu (6/8) Jos käytetään staattisesti tyypittämätöntä ohjelmointikieltä (esim. Lispiä tai Smalltalkia), parametri voi olla virheellinen myös sillä tavoin, että se ei olekaan kokonaislukutyyppinen. Tällaisia virheellisiä testitapauksia on lisättävä edellisiin. Toisaalta Smalltalkissa ei voi tapahtua kokonaislukujen ylivuotoa, koska siinä kokonaislukujen esitys ei ole sidottu kiinteään pituuteen. Staattisesti mutta heikosti tyypitetyissä kielissä, esim. C:ssä ja C++:ssa, voidaan tyypinmuunnoksen kautta jonkin tyyppistä (esim. merkkijono) arvoa tai muuttujaa käsitellä, ikään kuin se olisi jotain muuta tyyppiä (tässä tapauksessa kokonaisluku). Tällaista tilannetta parametrin suhteen aliohjelma ei voi mitenkään todeta, joten sellaisilla virheellisillä testitapauksilla ei ole merkitystä. Jos parametri olisi liukulukutyyppiä, olisi syytä testata myös sellaisella parametrin arvolla, joka ei ole kelvollinen liukulukuarvo.

Haasteen ratkaisu (7/8) Priorisoinnissa ensimmäiset testitapaukset voisivat olla esimerkiksi seuraavat: ● yksi kelvollinen esimerkki kutakin 3 lajia ● yksi esimerkki, jossa kolmioepäyhtälö ei toteudu ● yksi esimerkki, jossa yksi parametri on 0 ● yksi esimerkki, jossa yksi parametri on negatiivinen ● yksi esimerkki, jossa kahden pienimmän parametrin summa on > MAXINT (edellisissä tapauksissa olkoon kahden suurimmankin parametrin summa < MAXINT) Näiden jälkeen voitaisiin testata seuraavilla: ● edellisistä tapauksista parametrien järjestyksen muut permutaatiot (ja tasakylkisen kolmion pituusvaihtoehdot) ● esimerkkejä, joissa kaksi tai kolme parametriä on virheellisiä ● kaksi lisätapausta, joissa ylivuoto voisi sattua Viimeiseksi voitaisiin testata kaikista em. tilanteista tapauksia, joissa on muita parametrien arvoja (satunnaisesti).

Haasteen ratkaisu (8/8) Entä jos vaaditaan aliohjelman ilmoittavan myös, onko kolmio suora-, tylppä- vai teräväkulmainen? Tällöin ensi näkemältä kelvollisten testitapausten määrä lähes kolminkertaistuisi --- ei ihan, koska tasasivuinen kolmio on välttämättä teräväkulmainen. Virheellisiä tapauksia ei tarvita lisää. Tarkemmin ajatellen tässä tilanteessa tulee myös lisää virheriskejä. Tulos voidaan nimittäin saada laskemalla, onko pisimmän sivun neliö yhtä suuri, suurempi vai pienempi kuin toisten sivujen neliöiden summa (Pythagoras). Jos tämä tehdään liian yksioikoisesti, ylivuoto voi sattua jo silloin, kun ainakin yksi parametri on √MAXINT tai suurempi. Jos taas laskenta tehdään liukuluvuilla, on mahdollista, että lähellä MAXINT:iä olevia kokonaislukuja ei voida esittää tarkasti. Tällöin hyvin vähän suorakulmaisesta poikkeava kolmio voidaan ilmoittaa suorakulmaiseksi. Kumpaakin virheriskiä voi pitää melko suurena, joten niiden testitapaukset saisivat korkean prioriteetin.

Huomio haasteesta Tässä on oletettu, että testattavan aliohjelman lähdekoodi ei ole käytettävissä, niin että mustalaatikkotestaus on ainoa mahdollisuus. Jos lähdekoodi on käytettävissä, niin ainakin tässä yksinkertaisessa tapauksessa on ilmeistä, että katselmointi olisi tehokkaampi menetelmä kuin normaali testaus. ● Sillä voitaisiin löytää ainakin suurin osa sellaisista virheistä, joiden paljastamiseen testitapaukset suunniteltiin. ● Toisaalta testitapauksillakin löydettäisiin mahdollisesti kaikki virheet. Entä jos aliohjelma on kirjoitettu tarkoituksellisen kierosti virheelliseksi? ● Virheiden löytäminen testitapauksilla voi olla hyvin vaikeaa tai lähes mahdotonta. ● Katselmoinnissa koodi voidaan helposti todeta ainakin epäilyttäväksi.