3 Mallipohjainen testaus ja samoilutestaus



Samankaltaiset tiedostot
ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Riemannin integraalista

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 5 Demonstraatiotehtävien ratkaisut. ja kaikki a Σ ovat säännöllisiä lausekkeita.

3.3 KIELIOPPIEN JÄSENNYSONGELMA Ratkaistava tehtävä: Annettu yhteydetön kielioppi G ja merkkijono x. Onko

LINSSI- JA PEILITYÖ TEORIAA. I Geometrisen optiikan perusaksioomat

Matematiikan tukikurssi

ICS-C2000 Tietojenkäsittelyteoria Kevät 2015

Esimerkki 8.1 Määritellään operaattori A = x + d/dx. Laske Af, kun f = asin(bx). Tässä a ja b ovat vakioita.

Olkoon. M = (Q, Σ, δ, q 0, F)

Olkoon. äärellinen automaatti. Laajennetaan M:n siirtymäfunktio yksittäisistä syötemerkeistä merkkijonoihin: jos q Q, x Σ, merkitään

OSA 1: POLYNOMILASKENNAN KERTAUSTA, BINOMIN LASKUSÄÄNTÖJÄ JA YHTÄLÖNRATKAISUA

Q = {q 1, q 2, q 3, q 4 } Σ = {a, b} F = {q 4 },

θ 1 θ 2 γ γ = β ( n 2 α + n 2 β = l R α l s γ l s 22 LINSSIT JA LINSSIJÄRJESTELMÄT 22.1 Linssien kuvausyhtälö

Automaatin tunnistama kieli on sen hyväksymien merkkijonojen joukko. Täsmällinen muotoilu: δ,q 0,{q 2,q 3,q 6 }), missä

Integraalilaskentaa. 1. Mihin integraalilaskentaa tarvitaan? MÄNTÄN LUKIO

Vastaa tehtäviin 1-4 ja valitse toinen tehtävistä 5 ja 6. Vastaat siis enintään viiteen tehtävään.

Kuvausta f sanotaan tällöin isomorfismiksi.

2.6 SÄÄNNÖLLISET LAUSEKKEET Automaattimalleista poikkeava tapa kuvata yksinkertaisia kieliä. Olkoot A ja B aakkoston Σ kieliä. Perusoperaatioita:

2.1 Vaillinaiset yhtälöt

Suorat, käyrät ja kaarevuus

10. MÄÄRÄTYN INTEGRAALIN KÄYTTÖ ERÄIDEN PINTA-ALOJEN LASKEMISESSA

11. MÄÄRÄTTY INTEGRAALI JA TILAVUUS

Historialaajennus mallipohjaisessa testauksessa

Ristitulo ja skalaarikolmitulo

4.7.2 Testerit. Test ok. virhe vast.ota. lähetä τ. virhe. virhe. vast.ota. τ τ. vast.ota. lähetä. lähetä. lähetä ok

Laskennan mallit (syksy 2010) 1. kurssikoe, ratkaisuja

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Automaattimalleista poikkeava tapa kuvata yksinkertaisia kieliä. Olkoot A ja B aakkoston Σ kieliä. Perusoperaatioita:

Numeerinen integrointi

Polynomien laskutoimitukset

Matematiikan tukikurssi

Syksyn 2015 Pitkän matematiikan YO-kokeen TI-Nspire CAS -ratkaisut

HAVAINNOINTI JA TUTKIMINEN

5.4 Ellipsi ja hyperbeli (ei kuulu kurssivaatimuksiin, lisätietoa)

Asennus- ja käyttöohje ROBA -liukunavoille Koot 0 12 (B.1.0.FIN)

II.1. Suppeneminen., kun x > 0. Tavallinen lasku

Säännöllisestä lausekkeesta deterministiseksi tilakoneeksi: esimerkki

Riemannin integraali

Tehtävä 1. Jatka loogisesti oheisia jonoja kahdella seuraavaksi tulevalla termillä. Perustele vastauksesi

4 Taso- ja avaruuskäyrät

Pythagoraan lause. Pythagoras Samoslainen. Pythagoraan lause

x k 1 Riemannin summien käyttö integraalin approksimointiin ei ole erityisen tehokasta; jatkuvasti derivoituvalle funktiolle f virhe b

Sarjaratkaisun etsiminen Maplella

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 8: Integraalifunktio ja epäoleellinen integraali

Laskennan perusmallit (LAP)

2.2 Automaattien minimointi

5 Epäoleellinen integraali

Viivaintegraali: "Pac- Man" - tulkinta. Viivaintegraali: "Pac- Man" - tulkinta. "Perinteisempi" tulkinta: 1D 3/19/13

MS-A010{2,3,4,5} (SCI, ELEC*, ENG*) Differentiaali- ja integraalilaskenta 1 Luento 8: Integraalifunktio ja epäoleellinen integraali

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 22. syyskuuta 2016

S Laskennallinen systeemibiologia

Vuokrahuoneistojen välitystä tukeva tietojärjestelmä.

Käydään läpi: ääriarvo tarkastelua, L Hospital, integraalia ja sarjoja.

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 7: Integraali ja analyysin peruslause

9 A I N. Alkuperäinen piiri. Nortonin ekvivalentti R T = R N + - U T = I N R N. Théveninin ekvivalentti DEE SÄHKÖTEKNIIKAN PERUSTEET

Digitaalinen videonkäsittely Harjoitus 5, vastaukset tehtäviin 25-30

Painopiste. josta edelleen. x i m i. (1) m L A TEX 1 ( ) x 1... x k µ x k+1... x n. m 1 g... m n g. Kuva 1. i=1. i=k+1. i=1

7 Funktiosarjoista. 7.1 Funktiosarjojen suppeneminen

1.3 Toispuoleiset ja epäoleelliset raja-arvot

Määritelmä Olkoon C R m yksinkertainen kaari ja γ : [a, b] R m sen yksinkertainen parametriesitys, joka on paloittain C 1 -polku.

Gillespie A.: Foundations of Economics., 2011, luvut 6-8, 17, 21 ja 29. ISBN Oxford University Press.

MS-A010{2,3,4,5} (SCI,ELEC*, ENG*) Differentiaali- ja integraalilaskenta 1 Luento 7: Integraali ja analyysin peruslause

Y56 Mikron jatkokurssi kl 2008: HARJOITUSTEHTÄVÄT 2 Mallivastaukset

Paraabelikin on sellainen pistejoukko, joka määritellään urakäsitteen avulla. Paraabelin jokainen piste toteuttaa erään etäisyysehdon.

Näytä tai jätä tarkistettavaksi tämän jakson tehtävät viimeistään tiistaina ylimääräisessä tapaamisessa.

Sinilause ja kosinilause

VALTIOTIETEELLINEN TIEDEKUNTA TILASTOTIETEEN VALINTAKOE Ratkaisut ja arvostelu

763333A KIINTEÄN AINEEN FYSIIKKA Ratkaisut 1 Kevät 2014

