haku: @keyword automated testing / yhteensä: 16
viite: 3 / 16
Tekijä:Saarikivi, Olli
Työn nimi:Test-guided proofs for C programs on LLVM
Testiohjatut todistukset C-ohjelmille LLVM-järjestelmässä
Julkaisutyyppi:Diplomityö
Julkaisuvuosi:2013
Sivut:61      Kieli:   eng
Koulu/Laitos/Osasto:Perustieteiden korkeakoulu
Oppiaine:Tietojenkäsittelyteoria   (T-79)
Valvoja:Heljanko, Keijo
Ohjaaja:Kähkönen, Kari
OEVS:
Sähköinen arkistokappale on luettavissa Aalto Thesis Databasen kautta.
Ohje

Digitaalisten opinnäytteiden lukeminen Aalto-yliopiston Harald Herlin -oppimiskeskuksen suljetussa verkossa

Oppimiskeskuksen suljetussa verkossa voi lukea sellaisia digitaalisia ja digitoituja opinnäytteitä, joille ei ole saatu julkaisulupaa avoimessa verkossa.

Oppimiskeskuksen yhteystiedot ja aukioloajat: https://learningcentre.aalto.fi/fi/harald-herlin-oppimiskeskus/

Opinnäytteitä voi lukea Oppimiskeskuksen asiakaskoneilla, joita löytyy kaikista kerroksista.

Kirjautuminen asiakaskoneille

  • Aalto-yliopistolaiset kirjautuvat asiakaskoneille Aalto-tunnuksella ja salasanalla.
  • Muut asiakkaat kirjautuvat asiakaskoneille yhteistunnuksilla.

Opinnäytteen avaaminen

  • Asiakaskoneiden työpöydältä löytyy kuvake:

    Aalto Thesis Database

  • Kuvaketta klikkaamalla pääset hakemaan ja avaamaan etsimäsi opinnäytteen Aaltodoc-tietokannasta. Opinnäytetiedosto löytyy klikkaamalla viitetietojen OEV- tai OEVS-kentän linkkiä.

Opinnäytteen lukeminen

  • Opinnäytettä voi lukea asiakaskoneen ruudulta tai sen voi tulostaa paperille.
  • Opinnäytetiedostoa ei voi tallentaa muistitikulle tai lähettää sähköpostilla.
  • Opinnäytetiedoston sisältöä ei voi kopioida.
  • Opinnäytetiedostoa ei voi muokata.

Opinnäytteen tulostus

  • Opinnäytteen voi tulostaa itselleen henkilökohtaiseen opiskelu- ja tutkimuskäyttöön.
  • Aalto-yliopiston opiskelijat ja henkilökunta voivat tulostaa mustavalkotulosteita Oppimiskeskuksen SecurePrint-laitteille, kun tietokoneelle kirjaudutaan omilla Aalto-tunnuksilla. Väritulostus on mahdollista asiakaspalvelupisteen tulostimelle u90203-psc3. Väritulostaminen on maksullista Aalto-yliopiston opiskelijoille ja henkilökunnalle.
  • Ulkopuoliset asiakkaat voivat tulostaa mustavalko- ja väritulosteita Oppimiskeskuksen asiakaspalvelupisteen tulostimelle u90203-psc3. Tulostaminen on maksullista.
Sijainti:P1 Ark Aalto     | Arkisto
Avainsanat:automated testing
verification
dynamic symbolic execution
abstraction refinement
automaattinen testaus
verifiointi
dynaaminen symbolinen suoritus
abstraktion hienontaminen
Tiivistelmä (fin): Ohjelmistovirheet voivat olla hyvin kalliita, varsinkin turvallisuus- ja talouskriittisissä järjestelmissä.
Monet näistä virheistä voidaan välttää jos voidaan varmistaa että ohjelmistot täyttävät niille annetut spesifikaatiot.
Kun spesifikaatio on annettu formaalisti, esimerkiksi lähdekoodiin kirjoitetuilla assertioilla, voidaan automaattisilla ohjelmiston verifiointimenetelmillä tarkastaa että ohjelmisto täyttää sen spesifikaation.

Viime aikoina on ollut paljon kiinnostusta yhdistää yli- ja aliapproksimoivia lähestymistapoja ohjelmistojen verifiointiin.
DASH algoritmi toteuttaa tällaisen menetelmän.
Se generoi testejä parantaakseen aliapproksimaatiota verifioitavasta ohjelmasta.
Samanaikaisesti DASH hienontaa ohjelmaa yliapproksimoivaa abstraktiota testien generoinnista kerätyllä informaatiolla.

Esittelemme avoimen lähdekoodin työkalun, joka toteuttaa DASH algoritmin LLVM kääntäjäkirjastolla käännettyjen C ohjelmien verifiointiin.
Toteutuksemme perustuu dynaamisen symbolisen suorituksen työkaluun LCT:hen.
Annamme myös yksityiskohtaisen menetelmän tuottaa DASH:n vaatima heikoimpiin esiehtoihin perustuva abstraktion hienonnusoperaattori LLVM:n välikielen käskyille.

DASH evaluoi predikaatteja testien aikana nähdyille konkreettisille tiloille ylläpitääkseen kuvausta testiajojen ja abstraktion välillä.
Suoraviivainen toteutus saattaisi tallentaa jokaisen ajetun testin kokonaiset konkreettiset tilat tai ajaa testejä toistamiseen konkreettisten tilojen uudelleenkonstruoimiseksi.
Esittelemme menetelmän jolla ainoastaan osoittimia sisältävien muuttujien arvot tallennetaan ilman että testejä pitää uudelleenajaa.

Lopuksi näytämme työkalumme käyttökelpoisuuden kokeiden avulla.
Dokumentoimme myös DASH algoritmissa käytetyn tehokkaamman abstraktion hienonnusoperaattorin sekä esittelemme sen vaikutuksen kokeellisesti.
Tiivistelmä (eng): Software defects can be very expensive, especially when encountered in economically critical or safety critical systems.
Many of these defects can be avoided if it can be ensured that a program meets its specification.
When the specification is given formally, for example with assertions embedded in the source code, automated software verification methods can be applied to determine whether a program complies with its specification.

Recently there has been much interest in combining under approximation and over approximation based approaches to software verification.
Such a technique is employed by the DASH algorithm originally developed at Microsoft, which generates tests to improve an under approximation of the program under test.
Simultaneously, an over approximating abstraction of the program is refined with information gathered from test generation.

We present an open source implementation of the DASH algorithm for the verification of C programs compiled on the LLVM compiler framework.
Our implementation is an extension of the dynamic symbolic execution tool LCT.
We also present a detailed method for constructing the weakest precondition based refinement operator employed by DASH for instructions of the LLVM internal representation.

To maintain a mapping between concrete executions and the abstraction DASH needs to evaluate predicates on the concrete states visited during test executions.
A straightforward implementation might store the complete concrete states of each executed test or might employ expensive re-executions to recover the concrete states.
We present a technique which allows only the concrete values of pointer variables to be stored while still requiring no re-executions.

Finally we present a case study to show the viability of our tool.
We also document a more powerful abstraction refinement method used in DASH and evaluate its effect.
ED:2013-08-06
INSSI tietueen numero: 47021
+ lisää koriin
INSSI