haku: @keyword dynamic symbolic execution / yhteensä: 2
viite: 2 / 2
« edellinen | seuraava »
Tekijä:Kähkönen, Kari
Työn nimi:Automated dynamic test generation for sequential Java programs
Automatisoitu dynaaminen testien generointi Java-ohjelmille
Julkaisutyyppi:Diplomityö
Julkaisuvuosi:2008
Sivut:viii + 58      Kieli:   eng
Koulu/Laitos/Osasto:Informaatio- ja luonnontieteiden tiedekunta
Oppiaine:Tietojenkäsittelyteoria   (T-119)
Valvoja:Niemelä, Ilkka
Ohjaaja:Heljanko, Keijo
Digitoitu julkaisu: https://aaltodoc.aalto.fi/handle/123456789/95750
OEVS:
Digitoitu arkistokappale on julkaistu Aaltodocissa
Sijainti:P1 Ark Aalto     | Arkisto
Avainsanat:dynamic symbolic execution
test case generation
code instrumentation
constraint solving
testing Java programs
dynaaminen symbolinen suoritus
testitapausten generoiminen
koodin instrumentointi
rajoitteiden ratkaiseminen
Java-ohjelmien testaus
Tiivistelmä (fin): Testausta ohjelmistoteollisuudessa on perinteisesti tehty ihmistyönä Tuotujen testitapausten avulla.
Koska kyseinen menetelmä on kallis sen vaatiman työmäärän johdosta, automaattisille menetelmille testitapausten tuottamiseen on tarvetta.
Tässä työssä tarkastellaan, kuinka dynaamista symbolista suoritusta, voidaan käyttää testitapausten tuottamiseen automatisoidusti Javalla toteutetuille ohjelmille, joissa ei esiinny rinnakkaisuutta.

Työssä käytetty dynaaminen symbolinen suoritus on menetelmä, jossa testattava ohjelma suoritetaan sekä konkreettisesti että symbolisesti yhtä aikaa.
Suorituksen aikana menetelmässä kerätään symbolisia rajoitteita kuvaamaan syötearvojen joukkoja, jotka pakottavat ohjelman suorituksen seuraamaan aikaisemmin tutkimatonta suorituspolkua.
Ratkaisemalla kerätyt rajoitteet saadaan muodostettua uusia konkreettisia syötearvoja ja näin ollen jokainen testisuoritus saadaan testaamaan toisista testiajoista poikkeavaa käyttäytymistä.

Symbolisen suorituksen yhdistäminen konkreettisilla arvoilla suorittamiseen on mahdollista toteuttaa instrumentoimalla annetun ohjelman suoritettavaa versiota.
Pitämällä muistissa testiajojen aikana muodostetut rajoitteet voidaan seuraavan tutkimattoman suorituspolun valinta tehdä usealla erilaisella hakustrategialla.
Menetelmällä, kuinka seuraava tutkittava polku valitaan, on kasvava merkitys silloin, kun testattavan ohjelman suorituspolkujen avaruus on liian suuri, jotta se voitaisiin käydä kattavasti läpi.

Työssä kuvataan myös testausjärjestelmän rakenne, joka mahdollistaa useiden dynaamiseen symboliseen suoritukseen liittyvien testausajojen suorittamisen samanaikaisesti.
Tämä mahdollistaa moniydinsuorittimien sekä useiden erillisten tietokoneiden käytön testitapausten generoimisessa.
Muita tämän työn tuloksia ovat menetelmä alustaa syötteenä annettavia olioita laiskasti sekä tekniikka, jolla voidaan välttää turhien testien luominen tietyissä tapauksissa, kun olioita käytetään ohjelmaan syötteenä.

Työssä kehitettyihin menetelmiin pohjautuen on toteutettu työkalu, jota voidaan käyttää Java-ohjelmien testaukseen automatisoidusti.
Toteutusta tarkastellaan tapaustutkimuksien pohjalta ja työstä saatujen kokemusten pohjalta dynaamisen symbolisen suorituksen skaalattavuutta laajoille ohjelmille arvioidaan.
ED:2008-08-26
INSSI tietueen numero: 36095
+ lisää koriin
« edellinen | seuraava »
INSSI