a = x 0 < x 1 < x 2 < < x n = b f(x) dx = I. lim f(x k ) x k=1

Diskreetin matematiikan perusteet Laskuharjoitus 6 / vko 13

Kertymäfunktio. Kertymäfunktio. Kertymäfunktio: Mitä opimme? 2/2. Kertymäfunktio: Mitä opimme? 1/2. Kertymäfunktio: Esitiedot

Suorakaidekanavat. lindab suorakaidekanavat

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 9: Integroimismenetelmät

Runkovesijohtoputket

7.lk matematiikka. Geometria 1

Riemannin integraalista

2.4 Pienimmän neliösumman menetelmä

Kognitiivinen mallintaminen I, kevät Harjoitus 1. Joukko-oppia. MMIL, luvut 1-3 Ratkaisuehdotuksia, MP

MS-A010{2,3,4,5} (SCI,ELEC*, ENG*) Differentiaali- ja integraalilaskenta 1 Luento 9: Integroimismenetelmät

Reaalinen lukualue. Millainen on luku, jossa on päättymätön ja jaksoton desimaalikehitelmä?

Preliminäärikoe Pitkä Matematiikka

T Kevät 2009 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (Predikaattilogiikka )

Laskennan mallit (syksy 2007) Harjoitus 5, ratkaisuja

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

3.7. Rekursiivisista lukujonoista

Nelikanavainen vahvistin aktiivisella jakosuotimella

Kieli, merkitys ja logiikka, kevät 2011 HY, Kognitiotiede. Vastaukset 2.

Kattoeristeet - nyt entistä parempia kokonaisratkaisuja. Entistä suurempi Kuormituskestävyys ja Jatkuva Keymark- Laadunvalvontajärjestelmä

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

A-Osio. Valitse seuraavista kolmesta tehtävästä kaksi, joihin vastaat. A-osiossa ei saa käyttää laskinta.

Laskennan perusmallit (LAP)

Geometrinen algebra: kun vektorien maailma ei riitä

Matematiikkaolympialaiset 2008 kuusi vaikeaa tehtävää

TYÖ 30. JÄÄN TIHEYDEN MÄÄRITYS. Tehtävänä on määrittää jään tiheys.

6.2 Algoritmin määritelmä

Valmennuksen ja arvioinnin tukijärjestemä (VAT)

LATO - Lastensuojelun ja toimeentulotuen toimintaprosessien ja tiedonhallinnan kehittäminen ja tehostaminen( )

2 Tilasiirtymäsysteemit Vuorottelevan bitin protokolla Asiakas/palvelin-systeemi Tilasiirtymäsysteemin määritelmä...

4 Pinta-alasovelluksia

SUORAKULMAINEN KOLMIO

Transkriptio:

Tietojenkäsittelytiede 24 Joulukuu 2005 sivut 8 21 Toimittj: Jorm Trhio c kirjoittj(t) Historiljennus mllipohjisess testuksess Timo Kellomäki Tmpereen teknillinen yliopisto Ohjelmistotekniikn litos 1 Johdnto Testuksen tvoite on kerätä luottmust siihen, että testttv järjestelmä toimii oikein. Mitään todellist järjestelmää ei void testt läpikotisin, joten on olennist suunnitell testus niin, että järjestelmän käyttäytymisestä tutkitn toislt mhdollisimmn pljon j toislt mhdollisimmn olennisi osi. Rinnkkisiss järjestelmissä testus on tvllisikin järjestelmiä hnklmp, kosk rinnkkisuus iheutt epädeterminismiä, eli järjestelmä ei välttämättä käyttäydy smoill syötteillä in smll tvll. Näin järjestelmässä voi piillä virheitä, jotk sdn esiin vin hyvin hrvoin. Mllipohjisess testuksess järjestelmän toimint mllinnetn formlill, esimerkiksi tilkonemuotoisell, spesifiktioll. Spesifiktion määrittelemän käyttäytymisen kttv joukko testitpuksi on mhdollist luod utomttisesti, mutt se ei tietenkään trkoit, että itse testttv järjestelmä olisi ktettu. [5] Jos järjestelmän spesifiktio on korkell strktiotsoll, stt spesifiktion täysin kttv testijoukko oll hyvinkin pieni. Tällöin olisi trpeen ljent spesifiktiot niin, että sen määrittelemä käyttäytyminen ei muutu, mutt sen perusteell luotvt testitpukset kttvt toteutuksen mhdollisimmn monipuolisesti. Tätä tilnnett vrten on kehitetty historiljennus, jok on utomttinen tp ljent spesifiktiot siten, että mllipohjisen testuksen menetelmät luovt ljennetun spesifiktion pohjlt testitpusten joukon, jok syventää testikttvuutt hyvin luonnollisell tvll. Tässä rtikkeliss esitellään historiljennuksen toimintperitteet sekä pintpuolisesti sen ymmärtämiseen vdittvi tustoj, j lopuksi tutkitn sen tehokkuutt virheiden löytämisessä. Luku 2 esittelee menetelmän teoreettisen pohjn olevt tilkoneet. Luku 3 käsittelee smoilu- j mllipohjist testust, joiden yhteydessä historiljennust voidn sovelt. Luku 4 käy läpi itse historiljennuksen iden j pohtii sen toteuttmist teoriss j käytännössä. Luvuss 5 vertilln historiljennuksen tehokkuutt perinteisiin menetelmiin eräillä esimerkkijärjestelmillä. 2 Tilkoneet Järjestelmien toimint voidn kuvt formlisti tilkoneill [7], jotk ovt olennisesti suunnttuj grfej. Solmut eli tilt vstvt järjestelmän tiloj j kret eli tilsiirtymät erilisi tphtumi, jotk muuttvt til. Kullkin tilsiirtymällä on myös nimi, jok kertoo, mitä tphtum kri esittää. Tilsiirtymien OHJE KIRJAPAINOLLE: B5-rkin vsen- j yläreun kohdistetn A4-rkin vsempn j yläreunn. Näin pitäisi mrginliksi tull titteen puolell noin 33 mm j muull noin 22 mm.

