Auteur / Autrice : | Ivan Enderlin |
Direction : | Fabrice Bouquet, Frédéric Dadeau, Alain 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
Mots clés contrôlés
Résumé
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.