1 / 6

Tietovuohon perustuva yksikkötestaus (1/6)

Tietovuohon perustuva yksikkötestaus (1/6). Lasilaatikkotestauksen toinen lähestymistapa. Siinäkin käytetään vuoverkkoa. Tarkastelun kohteena ovat moduulin muuttujat (myös sen käyttämät globaalit muuttujat). Erityisen kiinnostavaa olio-ohjelmille.

tam
Download Presentation

Tietovuohon perustuva yksikkötestaus (1/6)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tietovuohon perustuva yksikkötestaus (1/6) Lasilaatikkotestauksen toinen lähestymistapa. • Siinäkin käytetään vuoverkkoa. • Tarkastelun kohteena ovat moduulin muuttujat (myös sen käyttämät globaalit muuttujat). • Erityisen kiinnostavaa olio-ohjelmille. • Olion atribuuttien välittämä tietovuo metodinkutsujen välillä. Jokainen muuttujan käsittelytapaus luokitellaan seuraavasti: • määrittely (definition, D): muuttujalle annetaan arvo (alustuksella, sijoituksella tai syöttöoperaatiolla) • käyttö eli lukeminen(use, U): muuttujan arvoa käytetään mutta ei muuteta • predikaattikäyttö (predicate use, P-use): käytetään haarautumisehdossa (tai silmukan ohjausmuuttujana) • laskentakäyttö (computational use, C-use): käytetään muihin tarkoituksiin (laskentaan, tulostukseen) • tuhoaminen (kill, K): muuttuja tuhotaan tai sen arvo tehdään määrittelemättömäksi.

  2. Tietovuohon perustuva yksikkötestaus (2/6) Mahdolliset peräkkäisten tapauslajien järjestykset: • DD – lievästi epäilyttävä (edellistä arvoa ei käytetä mihinkään) • DK – samoin epäilyttävä • DU – perustapaus (jota varten muuttujat ovat olemassa) • UD, UU, UK – normaalia • KD – normaalia • KK – kummallinen (ei mahdollinenkaan kaikissa kielissä) • KU – virheellinen! Lisäksi muuttujaan kohdistuvan ensimmäisen tapauksen pitää olla D; viimeinen tapaus on luonnollisimmin K. • Joissakin kielissä kaikki paikalliset muuttujat alustetaan automaattisesti. • Globaalit muuttujat erikoistapauksia. Vuokaavion solmut (segmentit): • Luetteloidaan jokaisen muuttujan käsittelyt kussakin segmentissä. • Tapausjärjestys segmentin sisällä on täysin staattinen. • Segmenttien välillä kiinnostaa polulla aiemman segmentin viimeinen ja myöhemmän ensimmäinen tapaus (muuttujittain). • Kaikki staattisessa analyysissä todettavat polut eivät kuitenkaan ole välttämättä mahdollisia.

  3. Tietovuohon perustuva yksikkötestaus (3/6) DU-polku (DU path) (jonkin muuttujan suhteen): • Ensimmäisessä segmentissä on D-tapaus (määrittely). • Viimeisessä segmentissä on U-tapaus (käyttö). • P-käyttö tulkitaan yleensä niin, että se ei tapahdu itse predikaattisolmussa vaan siitä lähtevissä kaarissa. • Välillä ei ole yhtään D- eikä K-tapausta. • Siis ei välttämättä koko aliohjelman alusta loppuun. • DU-polku voi olla toisen DU-polun osapolku. • Kattavuuden kannalta vain maksimaaliset polut ovat kiinnostavia. • Silmukoita ei kuitenkaan käydä DU-polulla läpi moneen kertaan. Tietovuopohjaisessa testauksessa pyritään kattamaan DU-polkuja. • Koko polulla aliohjelman alusta loppuun voidaan joutua käymään silmukka läpi kahdesti. Yleisiä kattavuustavoitteita: • Vahvin: kaikki DU-polut (ADUP). • Ei kuitenkaan vaadi niin paljon testitapauksia kuin voisi luulla, koska sama testi kattaa yleensä useita muuttujia, määrittelyjä ja käyttöjä. • Kaikki käytöt (AU): ainakin yksi DU-polku jokaisesta määrittelystä sen jokaiseen käyttöön.

  4. Tietovuohon perustuva yksikkötestaus (4/6) • Kaikki P-käytöt (APU): ainakin yksi DU-polku jokaisesta määrittelystä sen jokaiseen predikaattikäyttöön. • Em. tulkinnalla takaa haarakattavuuden. • Kaikki C-käytöt (ACU): vastaavasti laskentakäytöille. • Ei takaa haarakattavuutta. • Kaikki P-käytöt ja jotkin C-käytöt (APU+C): kuten APU, mutta lisäksi ainakin yksi DU-polku C-käyttöön jokaisesta sellaisesta määrittelystä, jolla ei ole yhtään P-käyttöä. • Kaikki C-käytöt ja jotkin P-käytöt (ACU+P): vastaavasti kuin APU+C. • Kaikki määritelmät (AD): ainakin yksi DU-polku jokaisesta määrittelystä. Luokanlaajuisessa vuoverkossa kiinnostavia ovat sellaiset DU-polut, jotka ylittävät metodinrajat. Polun herkistäminen tapahtuu tietysti samoin kuin ohjausvuohon perustuvassa testauksessa. • DU-polut ovat kuitenkin melko helppoja, varsinkin silmukkojen käsittely.

  5. Tietovuohon perustuva yksikkötestaus (5/6) Muutamien testausstrategioiden (kattavuusmittojen) vahvuussuhteita • Nuoli A:sta B:hen: A on (aidosti) vahvempi kuin B. • Jos A:n ja B:n välillä ei ole polkua, ne ovat "vertailukelvottomia".

  6. Tietovuohon perustuva yksikkötestaus (6/6) Tietovuotestauksen ongelmia Taulukoista ei yleensä tiedetä staattisesti, mitä alkiota missäkin käsitellään. • Voidaan valita turhia polkuja (luultavasti vain pieni lisärasite). • Mahdollinenkin tietovuo voi jäädä toteutumatta. Osoitin- ja viitemuuttujat aiheuttavat paljon suurempia ongelmia. • Mm. useimmissa oliokielissä kaikki muuttujat (perustyyppejä lukuunottamatta) ovat viitteitä. • On otettava huomioon sekä itse muuttujat että niiden kulloinkin osoittamat oliot (laajassa merkityksessä). • Samannimisyys (aliasing): useat muuttujat viittaavat samaan olioon. • Nollaosoitin on hankala erikoistapaus. • Ei yleensä käsitellä testauskirjoissa! Varsinaisten olioiden käsittely on suureksi osaksi metodien kutsumista, ei yksinkertaista kirjoittamista ja lukemista. Työkalutuki on melko huono. • Uudempi lähestymistapa kuin ohjausvuotestaus.

More Related