Kellomäki 9 nimet voivt oll hyvin konkreettisi järjestelmän tphtumi ti strktimpi tphtumkokonisuuksi. Näin sm järjestelmä voidn kuvt monell eri strktiotsoll. Tilkoneen kkosto sisältää kikki siinä esiintyvien tilsiirtymien nimet j mhdollisesti muitkin tilsiirtymien nimiä (tällä on merkitystä synkronisess rinnnkytkennässä, jost puhutn pin). Tässä esityksessä tilkoneen koko trkoitt sen tilojen määrää. Tilkoneen suoritus lk jostkin lkutilst j etenee kulkemll pitkin jotkin tämänhetkisestä tilst lähtevää krt eli suorittmll vireessä olev tilsiirtymä. Näin suoritus voi jtku teoriss loputtomiin. Toisin kuin äärellisissä utomteiss, erillisiä lopputiloj ei tilkoneiss ole. Esimerkkejä tilkoneist on nähtävissä myöhemmin rtikkeliss, ktso esimerkiksi kuv 3. Uset erilisilt näyttävät smn strktiotson tilkoneet voivt esittää sm käyttäytymistä hyvin pljon smn tpn, kuin sm lgoritmi voidn kuvt monell ivn erilisell C-kielisellä ohjelmll. On olemss lgoritmej, joill voidn minimoid nnetun tilkoneen koko muuttmtt sen käyttäytymistä. Tilkoneet soveltuvt erityisen hyvin rinnkkisten järjestelmien kuvmiseen, sillä monimutkisen järjestelmän eri ost voidn mllint pieninä j yksinkertisin tilkonein, jotk voidn sitten sett vuorovikuttmn toistens knss esimerkiksi jetun muistin ti snomjonojen välityksellä. Tässä esityksessä käytetään yleistä j strkti vuorovikutusmenetelmää, synkronist rinnnkytkentää. Sen vull voidn mllint muun muss edellä minitut kommuniktiomenetelmät. Synkronisen rinnnkytkennän knnlt os tphtumist on näkyviä. Kikki ne rinnnkytkentään osllistuvt tilkoneet, joiden kkostoon tietty näkyvä tphtum kuuluu, toimivt tämän tphtumn suhteen synkronisesti. Tällinen tphtum voidn suoritt vin, jos se on vireessä kikiss näissä tilkoneiss, j tällöin sen täytyy tphtu kikiss niissä yhtäikisesti. Näin yksikin sellinen rinnnkytkentään osllistuv tilkone, joss tphtum ei ole vireessä mutt jonk kkostoon tphtum kuuluu, estää kikki muit suorittmst sitä. Loput tilsiirtymät ovt näkymättömiä, jolloin tilkoneet voivt suoritt niitä täysin riippumtt toisistn. Tällisen rinnnkytkennän lopputulos on yhä tilkone, jonk tilt vstvt siihen osllistuneiden tilkoneiden yhteistiloj, eli se sdn muodostmll krteesinen tulo rinnnkytkettävien tilkoneiden tiloist (j poistmll tilt, joit ei void svutt). Tulos siis kuv rinnnkytkettyjen tilkoneiden yhteistä käyttäytymistä. 3 Mllipohjinen testus j smoilutestus Testitpus trkoitt jotkin tyypillisesti linerist syötteiden j niihin odotettujen tulosteiden srj, jonk tehtävä on yleensä testt jotkin yksittäistä si. Testijoll ts trkoitetn järjestelmän käynnistämisestä lkv j pysäyttämiseen loppuv testustphtum, jok stt sisältää useitkin perättäisiä testitpuksi. Tilsiirtymät jetn usein testuksen yhteydessä syötteisiin (input) j tulosteisiin (output). Jokinen tilkoneen näkyvä tilsiirtymä on tällöin joko syöte ti tuloste. Sm tilsiirtymä voi oll toisen tilkoneen syöte j toisen tuloste. Nyt khden tilkoneen rinnnkytkennässä synkronisesti suoritettvt tilsiirtymät ovt epä-

10 Historiljennus symmetrisiä syöte/tuloste-prej: kun toinen tilkone nt jotkin ulospäin, toinen ott sen vstn omn syötteenään. Usein syötteet merkitään kysymysmerkillä j tulosteet huutomerkillä. Järjestelmää testtn ntmll sille syötteitä, jotk ovt siis testjn näkökulmst tulosteit. Tkisin sdn järjestelmän tulosteit, jotk ovt testjn syötteitä. Yleisessä tpuksess järjestelmän ei trvitse perustu syötteen j tulosteen vuorottelulle, vn useit syötteitä voidn nt peräkkäin j smss tilss voi oll yhtä ik sllittu nt lisää syötteitä ti kuunnell järjestelmän vstett. Jos järjestelmä ei vst kuunneltess josskin tilss millään tulosteell, sen ktsotn ntneen erityisen tulosteen, hiljisuuden, jot merkitään δ:ll. Spesifiktioss δ voi oll tilst riippuen sllittu ti kielletty, kuten mikä thns muukin järjestelmän tuloste. Käytännössä ei void oll vrmoj, onko testikohteen vstmttomuus hiljisuutt vi onko vste vin phsti myöhässä. Siksi usein sovitn jostkin jst, jonk jälkeen vsteen puute tulkitn hiljisuudeksi. Liin pitkä viive ei yleensä muutenkn ole toivottu, vn sekin on usein virhetilnne. Tilkoneiden teorin testuksen näkökulmst johdtt rtikkeli [6]. Mllipohjisess testuksess järjestelmän oike toimint formlisoidn tilkonemuotoisell spesifiktioll. Tällöin testitpuksi voidn luod tämän spesifiktion pohjlt koneellisesti. Testitpukset voidn luod niin, että ne täyttävät jonkin kttvuusvtimuksen. Esimerkiksi voidn tt, että luodut testitpukset jmll tulevt kikki spesifiktion tilsiirtymät käydyksi läpi. Näin testuksest voidn tehdä täysin utomttist, kunhn ihminen on ensin tehnyt spesifiktiotilkoneen. Spesifiktiot voivt oll monimutkisellekin järjestelmälle melko pieniä, etenkin jos ne ovt kovin korkell strktiotsoll. Esimerkiksi monimutkisenkin protokolln spesifiktio voisi yksinkertisimmilln koostu vin syötteestä lähetä viesti x j sille toivotust vsteest viesti x spui. Tällöin edellä kuvttu utomttinen testusmenetelmä ei välttämättä tuot trpeeksi mont erilist testitpust. Epädeterminismin nsiost rinnkkisess järjestelmässä voidn toki toist smoj testejä yhä uudestn j toivo hvittvn uudenlist käyttäytymistä, mutt tämä ei ole kovinkn tehokst. Smoilutestus on menetelmä, joss testust ei jet erikseen yhtä si testviin testitpuksiin, vn testttvt sit päätetään lennoss pitäen jtkuvsti kirj, missä spesifiktion tilss testijo kulkee [3]. Seurvksi suoritettv tphtum vlitn joko stunnisesti ti käyttäen jotkin heuristiikk. Menetelmällä on useit etuj tvlliseen testukseen verrttun. Sen vull muun muss vältetään järjestelmän turhien ylös- j lsjosekvenssien toisto. Lisäksi epädeterministisen järjestelmän tpuksess voidn päättää testttv si sen perusteell, mitä järjestelmä sttuu kullkin kert tekemään. Smoilutestuksess yksittäistä testijo voidn jtk trvittess loputtomiin. 4 Historiljennus Historiljennus on tekniikk, jonk tvoitteen on käyttää nnettuj testusresurssej mhdollisimmn tehokksti. Sen kntv jtus on siinä, että virheet pljstuvt tehokkmmin, kun testtn mhdollisimmn mont erilist histori eli tiln johtvien peräkkäisten tphtumien erilist yhdistelmää.

