Génération automatique de tests unitaires avec Praspel, un langage de spécification pour PHP - Inria - Institut national de recherche en sciences et technologies du numérique Accéder directement au contenu
Thèse Année : 2014

Automated Unit Test Generation with Praspel, a Specification Language for PHP

Génération automatique de tests unitaires avec Praspel, un langage de spécification pour PHP

Résumé

The works presented in this document relate to the validation of PHP programs through a new specification language, along with its tools. These works follow three axes: specification language, automatic test data generation and automatic unit test generation. The first contribution is Praspel, a new specification language for PHP, based on the Design by Contract. Praspel specifies data with realistic domains, which are new structures allowing to validate and generate data. Based on a contract, we are able to perform Contract-based Testing, i.e. using contracts to automatically generate unit tests. The second contribution is about test data generation. For booleans, integers and floating point numbers, a uniform random generation is used. For arrays, a dedicated constraint solver has been implemented and used. For strings, a grammar description language along with an LL(*) compiler compiler and several algorithms for data generation are used. Finally, the object generation is supported. The third contribution defines contract coverage criteria. These latters provide test objectives. All these contributions are implemented and experimented into tools distributed to the PHP community.
Les travaux présentés dans ce mémoire portent sur la validation de programmes PHP à travers un nouveau langage de spécification, accompagné de ses outils. Ces travaux s’articulent selon trois axes : langage de spécification, génération automatique de données de test et génération automatique de tests unitaires. La première contribution est Praspel, un nouveau langage de spécification pour PHP, basé sur la programmation par contrat. Praspel spécifie les données avec des domaines réalistes, qui sont des nouvelles structures permettant de valider et générer des données. À partir d’un contrat écrit en Praspel, nous pouvons faire du Contract-based Testing, c’est à dire exploiter les contrats pour générer automatiquement des tests unitaires. La deuxième contribution concerne la génération de données de test. Pour les booléens, les entiers et les réels, une génération aléatoire uniforme est employée. Pour les tableaux, un solveur de contraintes a été implémenté et utilisé. Pour les chaînes de caractères, un langage de description de grammaires avec un compilateur de compilateurs LL(*) et plusieurs algorithmes de génération de données sont employés. Enfin, la génération d’objets est traitée. La troisième contribution définit des critères de couverture sur les contrats. Ces derniers fournissent des objectifs de test. Toutes ces contributions ont été implémentées et expérimentées dans des outils distribués à la communauté PHP.
Fichier principal
Vignette du fichier
PhdThesis.pdf (3.49 Mo) Télécharger le fichier

Dates et versions

tel-01093355 , version 1 (10-12-2014)
tel-01093355 , version 2 (19-10-2016)

Identifiants

  • HAL Id : tel-01093355 , version 1

Citer

Ivan Enderlin. Génération automatique de tests unitaires avec Praspel, un langage de spécification pour PHP. Génie logiciel [cs.SE]. Université de Franche-Comté, 2014. Français. ⟨NNT : ⟩. ⟨tel-01093355v1⟩
532 Consultations
2501 Téléchargements

Partager

Gmail Facebook X LinkedIn More