Laadunvarmistustekniikoita. Ohjelmistotuotanto. Testaus termejä. Testaus periaatteita. Testaus havaintoja. Testaus havaintoja

Samankaltaiset tiedostot
Ohjelmistotuotanto s

Laadunvarmistustekniikat

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

Kontrollipolkujen määrä

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Testaus ja laadunvarmistus

Ohjelmiston testaus ja laatu. Testaustasot

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

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

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

Harjoitustyön testaus. Juha Taina

Yhteenveto. Menettelytavat

Dynaaminen analyysi I

Ohjelmistotuotantoprojekti

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

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

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

TAMPEREEN TEKNILLINEN YLIOPISTO

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

7. Verifiointi ja validointi

TAMPEREEN TEKNILLINEN YLIOPISTO

Testaaminen ohjelmiston kehitysprosessin aikana

58160 Ohjelmoinnin harjoitustyö

Yksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen

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

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

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

Ohjelmiston testaussuunnitelma

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

Convergence of messaging

Harjoitus 3 (viikko 39)

Järjestelmätestauksen vaatimukset. 6. Järjestelmätestaus (B, 14) Järjestelmätestauksen korkean tason testausstrategia

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

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

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

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

Dynaaminen analyysi III

Ohjelmistojen testaus

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

Ohjelmistotestaus -09

Testaussuunnitelma Labra

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

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

Ohjelmistojen virheistä

Lohtu-projekti. Testaussuunnitelma

Ohjelmistotekniikka - Luento 10

Ohjelmoinnin perusteet Y Python

Ohjelmistotekniikka - Luento 10 Jouni Lappalainen

Harjoitus 5 (viikko 41)

T Testiraportti - järjestelmätestaus

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Testaus elinkaaressa. Testaustasot ja vaiheet

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Ohjelmistotekniikka - Luento 9 Jouni Lappalainen

3. Testaus osana ohjelmistoprosessia

Ohjelmistotuotanto, s /27/2003

Testaussuunnitelma. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Ohjelmistotekniikka - Luento 3

Hirviö Järjestelmätestauksen testitapaukset ja suoritusloki I1

CoMa - Testausdokumentti

Testaussuunnitelma. Oppimistavoitteiden hallintajärjestelmä harri

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Testaussuunnitelma. Pizzeria - Pitseria HAAGA-HELIA ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma. WebPizza

Dynaaminen analyysi IV

Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen

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

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Ohjelmistotuotanto, kurssikoe , H. Laine Arvostelu

Ohjelmistojen suunnittelu

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0

Algoritmit 1. Luento 3 Ti Timo Männikkö

T Testiraportti - integraatiotestaus

TESTIRAPORTTI - XMLREADER-LUOKKA Virtuaaliyhteisöjen muodostaminen Versio 1.0 (luonnos 2)

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

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelemistotuotanto, syksy 1998 /Prosessi Prosessimallit