Kellomäki 11 ε Kuv 1: Historiljennin tphtumille j, k = 2. Historiljennuksen ide on hyvin intuitiivinen. Eräs esimerkki, jok ei ole ohjelmistojen testuksen knnlt kovin relevntti, mutt hvinnollist hyvin historioit, on pnkkikortin unohtuneen nelinumeroisen tunnusluvun rvminen (kuvitelln, että yrityksiä olisi käytössä rjttomsti). On selvää, että sm numero ei knnt kokeill mont kert, vn järkevintä on kokeill järjestelmällisesti kikki eri yhdistelmiä. Tämä on itse siss lähellä erilisten neljän numeron mittisten historioiden käyttämistä. Erilisi historioit eli yhdistelmiä päästään utomttisesti testmn ljentmll spesifiktiot sopivll tvll. Vlitn jokin pieni kokonisluku, k, jok on muistettvn historin mksimipituus. Jokinen spesifiktion til korvtn joukoll tiloj, joist kukin vst yhtä (enintään) k:n mittist korvttuun tiln johtv histori. Spesifiktion ljennus voidn utomtisoid. Alkuperäinen spesifiktio kytketään rinnn k-historiljentimen knss, j tuloksen sdn täsmälleen hluttu ljennettu spesifiktio. Kuv 1 esittää k-historiljennint, jok on tilkone. Sen jokisest tilst lähtevät kikki spesifiktion näkyvät tilsiirtymät. Ljentimess on til jokist enintään k:n mittist tilsiirtymien nimien jono eli histori kohden. Nämä sdn siis meknisesti rkentmll kikki k:n mittiset j lyhyemmät yhdistelmät tilsiirtymien nimistä. Tilt, joiden tilsiirtymien jono on k:t lyhyempi, liittyvät tilkoneen jon lkuun, jolloin tilkone ei ole vielä ottnut k:t skelt, joten vstv k:n mittist histori ei ole myöskään olemss. Historiljentimess tilst lähtevät tilsiirtymät johtvt in selliseen tiln, johon liittyvä histori sdn lisäämällä lähtötiln historin suoritettvn tilsiirtymän nimi j trvittess unohtmll lkupäästä yksi siirtymä, jott histori ei ksv pidemmäksi kuin k. Toisin snoen, jos til vstv histori eli tilsiirtymien nimien jono on muoto 1 2 k, niin siitä lähtevä tilsiirtymä vie tiln, jonk histori on muoto 2 k. Kuv 1 esittää historiljentimen tpuksess, joss tilsiirtymien joukko on

12 Historiljennus ε Kuv 2: Vsemmll yksinkertinen spesifiktio j oikell sen historiljennettu versio (k = 2). {,} j k = 2. Kuvss ε trkoitt tyhjää merkkijono eli ino mhdollist histori tilkoneen käynnistyessä. Historiljennin ei rjoit rinnnkytkettäessä spesifiktion toimint, kosk sen jokisest tilst lähtevät kikki mhdolliset tphtumt. Niinpä kikki järjestelmän lillinen toimint on rinnnkytkennän tuloksess mukn. Toislt ljennin ei sisällä muit tphtumnimiä kuin spesifiktion jo sisältämät, eikä linkn näkymättömiä tilsiirtymiä. Siksi se ei slli mitään uutt spesifiktion sllimn käyttäytymisen lisäksi. Useimpiin spesifiktion tiloihin ei voi päätyä kikill mhdollisill historioill, joten tiloille ei ljennettess tyypillisesti synny kopioit kuin murto-os teoreettisest mksimimäärästä. Esimerkiksi tilkoneess, jok koostuu pelkästään peräkkäisten tphtumien j yhdessä muodostmst silmukst tkisin lkutiln, kuten kuvss 2, voi lkutiln päästä äärettömän monell tphtumjonoll, nimittäin ε,,, j niin edelleen. Jos k = 2, on erilisi historioit kuvn 1 tiloj vstvt 7 kpplett kumpkin spesifiktion til kohti, joten tilkoneiden krteesisess tuloss olisi 14 til. Näistä tiloist svutettvi on vin neljä, lkutillle historit ε j j toiselle tillle historit j. Käytettäessä historiljennust utomttisesti voisi järjestelmä esimerkiksi ljent spesifiktiot ksvvill k:n rvoill jen kullekin rvolle sellisen joukon testitpuksi, että kikki ljennetun spesifiktion tilsiirtymät tulevt ktetuiksi. Näin voitisiin jtk, kunnes resurssit loppuvt. Vikk historiljennus on yllä esitetty lähinnä tvllisten tilkoneiden näkökulmst, se toimii lähes sellisenn myös syöte/tuloste-jon knss. Historiljentimess setetn kukin spesifiktion syöte tulosteeksi j tuloste syötteeksi, jott rinnnkytkentä voi synkronoid syöte/tuloste-prej. Erikoistphtum δ eli hiljisuus iheutt hiemn ongelmi. Jos se olisi vin yksi ylimääräinen näkyvä tphtum muiden joukoss, niin järjestelmää in välillä kuunneltess tule-

