Ph.D
Group : Formal Testing and System Exploration
Test Generation and Animation Based on Object-Oriented Specifications
Starts on 01/01/2009
Advisor : WOLFF, Burkhart
Funding : CDD sur contrat UPS
Affiliation : Université Paris-Saclay
Laboratory : INRIA Saclay
Defended on 09/12/2011, committee :
Bernhard Rumpe, RWTH Aachen, Rapporteur
Catherine Dubois, Ecole Nationale Supérieure d'Informatique pour l'Industrie et l'Entreprise (ENSIIE), Rapporteur
Burkhart Wolff, Université Paris-Sud, Directeur de Thèse
Christine Paulin-Mohring, Université Paris-Sud, Examinatrice
Bruno Marre, Commissariat à l'Energie Atomique et aux Energies Alternatives (CEA), Examinateur
Research activities :
Abstract :
The goal of this thesis is the development of support for test generation and animation based on object-oriented specifications. We aim particularly to take advantage of state-of-the-art satisfiability solving techniques by using an appropriate representation of object-oriented data. While automated test generation seeks a large set of data to execute an implementation on, animation performs computations that comply with a specification based on user-provided input data. Animation is a valuable technique for validating specifications.
As a foundation of this work, we present clarifications and a partial formalization of the Object Constraint Language (OCL) as well as some extensions in order to allow for test generation and animation based on OCL specifications.
For test generation, we have implemented several enhancements to HOL-TestGen, a tool built on top of the Isabelle theorem proving system that generates tests from specifications in Higher-Order Logic (HOL). We show how SMT solvers can be used to solve various types of constraints in HOL and present a modular approach to case splitting for deriving test cases. The latter facilitates the introduction of splitting rules that are tailored to object-oriented specifications.
For animation, we implemented the tool OCLexec for animating OCL specifications. OCLexec generates from operation contracts corresponding Java implementations that call an SMT-based constraint solver at runtime.