Thèse soutenue

Génération automatique de tests unitaires avec Praspel, un langage de spécification pour PHP
FR  |  
EN
Accès à la thèse
Auteur / Autrice : Ivan Enderlin
Direction : Fabrice BouquetFrédéric DadeauAlain Giorgetti
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 16/07/2014
Etablissement(s) : Besançon
Ecole(s) doctorale(s) : École doctorale Sciences pour l'ingénieur et microtechniques (Besançon ; 1991-....)
Partenaire(s) de recherche : Equipe de recherche : FEMTO-ST : Franche-Comté Electronique Mécanique Thermique et Optique - Sciences et Technologies (Besançon)
Laboratoire : Franche-Comté Électronique Mécanique, Thermique et Optique - Sciences et Technologies
Jury : Président / Présidente : Michel Rueher
Examinateurs / Examinatrices : Fabrice Bouquet, Frédéric Dadeau, Alain Giorgetti, Michel Rueher, Arnaud Gotlieb, Lydie du Bousquet
Rapporteurs / Rapporteuses : Arnaud Gotlieb, Lydie du Bousquet

Mots clés

FR  |  
EN

Mots clés contrôlés

Résumé

FR  |  
EN

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 etgé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.