Kellomäki 13 vt hiljisuudet sotkisivt historioit osittin mielivltisell tvll (riippuen siitä, kosk järjestelmää stutn kuuntelemn). Asi käy selkeästi ilmi esimerkissä, jok esitetään kohdss 5.4. Tämän tki hiljisuutt ei tässä lsket tulosteeksi historioiden knnlt (hiljisuus on silti hyvä keino sd kiinni sellisi virhetilnteit, joiss järjestelmältä edellytetään jotin rektiot, mutt se ei sitä nn). Historiljennin on esitetty erillisenä tilkoneen lähinnä ymmärrettävyyssyistä. Kun historiljennust toteutetn käytännössä, voidn ljennus toteutt utomttisesti myös suorn spesifiktiot muokten. Näin vältytään käsittelemästä eksplisiittistä historiljennintilkonett, jok olisi turhn väliviheen mhdollisesti pljonkin lopullist ljennettu spesifiktiot suurempi. 5 Kokeellist tehokkuusvertilu Intuitiivisesti tuntuu luonnolliselt, että mhdollisimmn monen erilisen historin tutkiminen pljst virheitä tehokksti. Erilisten testusmenetelmien vertilu on hnkl [2], mutt tehokkuutt on mhdollist tutki puolueettomill kokeill jossin määrin. 5.1 Koejärjestelyt Koejärjestelyissä tutkitn tyypillisesti jotkin järjestelmää, johon on thlln istutettu virhe. Järjestelmästä rkennetn myös tilkone, jok spesifioi sen oiken toiminnn jollkin strktiotsoll. Järjestelmää testtn toislt lkuperäisellä spesifiktioll j toislt erilisill k:n rvoill historiljennetuill spesifiktioill j verrtn tuloksi. Tällisell testijärjestelyllä voitisiin myös tutki esimerkiksi sitä, knnttko spesifiktiot minimoid, ennen kuin historiljennust sovelletn niihin. Alkuperäisessä spesifiktioss olev redundnssi on itse siss osittist historiljennust j sikäli turh, kosk historiljennus ksvtt spesifiktiot hllitusti. Tälliset kokeet voitisiin suoritt käyttäen kyseisen järjestelmän oike toteutust, mutt jos järjestelmä on riittävän pieni, myös toteutus voidn mllint (spesifiktiot yksityiskohtisempn) tilkoneen. Toteutukseen voidn silloin kätkeä virheitä, jolloin on mhdollist lske suorn tilkoneiden rinnnkytkennästä virheiden löytämisen todennäköisyys j testijon hint joko rtkisemll (vltv) yhtälöryhmä ti käyttäen tätä trkoitust vrten kehitettyä lgoritmi [4]. Testit voitisiin suoritt yrittämällä ktt nnetun spesifiktion kikki kret ti tilt, mutt näissä kokeiss on käytetty smoilutestust hneen stunnisuuden heuristiikll. Ahneen stunnisuuden heuristiikk trkoitt, että testj lähettää vihtoehtoisist syötteistä in sen, jok vst spesifiktion krt, jot on tähän mennessä suoritettu vähiten. Tstilnteess syöte vlitn stunnisesti. Smoilutestus jtk spesifiktion läpikäymistä kunnes virhe löytyy. Niinpä kustkin spesifiktion j järjestelmän muodostmst kokonisuudest voidn lske yksi luku, jok kertoo, kuink mont tilsiirtymää joudutn keskimäärin tekemään ennen kuin virhe löytyy. Pitsi hneen stunnisuuden heuristiikll, useimmt testit jettiin myös täysin stunnisell heuristiikll, jok vlitsee kusskin tilss stunnisesti jonkin mhdollisist syötteistä. Täysi stunnisuus on usein yllättävän hyvä testustekniikk, sillä se tulee käytännössä lopult

14 Historiljennus kokeilleeksi kikke mhdollist, kun ts hne stunnisuus voi päätyä testmn sioit in smss järjestyksessä, j näin virhe voi jäädä kokonn hvitsemtt. 5.2 Vuorottelevn itin protokoll Vuorottelevn itin protokoll [1] on eräs yksinkertinen protokoll, joll voidn välittää tieto epävrmojen tiedonsiirtoknvien yli (viesti voi hukku knvss). Protokollss jokiseen lähetettävään viestiin liitetään ylimääräinen trkistusitti, jonk rvo vuorottelee peräkkäisten viestien välillä. Lähettävä j vstnottv pää pitävät kirj vuorottelevn itin rvost, j vstnottj hyväksyy vin selliset viestit, joiden itin rvo on odotettu. Perille menneet viestit kuittn, j kuittukseen liitetään myös vuorottelev itti. Kun oikell itillä vrustettu kuittus tulee perille lähettäjälle, se voi siirtyä lähettämään seurv viestiä; muuss tpuksess se lähettelee edellistä viestiä uudestn in silloin tällöin. Äkkiseltään voi tuntu, että protokoll voitisiin yksinkertist poistmll kuittusviesteistä vuorottelev itti. Tämä kuitenkin joht mielenkiintoiseen virhetoimintoon, sillä protokoll voi tässä muodossn hukt viestejä, mutt ei kuitenkn ensimmäistä viestiä. Protokolliss on yleensä jokin yhteyden luomisvihe j mhdollisesti yhteyden ktkisuvihe. Virhe sttisi esiintyä myös niissä, esimerkiksi voitisiin jtell, että josskin protokollss yhteyden ktkisuss jäisi jotkin nollmtt ti poistmtt j virhe voitisiin löytää vin ktkisemll välillä yhteys j muodostmll se uudestn. Niinpä kttv testust etsittäessä tulee tällisetkin tpukset protokolln toiminnst testt. Kuvn 3 tilkone esittää testttvn protokolln spesifiktion hyvin strktill tsoll. Meitä ei esimerkiksi kiinnost viestien sisältö. Järjestelmä toteutettiin vrsin strktin mllin j rohkein oletuksin. Rikkinäisen vuorottelevn itin protokolln mukisesti järjestelmä lähettää ensimmäisen viestin in oikein, j toisell sekä sitä seurvill viesteillä on tietty vkiotodennäköisyys kdot. Yksinkertisuuden säilyttämiseksi järjestelmä toteutettiin toimimn täsmälleen näin, eli edes toteutuksen tsoll ei ollut olemss vuorottelevi ittejä. Lisäksi oletimme, että protokollss yhteys täytyisi luod j ktkist erikseen, vikk itse vuorottelevn itin protokollss tällisi viheit ei ole. Stu toteutus kytkettiin rinnn smoilutestuksen toimint erilisiss tpuksiss kuvvien tilkoneiden knss. Tutkitut tpukset ovt täysi stunnisuus j historiljennus k:n rvoill 0 j 1. Historiljennuksess käytettiin hneen stunnisuuden heuristiikk. Oikestn tpust, joss k:n rvo on 0 voisi kutsu pelkäksi hneeksi stunnisuudeksi, sillä tällöin spesifiktio on lkuperäinen. Smoilutestuksess täyden stunnisuuden heuristiikll historiljennuksell ei itse siss ole mitään merkitystä, kosk historiljennetuss spesifiktioss kuvtn täsmälleen sm toimint kuin lkuperäisessä, joten stunnisuus tekee smt testit smoill todennäköisyyksillä molemmiss tpuksiss. Tämän tki kikiss tämän rtikkelin testeissä historiljennuksen yhteydessä on käytetty hnett stunnisuutt (j tpust k = 0 voidn jtell pelkäksi hneeksi stunnisuudeksi j pitää näin pääsillisen vertilukohtn historiljennuksen tehokkuutt jtellen). Yhteyden muodostmist j ktkisemist sekä viestin lähettämistä (eli testuksen syötteitä) kohdeltiin täysin ts-