Katselmoinnit. review) Katselmoinnit (review( Mitä ovat katselmoinnit? Katselmoinnin määritelmä (IEEE 1988)

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

Ohjelmoinnin perusteet, syksy 2006

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

Apuja ohjelmointiin» Yleisiä virheitä

Tietorakenteet ja algoritmit - syksy

Järjestelmän kriittisimmille toiminnallisuuksille (listattu alla), toteutetaan 1

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

Testausprosessin vaatimukset. 2. Testausprosessi (Artikkelit) Vesiputousmallin ongelmia. V-mallin neljä osavaihetta. Testausprosessimalli V-malli

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Harjoitus 6 (viikko 42)

Testaustyökalut Sini Mäkelä

Ohjelmistotestauksen perusteita II

Onnistunut Vaatimuspohjainen Testaus

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Suunnitteluvaihe prosessissa

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

Test-Driven Development

7/20: Paketti kasassa ensimmäistä kertaa

10. Tarkastukset. Tarkastusten rakenne

Transkriptio:

Laadunvarmistustekniikoita Ohjelmistotuotanto Ohjelmistojen testaus 1 Testaus (testing) ohjelman suorittamista tarkoituksena löytää virheitä Tarkastukset, katselmukset (inspections, reviews) asiantuntijoiden suorittamia dokumentin (voi olla myös koodi) läpikäyntejä tarkoituksena löytää virheitä Osittain samoja virheitä - osittain erilaisia 1 Harri Laine, Jukka Paakki 2 Testaus periaatteita Testiajo on onnistunut, jos se on paljastanut ohjelmistosta aikaisemmin havaitsemattoman virheen Hyvä testitapaus on sellainen, joka suurella todennäköisyydellä paljastaa aiemmin havaitsemattoman virheen Hyvä testaus on tuhoavaa toimintaa, toisin kuin esimerkiksi luova ohjelmointi Testaus termejä virhe (error, mistake, bug): ohjelmiston poikkeaminen sen spesifikaatiosta (määrittelystä), virhe esimerkiksi ohjelmakoodissa vika (fault) virheellisen ohjelmakohdan suoritus - vika esiintyy siis vain, jos virheellinen ohjelmakohta suoritetaan häiriö (failure) viasta aiheutuva ulkoisesti havaittava poikkeama ohjelmiston spesifikaatiosta kaikki virheet ja viat eivät välttämättä johda häiriöön Harri Laine, Jukka Paakki 3 Harri Laine, Jukka Paakki 4 Testaus havaintoja Havaintoja: ammattiohjelmoija tuottaa ~1,2 virhettä / 200 riviä ohjelmakoodia uudessa 200000 rivin ohjelmatuotteessa on ~1200 virhettä pitkäänkin käytössä olleissa ohjelmistoissa on noin 1 virhe / 1000 riviä koodia yhden virheen poistamiseen kuluu noin12 henkilötyötuntia Testaus on erittäin tehoton tapa varmistua ohjelman toimivuudesta Testaus voi osoittaa ohjelmiston virheellisyyden mutta ei sen oikeellisuutta (Dijkstra) Testaus havaintoja Tyypillinen virhejakauma Beizer: Software Testing Techniques, 2nd ed, van Nostrand Reinhold, 1990 ohjelmakoodin lauseissa 25% ohjelmakoodin tietorakenteissa 22% spesifikaation toteutustavassa 16% moduulien/komponenttien integroinnissa 9% huolimattomuusvirheitä 9% spesifikaatioissa 8% Harri Laine, Jukka Paakki 5 Harri Laine, Jukka Paakki 6 1

Testaus Testitapaus: tietty ohjelmiston syötearvojen joukko 1. Rakenteellinen eli sisäinen eli lasilaatikkotestaus (structural / glass-bo / white-bo testing) perustuu ohjelmakoodin mukaiseen läpikäyntiin, eli testattava komponentti on läpinäkyvä laatikko, joka paljastaa sisäisen rakenteensa testitapaukset valitaan siten, että ne aiheuttavat ohjelmakoodin mahdollisten suoritusreittien läpikäyntiä ohjelmasilmukoista johtuen kaikkien mahdollisten suoritusreittien läpikäynti ei ole yleensä mahdollista järkevässä ajassa Testaus 2. Toiminnallinen eli funktionaalinen eli ulkoinen eli mustalaatikkotestaus (functional / black-bo testing) perustuu ohjelmiston ulkoisesti havaittavan toiminnan tarkasteluun testattava komponentti on musta laatikko, jonka sisään ei nähdä testitapaus -> komponentti -> tulokset (ok?) suuresta syöteavaruudesta johtuen (esim. R: real) kaikkien mahdollisten syötteiden testaus ei ole mahdollista järkevässä ajassa Harri Laine, Jukka Paakki 7 Harri Laine, Jukka Paakki 8 Testaus Spiraalikuva ohjelmistotuotantoprosessista Järjestelmäsuunnittelu Ohjelmistovaatimukset Suunnittelu Koodi S R D U I V tuotanto sisäänpäin - testaus ulospäin St Yksikkötestaus Integrointitestaus Validointitestaus Järjestelmätestaus Testaus vaiheet Yksikkötestaus (unit test): testataan erikseen ohjelmiston jokainen komponentti (moduuli, aliohjelma, luokka, ) tyypillisesti white-bo Integrointitestaus (integration test) testataan komponenttien yhteistoiminta Validointitestaus (validation test) testataan ohjelmiston ja vaatimusmäärittelyn vastaavuus Järjestelmätestaus (system test) testataan järjestelmä kokonaisuudessaan (mukana laitteistot, ympäristö) tyypillisesti black-bo Harri Laine, Jukka Paakki 9 Harri Laine, Jukka Paakki 10 Testausstrategia: V-malli Testausstrategia: V-malli Määrittely ohjelmointi Integrointitestaus Validointitestaus Arkkitehtuurisuunnittelu Moduulisuunnittelu Yksikkötestaus virheiden korjaamisen hinta V-malli kytkee yhteen ohjelmiston rakentamisvaiheen ja testausvaiheen Testaussuunnitelma laaditaan kutakin testausvaihetta vastaavassa rakentamisvaiheessa Kussakin testausvaiheessa ohjelmiston toimintaa verrataan vastaavan rakentamisvaiheen tuottamaan spesifikaatioon Harri Laine, Jukka Paakki 11 Harri Laine, Jukka Paakki 12 2

Testaus vaiheet Yksikkötestaus toimiiko moduuli irrallisena kokonaisuutena? toimivatko paikalliset tietorakenteet ja sisäiset suoritusreitit? voidaan tarvita erityisiä tynkiä (stub) ja ajureita (driver) korvaamaan testattavan kutsumia ja sitä kutsuvia moduuleja kutsuu kutsuu ajuri testattava tynkä 1... tynkä n Testaus vaiheet Integrointitestaus toimiiko moduulijoukko integroituna kokonaisuutena (kun yksittäiset moduulit on ensin testattu erikseen)? toimiiko tiedonvälitys moduulien rajapinnoilla? toimiiko moduulien kytkentä? Tapa integroida vaikuttaa testaukseen big bang - kaikki valmiiksi, sitten kasaan ja testataan poluittain (threads) - toteutetaan ja testataan suorituspolku kerrallaan hierarkian suhteen top down(tarvitaan tynkiä) tai bottom up (tarvitaan ajureita) useimmiten bottom up tehokkain Harri Laine, Jukka Paakki 13 Harri Laine, Jukka Paakki 14 Testaus vaiheet Validointitestaus / järjestelmätestaus (usein yhdistetty) toimiiko kokonaisjärjestelmä niin kuin tuotantoprosessin alussa on määritelty? millainen on ulkoisesti havaittava toiminta, suorituskyky, varmuus, siirrettävyys, virheensietokyky, ylläpidettävyys,..? toimivatko ohjelmisto ja laitteisto yhdessä? testilajeja: alfa-testaus asiakkaan suorittama tuottajan tiloissa ja laitteilla beta-testaus asiakkaan suorittama omassa todellisessa käyttöympäristössään hyväksymistestaus, jonka osana voi olla käytettävyystestaus 1. Toiminnallinen testaus (black-bo) testaus perustuu useimmiten syötemuuttujien arvoalueen (domain) osittamiseen => arvoaluetestaus (domain testing) parametrin tyyppi (jos tiedossa) kertoo arvoalueen var I: integer; I kokonaisluku (välillä - < Ι < + ) ohjelma synnyttää arvoalueita if I<0 then else. - < Ι < 0 0 Ι < + Harri Laine, Jukka Paakki 15 Harri Laine, Jukka Paakki 16 Toiminnallinen testaus (black-bo) Arvoaluetestauksen periaate: valitaan yksi testitapaus arvoalueen sisältä valitaan arvoalueen rajat valitaan yksi testitapaus välittömästi arvoalueen rajojen ulkopuolelta esim: spesifikaatiossa arvoalue: 0 Ι 100, testiaineisto: I=50 (sisällä, voisi olla yhtä hyvin vaikkapa 78) I=0 (alarajalla) I=100 (ylärajalla) I= -1 (alarajan ulkopuolella) I=101 (ylärajan ulkopuolella) Toiminnallinen testaus (black-bo) Ekvivalenssiluokat T.J.Ostrand, M.J.Balcer: The Category-Partition Method for Specifying and Generating Functional Tests, CACM, 31, 6, 1988, pp 676-686 jokainen arvoalue jaetaan ekvivalenssiluokkiin, joille pätee: jokainen tiettyyn ekvivalenssiluokkaan kuuluva arvo käyttäytyy testauksen kannalta samalla tavalla jokainen luokan arvo paljastaa virheen yhtä suurella todennäköisyydellä jos toiminta on virheellistä arvolla α, se on virheellistä muillakin ko. luokan arvoilla jos toiminta on oikein arvolla α, se on oikein myös muilla ko. luokan arvoilla testitapauksiksi kustakin luokasta 1 (tai muutama) arvo Harri Laine, Jukka Paakki 17 Harri Laine, Jukka Paakki 18 3

Toiminnallinen testaus (black-bo) Toiminnallinen testaus (black-bo) epäkelvot arvot kelpoarvot = arvoalue ekvivalenssiluokkia var I: integer; -2-1 0 1 2 kelvollisten luokat I<0 I=0 I>0 valinta epäkelvot 3.14 abc Harri Laine, Jukka Paakki 19 Harri Laine, Jukka Paakki 20 Toiminnallinen testaus (black-bo) Toiminnallinen testaus (black-bo) Testauksen aikana ekvivalenssihypoteesi saattaa osoittautua pätemättömäksi Luokkarajoja on tällöin muutettava toimii oikein oikein toimivat toimii väärin väärin toimivat Harri Laine, Jukka Paakki 21 Harri Laine, Jukka Paakki 22 Jaa ohjelmisto spesifikaation perusteella erikseen testattaviksi osajärjestelmiksi Tunnista jokaisen osajärjestelmän syötemuuttujat testitapaus on syötemuuttujien alustusarvojen joukko Määrittele jokaiselle syötemuuttujalle sen tekijät tekijä, kategoria (category) on muuttujan keskeinen ominaisuus esim. järjestettävä taulukko tekijöitä: taulukon koko, alkioiden tyyppi, alkioiden minimiarvo, alkioiden maksimiarvo, minimiarvon sijainti, maksimiarvon sijainti - asiat jotka ovat oleellisia järjestämisen toimimisen kannalta Määrää jokaiselle kategorialle arvojen ekvivalenssiluokat (choice) esim. järjestettävä taulukko / taulukon koko: {koko=0} {koko=1} {2<=koko<=100} {koko>100} Tuota testimäärittely jokaiselle osajärjestelmälle kategorialista kunkin kategorian ekvivalenssiluokat näiden perusteella voidaan määrätä testikehykset (test frame) testikehys muodostetaan valitsemalla joukko kategorioita tarkoituksena on muodostaa testitapaus valitsemalla ensin yksi ekvivalenssiluokka kuhunkin testikehyksen kategoriaan liittyen ja sitten yksi arvo kustakin valitusta luokasta Harri Laine, Jukka Paakki 23 Harri Laine, Jukka Paakki 24 4

0 1 2 50 100 101... taulukon koko testikehys valitsee ekvivalenssiluokat tyyppi testimäärittely valitsee kategoriat testitapaus valitsee arvot minimiarvo maksimiarvo minimin sijainti Harri Laine, Jukka Paakki 25 Lisää testimäärittelyihin rajoitukset, jotka koskevat kategorioiden ja ekvivalenssiluokkien mukaanottamista testikehyksiin esim. jotkut ekvivalenssiluokat eivät voi olla samaan aikaan voimassa, kuten {taulukon koko=0} ja {minimin sijainti>100} rajoituksilla vähennetään testikehysten ja -tapausten lukumäärää Tuota testikehykset automaattisesti (testaustyökalulla) Tuota testikehyksiin liittyvät testitapaukset (testaustyökalulla) Yhdistä loogisesti yhteenkuuluvat testitapaukset testijonoiksi (test script) Harri Laine, Jukka Paakki 26 Testaa osajärjestelmät suorittamalla testijonot Ylläpidä testimäärittelyjä ja -tuloksia testitietokannassa jos saman ekvivalenssiluokan testitapaukset aiheuttavat ristiriitaista toimintaa, muuta luokkajakoa Ekvivalenssiluokat Luokittelu on pyrittävä tekemään niiden ominaisuuksien mukaan, jotka todennäköisimmin aiheuttavat virheitä Testitapauksia on valittava luokan koon mukaan : iso luokka - enemmän tapauksia luokituksen epäonnistumisen huomaamiseksi Huono luokittelu paljastaa (yleisrasitteen takia) virheitä tehottomammin kuin puhtaasti satunnainen testaus, jossa koko arvoalue tulkitaan yhdeksi ekvivalenssiluokaksi ja testitapaukset valitaan satunnaisesti Harri Laine, Jukka Paakki 27 Harri Laine, Jukka Paakki 28 Find (document, tet, direction, match case) document : työn alla oleva tekstidokumentti tet : dokumentista etsittävä merkkijono direction (down, up): etsintäsuunta suhteessa kohdistimen (kursorin) nykyiseen sijaintiin match case (yes, no): vaikuttaako kirjainten koko hakuun vai ei (so., tulkitaanko iso ja pieni kirjain samoiksi) myös kohdistimen sijainti vaikuttaa operaation toimintaan; jätetään tässä yksinkertaisuuden vuoksi pois Harri Laine, Jukka Paakki 29 Ekvivalenssiluokat : tet : {merkkijonot, joissa pieniä kirjaimia muttei isoja} {merkkijonot, joissa isoja kirjaimia muttei pieniä} {merkkijonot, joissa sekäpieniä että isoja kirjaimia} {merkkijonot, joissa ei lainkaan kirjaimia} {tyhjät (laittomat) merkkijonot} direction : {down}, {up} match case : {yes}, {no} document : {found}, {not found} löytyikö vaiko ei Harri Laine, Jukka Paakki 30 5

Menetelmä : ekvivalenssiluokkien yhdistely Menetelmä : ekvivalenssiluokkien yhdistely tet dir. match doc. pk ik pik ei -pik e d u y n f n-f (Riippumattomien) yhdistelmien eli kombinaatioiden määrä = suoritettavien testien määrä: E 1 E 2 E k E i = parametrillei määriteltyjen ekvivalenssiluokkien määrä Tässä: 5 2 2 2 = 40 Huom: Joitakin (laittomiasyötearvoja sisältäviä) yhdistelmiä ei ehkä voi suorittaa, mutta sekin on testattava! Harri Laine, Jukka Paakki 31 Harri Laine, Jukka Paakki 32 Testitapausten hahmot (40 kpl): 1 tet : pieni-kirjain, direction : down, match case : yes, document : found 2 tet : pieni-kirjain, direction : down, match case : yes, document : not found 3 tet : pieni-kirjain, direction : up, match case : yes, document : found 4 tet : pieni-kirjain, direction : up, match case : yes, document : not found 40 tet : empty, direction : up, match case : no, document : not found Jokaiselle hahmossa esiintyvälle ekvivalenssiluokalle valitaan sitä edustava parametrin arvo Samasta ekvivalenssiluokasta valitaan eri testitapauksissa eri arvoja Valitaan raja-arvoja, mikäli mahdollista tekstille sekä lyhyitä että pitkiä merkkijonoja tekstille koko merkistöä kohdistin sekä dokumentin alussa että lopussa Harri Laine, Jukka Paakki 33 Harri Laine, Jukka Paakki 34 document tet direction match case This beautiful tet (1) bea down yes This beautiful tet (2) beatles down yes This 1beautiful tet (3) 1bea up yes This 1Beautiful tet (4) 1bea up yes This &%1bEAutiful tet (5) %1beau down no This &%2beautiful tet (6) %1beau down no This BE utiful tet (7) b up no This BE utiful tet (8) beauti up no This BEAUTIFUL tet (9) BEA down yes This BEAUTIFUL tet (10) BEAT down yes THIS beautiful tet (11) THIS up yes THIS beatiful tet (12) TH2S up yes This Beautiful Tet (13) HIS down no this %#& beautiful tet (14) S down no this %#& beautiful tet (15) HIS %#& up no This %#&beautiful tet (16) #& BE up no Harri Laine, Jukka Paakki 35 document tet direction match case This Beautiful Tet (17) Tet down yes This Beautiful T et Tet down yes THIS is beautiful tet IS is up yes This is beautiful te t IS is up yes This tet 1-99 ET 1 down no This tet 1 and tet 2 et 1 down no This was beauti ful tet His Was Beauti up no (This) (Was) (123tet) (24) as( ) up no 123 one-two-three (25) 123 down yes One-two-three 1-2-3 12-3 down yes This &007# mess & up yes This Bloody Mess #% up yes (This) (was1) (was[2]) 2] down no 0987654321! #%&/*/// 7654321# down no 1!2 3#4$5%6&7/8(9)0=oop s #4$5%6&7/8(9) up no This %#&beautiful t et (32) 22 up no This is beautiful tet (33) down yes 1 or two down yes 1 or two up yes 0K1+(8Those up yes 1 & 2 down no _ down no This %#&beautiful tet up no _ (40) up no Harri Laine, Jukka Paakki 36 6

Jos Jos kombinaatioita on onliikaa, pitää pitää niitä niitä karsia. karsia. Laiskan miehen menetelmä, jossa jossa vaaditaanvain, vain, että että jokaisen ekvivalenssiluokan on on oltava oltava mukana jossakin jossakin testissä (vähintään yhdessä),, saattaa johtaa johtaa harhateille: tet dir. match doc. pk ik pik ei -pik e d u y n f n -f Mukana ainoastaan laittomassa syötteessä! Harri Laine, Jukka Paakki 37 7