Raisonnement à contraintes pour le test de bytecode Java
Résumé
Le test logiciel permet d'augmenter la confiance que l'on porte à un programme ou un système. Dans ce contexte, il s'agit d'exécuter le programme avec un certain nombre d'entrées dans le but de couvrir des objectifs de test, comme celui qui consiste à atteindre toutes les instructions du programme au moins une fois durant la phase de test. Idéalement, on souhaite générer ces entrées de manière automatique mais ce problème est indécidable dans le cas général. Dans notre travail, nous avons développé une méthode (incomplète) pour ce problème qui s'appuie sur une vision relationnelle du programme. Cet article présente des opérateurs à contraintes servant à modéliser les instructions du bytecode Java sous la forme d'une relation entre deux états de la mémoire : l'état de la mémoire avant l'instruction et l'état de la mémoire après l'instruction. Les opérateurs expriment des liens entre des états du tas, celui-ci est vu comme une fonction définie sur une partie des entiers naturels. Les algorithmes de filtrage de ces opérateurs permettent des déductions fortes que nous illustrons sur un exemple complexe. Ce modèle est, à notre connaissance, le premier modèle à contraintes proposé pour tester le bytecode Java.
Domaines
Langage de programmation [cs.PL]Origine | Fichiers produits par l'(les) auteur(s) |
---|