Kellomäki 15 δ!init!deinit?receive δ!send Kuv 3: Tiedonsiirtoprotokolln strkti spesifiktio. rvoisin toisiins nähden. Toisin snoen jokinen niistä oli ennen heuristiikkojen vikutust yhtä todennäköinen j smnhintinen (1 yksikkö). Oheinen tulukko esittää keskimääräisiä hintoj virheen löytymiselle eräillä virhetodennäköisyyksillä. Tulukoss p on virheen pljstumisen todennäköisyys kullkin lähetetyllä viestillä (toisest lken). p k = 1 k = 0 stunn. 1 6, 5 11 10 0, 2 30, 5 59 34 0, 01 600, 5 1 199 604 10 4 59 999,5 119 999 60 004 Tulokset ovt sikäli trkkoj, että ne ovt tilkoneiden rinnnkytkennöistä lskettuj odotusrvoj eivätkä kokeellisi keskirvoj. Toislt järjestelmää on strhoitu niin pljon, että lukujen j todellisuuden vstvuudest ei juuri voi puhu. Niiden vertminen toisiins on silti mielenkiintoist. Tuloksist on hvittviss, että historiljennus on tämän virheen etsimisessä vin hitusen prempi kuin puhds stunnisuus mutt noin kksi kert niin tehoks kuin pelkkä hne stunnisuus. Ahneen stunnisuuden epävrmuus erilisten historioiden kokeilemisess näkyy tässä järjestelmässä. Jos se nimittäin sttuu luss pkollisen yhteyden luomisen jälkeen ensimmäiseksi kokeilemn viestin lähettämistä, sen on seurvksi pkko ktkist yhteys toisen (j mhdollisesti virheen pljstvn) viestin lähettämisen sijn, jolloin tämä kikki on hskttu työtä. Vin kokeilemll ensin sttumlt yhteyden ktkisu ilmn yhdenkään viestin lähettämistä se voi päätyä kokeilemn khden viestin lähettämistä peräkkäin. Jos virheen löytäminen vtisi kolmen peräkkäisen viestin lähettämistä, se ei löytäisi virhettä ikinä! Tvllinen stunnisuus sen sijn voi kyllä kokeill khden viestin lähettämistä perätysten, mutt toislt se voi myös juuttu loputtomsti ktkomn j muodostmn yhteyttä lähettämättä koskn ensimmäistäkään vrsinist viestiä. Historiljennus ts tulee jo k:n rvoll 1 kokeilleeksi tsisesti monenlisi yhdistelmiä. Tämän kokeen perusteell historiljennus on hyvä yhdistelmä hneen stunnisuuden j puhtn stunnisuuden eduist. Historiljennus kokeilee järjestelmällisesti kikenlisi yhdistelmiä, jolloin säilytetään puhtn stunnisuuden hyvä puoli, eli se, että järjestelmään ei jää sellisi suorituksi, joit ei koskn

16 Historiljennus!Request?Request!SetRQ!Relese?Grnt!ResetRQ?IsGR!Leve!Enter?Relese!Grnt Kuv 4: Vsemmll testjn spesifiktio yhden sikkn oslt. Oikell sikkn toteutus, joss SetRQ j ResetRQ muuttvt pyyntömuuttujn rvo j IsGR trkist, onko lup stu. edes teoriss voitisi suoritt, kunhn k:n rvo on trpeeksi suuri ti sitä ksvtetn testijon jtkuess. Liin pienellä k:n rvoll nimittäin smn toiminnon jtkuv toisto vtivt virheet eivät jää kiinni. Toislt historiljennus hyötyy hneen stunnisuuden heuristiikn yleensä otten premmst tehokkuudest. 5.3 Kksivihekättely Niin snottu kksivihekättely on järjestelmä, joss plvelin säätelee sikkiden pääsyä johonkin kriittiseen resurssiin. Kunkin sikkn i j plvelimen kommunikointi tphtuu khdell jetull inäärisellä muuttujll, p i (pyyntö) j l i (lup). Kun siks i hlu resurssin käyttöönsä, se sett muuttujn p i todeksi j odott, että plvelin nt luvn käyttää resurssi settmll vstvsti muuttujn l i todeksi. Kun siks on vlmis, se vputt resurssin settmll p i :n epätodeksi j odott, kunnes plvelin huom vputuksen, jolloin plvelin sett muuttujn l i ts epätodeksi. Jos usempi siks pyytää lup yhtä ik, plvelin päättää stunnisesti, mikä niistä s luvn käyttää resurssi. Järjestelmän hhmottmist uttvt tilkoneet esitetään kuviss 4 j 5. Järjestelmää toteuttess on helppo tehdä pieni virhe j päästää siks jtkmn toimintns jo siinä viheess, kun se on lknnut käyttämästä resurssi j vputtnut sen settmll p i :n epätodeksi. Näin toteutettun järjestelmä toimii yllättäen väärin. Jos sm siks pyytää resurssi pin uudestn, se voi ehtiä tulkit edelliseltä kierrokselt todeksi jääneen l i :n luvksi käydä uudestn resurssin kimppuun, mutt smll plvelin onkin ntmss lup jo seurvlle sikklle j näin molemmt pääsevät yhtä ik käsittelemään resurssi, mistä usein seur kos. Toteutettess tilkoneen järjestelmää, jok käyttää hnett stunnisuutt, täytyy testj kuvvss tilkoneess pitää kirj siitä, montko kert mikäkin spesifiktion siirtymä on suoritettu (käytännössä täytyy muist vin, mitä kunkin tiln siirtymistä on suoritettu enemmän kuin muit). Kosk testustilkoneen koko ksv eksponentilisesti suhteess spesifiktion kokoon, on hnett stunnisuutt vike mllint tilkoneill. Niinpä tämä järjestelmä toteutettiin ohjelmn, jolle tilkonett spesifiktion käyttävä testiympäristö nt syötteitä j kuuntelee sen vsteit. Niinpä tulokset ovt kokeellisten toistojen keskirvoj ei-

Kellomäki 17?IsRQx!ResetGRx!SetGRx?IsNotRQx Kuv 5: Plvelimen toteutus sikkn x oslt. SetGRx j ResetGRx muuttvt kyseisen sikkn lupmuuttujn rvo j IsRQx sekä IsNotRQx trkistvt, hluko siks luvn sekä onko siks vputtnut resurssin. Plvelimess on jokist sikst vrten vstv silmukk lkutilst. vätkä trksti lskettuj odotusrvoj, kuten edellisessä esimerkissä. Seurv tulukko näyttää muutmi edellä kuvtun virheen etsimiseen liittyviä tuloksi. Testukseen käytettiin jälleen smoilutestust, joss järjestelmään lähetettävät syötteet vlittiin joko täysin stunnisesti ti hneen stunnisesti. Ahneen stunnisuuden tpuksess käytettiin sekä lkuperäistä spesifiktiot (k = 0) että khdell eri positiivisell k:n rvoll historiljennettu spesifiktiot. Tulukon lukurvot kertovt keskimääräisen tphtumien määrään ennen kuin virhe hvittiin. Tulukon tulokset koskevt khden sikkn järjestelmää. Testejä tehtiin eri siksmäärillä in seitsemään sti j historiljennuksen k- prmetrin rvoill kuuteen sti, mutt tulokset ovt kikill rvoill hyvin smnkltiset. Virheen löytäminen hidstuu kikill testustvoill yhtä lill siksmäärän ksvess j on suunnilleen yhtä tehokst testustvst riippumtt. Luvut on stu 10 000 toistoll. testustp hint Stunninen 21 860 Historiljennettu, k = 0 22 053 Historiljennettu, k = 1 21 686 Historiljennettu, k = 2 22 290 Erot tuloksiss ovt melko pieniä j niitä voidn pitää lähinnä stunnisuuden tuottmin. Vikk mitään tilstollist nlyysiä ineistolle ei tehtykään, niin tähän viitt myös se, että testejä toistmll eri menetelmien premmuusjärjestys vihteli stunnisen oloisesti. Erojen puutett selittää se, että testjll ei ole tässä järjestelmässä kovinkn pljo vlinnnvr. Virhe ilmenee lähes testjst riippumtt, kunhn virheelle välttämättömät kksi ehto on täytetty (inkin kksi sikst on pyytänyt resurssi j inkin yksi siks on tehnyt sen vähintään khdesti). Aino tp testt järjestelmää epäoptimlisesti on siis testt pelkästään tpust, joss yksi siks pyytää resurssi jtkuvsti. Puhds stunnisuus on käytetyistä menetelmistä ino, jok toimii näin joskus. Näin iheutunut virheen hitmpi löytyminen kto tuloksist, kosk virheen pljstumiseksi täytyy tehdä tyypil-

