thesis

Utilisation des structures combinatoires pour le test statistique

Defense date:

Jan. 1, 2004

Edit

Institution:

Paris 11

Disciplines:

Abstract EN:

In this thesis, we describe a new generic method for statistical testing of software procedures, according to any given graphical description of the behavior of the system under test (control flow graph, statecharts, etc. ). Its main originality is that it combines results and tools from combinatorics (random generation of combinatorial structures) with symbolic constraint solving, yielding a fully automatic test generation method. Instead of drawing input values as with classical testing methods, uniform random generation routines are used for drawing paths from the set of possible execution paths or traces of the system under test. Then a constraint resolution step is used for finding actual values for activating the generated paths. Moreover, we show how linear programming techniques may help to improve the quality of test set. A first application has been performed for structural statistical testing, first defined by Thevenod-Fosse and Waeselynck (LAAS) and a tool has been developed. Some experiments (more than 10000 on four programs of an industrial software) has been made in order to evaluate our approach and its stability. These experiments show that our approach is comparable to the one of the LAAS, is stable and has the additional advantage to be completely automated. Moreover, these first experiments show also that the method scales up well. More generally, this approach could provide a basis for a new class of tools in the domain of software testing, combining random generation of combinatorial structures, linear programming techniques, and constraint solvers.

Abstract FR:

Cette thèse propose une nouvelle approche pour le test statistique de logiciel à partir d'une description graphique des comportements du système à tester (graphe de contrôle, statecharts). Son originalité repose sur la combinaison de résultats et d'outils de combinatoire (génération aléatoire de structures combinatoires) et d'un solveur de contraintes, pour obtenir une méthode de test complètement automatisée. Contrairement aux approches classiques qui tirent des entrées, la génération aléatoire uniforme est utilisée pour tirer des chemins parmi un ensemble de chemins d'exécution ou de traces du système à tester. Puis, une étape de résolution de contraintes est utilisée pour déterminer les entrées qui permettront d'exécuter ces chemins. De plus, nous montrons comment les techniques de programmation linéaire peuvent améliorer la qualité d'un ensemble de tests. Une première application a été effectuée pour le test statistique structurel défini par Thévénod-Fosse et Waeselynck (LAAS) et un prototype a été développé. Des expériences (plus de 10000 réalisées sur quatre fonctions issues d'un logiciel industriel) ont été effectuées pour évaluer notre approche et sa stabilité. Ces expériences montrent que notre approche est comparable à celle du LAAS, est stable et a l'avantage d'être complètement automatisée. Ces premières expériences nous permettent également d'envisager un passage à l'échelle de notre approche. Plus généralement, ces travaux pourraient servir de base pour une nouvelle classe d'outils dans le domaine du test de logiciel, combinant génération aléatoire de structures combinatoires, techniques de programmation linéaire et résolution de contraintes.