18 Historiljennus lisesti tuhnsi pyyntöjä, mutt todennäköisyys sille, että ito stunnisuus tekee kikki nämä tuhnnet pyynnöt yhdellä j smll sikkll, on häviävän pieni. 5.4 Tunnusluvun rvminen Jo iemmin tässä tekstissä esimerkkinä käytetty tunnusluvun rvminen on edellisistä poiketen keinotekoisesti vlittu esimerkki, joss historiljennuksen etujen pitäisi tull hyvin esiin. Esimerkki ei liity suornisesti testukseen, mutt sen kltisi tpuksi on testuksest löydettävissä. Tällinen tilnne syntyy esimerkiksi, jos testttv järjestelmä on sellinen, että useimmiten on vlittviss melkein mikä thns syöte, mutt virheen pljstuminen vtii jonkin tietyn pitkän syötesrjn. Arvttv tunnusluku vst siis tässä sitä, että testj rv tämän syötesrjn, joll virhe pljstuu. Yksinkertistetn pnkkikortin neljän numeron mittisen tunnusluvun rvmisen spesifiktio äärimmilleen, jolloin siinä on vin yksi til, joss voidn syöttää mikä thns numeroist. Virhe tphtuu, kun numero sdn oikein, jolloin järjestelmä lkk kuuntelemst syötettä. Testttv järjestelmä siis trkst neljän numeron välein, oliko viimeksi syötetty nelikko oike tunnusluku, mutt tämä ei yksinkertistetust spesifiktiost käy ilmi. Mitä nopemmin luku rvtn eli virhe löydetään, sitä premmin testus on sujunut. Tässä versioss ei siis trvitse pin ok-nppul, eikä spesifiktiost muutenkn tiedetä, kuink pitkää luku etsitään (tämä vstnnee testuksess vstn tulevi tilnteit premmin kuin ito pnkkiutomtti). Kun oike luku rvtn, testus pysähtyy j lsketn, montko kokeilu trvittiin. Historiljennus ei vikut olevn kovin pljon puhdst stunnisuutt tehokkmpi testuskeino tällisesskn tehtävässä. Pelkkä hne stunnisuus on selvästi huono rtkisu, sillä se ei tule kokeilleeksi kikki mhdollisuuksi. Esimerkiksi yhdistelmä 1111 on sille mhdoton rvttv, kosk viimeistään khden ykkösen jälkeen se on kokeillut muit numeroit vähemmän kuin ykköstä, joten se ei voi jtk yhdistelmää ykkösellä. Puhtn stunnisuuden j historiljennuksen eroj vertilln seurvss tulukoss. Lisäksi tulukoss on optimlinen tulos, jok svutettisiin testmll järjestelmällisesti eri tunnusluvut. Puhtn stunnisuuden j järjestelmällisyyden tulokset on stu lskemll j historiljennuksen tulokset simultioll kokeilemll kusskin kohdsss 1 000 stunnisen yhdistelmän rvmist. Srkkeet kuvvt tunnusluvun pituutt, rnd on puhds stunnisuus, optimi on tulos, jok svutettisiin kokeilemll eri tunnuslukuj järjestelmällisesti j eri k:n rvot ovt historiljennettuj versioit (mukn lukien pelkkä hne stunnisuus). 1 2 3 4 rnd 10 100 1000 10 000 optimi 5,5 51 501 5 001 k = 0 8,7 185 k = 1 9,4 87 1 063 k = 2 9,8 92 911 k = 3 9,9 98 931 9 209 k = 4 9,9 100 1 001 9 173 Toisess tulukoss ovt smt tulokset, mutt keskirvojen sijn luvut ovt tulosten medinej. Näin on stu tuloksi myös pienille k:n rvoille, sillä äärettömyyksiä iheuttvi tunnuslukuj on vin pieni murto-os kikist, joten ne eivät vikut mediniin.

Kellomäki 19 1 2 3 4 k = 0 6 70 777 9 988 k = 1 7 62 677 7 089 k = 2 7 66 617 7 046 k = 3 7 69 669 6 445 k = 4 7 71 686 6 728 Tuloksist hvitn, että vikk historiljennus vikutt olevn lähes in hiemn tehokkmp kuin stunnisuus, ero on melko pieni. Lyhyemmillä luvuill on nähtävissä, että k-rvon liillinen ksvttminen huonont tuloksi. Ilmiö selittyy sillä, että tunnusluvun pituutt isommill k:n rvoill yhteen täysimittiseen historin sisältyy enemmän kuin yhden tunnusluvun verrn numeroit, joten sm luku voidn kokeill useit kertoj ennen kuin kikki on kokeiltu ensimmäisen kerrn. Esimerkiksi yhden mittisi lukuj rvttess k:n rvoll 2 ovt historit 51 j 35 erilisi, mutt niiden kokeileminen tulee kokeilleeksi luku 5 khdesti. Järjestelmällinen tunnuslukujen kokeileminen on koetulosten perusteell tehokkmp kuin historiljennus, vikk edellä minittiin, että historiljennus vst likimin järjestelmällistä kokeilu. Tämä johtuu siitä, että historiljennus ei tässä tpuksess erot uuden numerosrjn lku, joten se tulee kokeilleeksi smoj yhdistelmiä uudestn, ennen kuin se kokeilee kikki ensimmäisen kerrn. Esimerkiksi khden mittisill tunnusluvuill j k:n rvoll 2 se voisi kokeill luksi 36 j sitten 71, minkä jälkeen se olisi jo mielestään kttnut khden mittisen historin 67 j tulisi kokeilleeksi sitä ikisintn kttessn historioit toist kert, eikä silloinkn välttämättä. Edellä kuvttu historiljennuksen tässä tehtävässä esiintyvä ongelm on kenties yleisempikin ilmiö. Jos kksi toteutuksen knnlt jollkin tvll hyvin erilist til kuvutuvt spesifiktiostrktioss smksi tilksi, stt historiljennus jättää jotin oleellist testmtt. Lisäksi huomttiin, että hne stunnisuus ei selviydy kikist tunnusluvuist. Tämä koskee myös historiljennettuj versioit (jotk siis käyttävät hnett stunnisuutt ljennuksen jälkeen), jos k on liin pieni. Esimerkiksi neljän mittist tunnusluku 1111 ei void koskn rvt rvoll k = 1, kosk tietyn historin jälkeen voidn sm vlint tehdä enintään khdesti, eli historin 1 jälkeen ei void vlit kolmesti peräkkäin numero 1. Ongelmst päästään eroon, kun k:n rvo on trpeeksi suuri. Tämä on kuitenkin ongelm, sillä järjestelmästä ei välttämättä näe ulospäin, mikä k:n rvon pitäisi oll. Sopivn k-rvon vlint ti jonkinlinen dptiivinen erilisten k-rvojen käyttö smn testijon ikn voisikin oll eräs mhdollinen jtkotutkimuksen kohde. Tämän järjestelmän yhteydessä on myös helppo hvinnollist, mitä tphtuisi, jos hiljisuus tulkittisiin smnliseksi tulosteeksi kuin kikki muutkin. Kosk esimerkkijärjestelmämme on hilj in numeron syöttämisen jälkeen, voivt hiljisuudet sotke historin phsti. Esimerkiksi luvun 1234 syöttämisen jälkeen histori voisi oll 1234, mutt yhtä hyvin esimerkiksi 3δ4δ, jos järjestelmää olisi stuttu kuuntelemn välillä. Tällöin mikään ei estäisi järjestelmää kokeilemst luku 1234 uudestn, kunhn mhdolliset kuuntelut suoritettisiin eri kohdiss. Järjestelmästä voidn tehdä myös sellinen versio, joss spesifiktioss tiedetään, monenko mittist tunnusluku olln etsimässä. Käytännössä tämä toteutettiin niin, että käyttäjän tulee pin hyväksymisnppi syötteen jälkeen, jolloin järjestelmä kertoo, oliko rvus oikein vi väärin.

20 Historiljennus Seurvss tulukoss on esitetty tulokset tälliselle järjestelmälle. Luvut ovt keskimääräisiä rvusten määriä, rnd on täysi stunnisuus, optimi on järjestelmällinen kokeilu, k = 0 on hne stunnisuus j loput ovt historiljennuksen eri tpuksi. Srkkeiss on tunnusluvun pituus. 1 2 3 4 rnd 10 100 1000 10 000 optimi 5,5 51 501 5 001 k = 0 5,5 94 1 011 9 983 k = 1 5,9 50 954 9 980 k = 2 6,0 50 501 9 356 k = 3 9,3 51 504 5 001 k = 4 9,2 89 499 5 011 Kuten oli odotettviss, hyväksymisnpin pinminen poist iemmss tpuksess esiintyneet ongelmt uuden numerosrjn erottmisest j hneen stunnisuuden kyvyttömyyden rvt kikki tunnuslukuj. Näin ollen historiljennuksen tulokset ovt hyvin lähellä optimi, kunhn k:n rvo ei ole liin pieni ti liin suuri. Tämä on oikestn sen nsiot, että spesifiktio on hyvin lähellä itse järjestelmää. Spesifiktion erott toteutuksest inostn se, että toteutus tietää oiken tunnusluvun, mutt spesifiktio ei. 6 Yhteenveto Tässä rtikkeliss esiteltiin historiljennus, jok on mllipohjisen testuksen tehostmiseen trkoitettu utomttinen menetelmä. Sen ide on intuitiivinen j vst josskin mielessä sitä tp, joll ihminen järjestelmällisesti testisi erilisi tphtumketjuj. Tehokkuustestien merkitystä rvioitess knntt muist, että historiljennust ei ole kehitetty tehostmn testejä, vn sen trkoitus on helpott kttvuuksien hllint generoimll spesifiktiost lkuperäistä ljempi versioit. Historiljennukseen liittyvän teorin lisäksi esiteltiin koetuloksi, joit on stu lskemll j kokeilemll, kuink nopesti eräisiin järjestelmiin thlln istutettu virhe löytyy toislt historiljennuksen vull j toislt joillkin tvllisill mllipohjisess testuksess käytettävillä menetelmillä. Historiljennuksen käyttäminen ei useimmiss kokeilluiss tpuksiss tehostnut testust merkittävästi, mutt siitä ei ollut merkittävää hittkn. Etenkin järjestelmissä, joiss on vin vähän erilisi tphtumi ti testjll on muuten vin vähän mhdollisuuksi vikutt siihen, mitä testtn, historiljennuksen tulokset ovt smnlisi kuin esimerkiksi puhtn stunnisuuden tulokset. Eräissä osittin thlln historiljennukselle hyödyllisiksi tunnetuiss tpuksiss virheen löytämiseen kuluv ik noin puolittui (ti vstvsti todennäköisyys löytää jokin epädeterministisyyden kätkemä virhe nnetuss jss kksinkertistui) puhtseen stunnisuuteen verrttun. Suoritetut testit koskivt vin muutm yksinkertist järjestelmää. Niiden vull kuitenkin stiin esiin useit historiljennukseen liittyviä ilmiöitä, joiden voidn rvell esiintyvän yleisemminkin erilisi järjestelmiä testttess. Kiitokset Työ tehtiin Tmpereen teknillisen yliopiston ohjelmistotekniikn litoksell TE- KESin, Conformiq Softwre Oy Ltd:n j Nokin tutkimuskeskuksen rhoittmss SASOKE-projektiss. Kiitos Antti Vlmrille j Tiiti Kellomäelle kommenteist.

Kellomäki 21 Viitteet [1] K. Brtlett, R. Scntleury & P. Wilkinson: A note on relile full-duplex trnsmission over hlf-duplex links. Communictions of the ACM 12 (5), 1969, ss. 260 261. [2] R. Hmlet: Theoreticl comprison of testing methods. Proceedings of the ACM SIGSOFT 89 third symposium on Softwre testing, nlysis nd verifiction, ss. 28 37, 1989. [3] J. Helovuo & S. Leppänen: Explortion testing. Proc. ICACSD 2001, 2nd IEEE Interntionl Conference on Appliction of Concurrency to System Design, IEEE Computer Society 2001, ss. 201 210. [4] T. Kellomäki & A. Vlmri: A method for nlysing the performnce of testing techniques for concurrent systems. Proc. Fifth Interntionl Conference on Appliction of Concurrency to System Design (ACSD 2005), ss. 154-163. [5] J. Tretmns: A Forml Approch to Conformnce Testing. Väitöskirj, Twenten yliopisto, joulukuu 1992. [6] J. Tretmns: Test genertion with inputs, outputs nd repetitive quiescence. Softwre Concepts nd Tools, Vol 17(3), Springer-Verlg 1996, ss. 103 120. [7] A. Vlmri: Esimerkki modernist sovellushkuisest teorist: vuorovikuttvt tilkoneet. Proc. Tietojenkäsittelytieteen päivät 2004. Joensuun yliopistopino, Joensuu, 2004.