Testing, abstraction, theorem proving: better together !

✒ Enzo SandrĂ© · 📆 22/07/2025 · đŸ§Ș Tests

🔎 L’analyse dynamique (les tests) ne pourra jamais valider tous les comportements possibles d’un programme : elle sous-approxime. A l’inverse, l’analyse statique tend à sur-approximer et à produire un grand nombre de faux-positifs. Est-il possible de prendre le meilleur des deux mondes ? Des chercheurs proposent un moyen d’y parvenir.

đŸ€– Les tests sont d’abord exĂ©cutĂ©s afin d’obtenir un jeu d’états concrets du programme. Ce jeu d’états est gĂ©nĂ©ralisĂ© en un jeu d’états abstraits, reprĂ©sentant l’ensemble des Ă©tats dans lequel le programme peut potentiellement se trouver. Un dĂ©monstrateur de thĂ©orĂšme automatisĂ© va ensuite vĂ©rifier que ce jeu d’états abstrait vĂ©rifie certaines propriĂ©tĂ©s dĂ©sirables et passe lui-mĂȘme une version gĂ©nĂ©ralisĂ©e des tests. Si ça n’est pas le cas, le dĂ©monstrateur va gĂ©nĂ©rer des contre-exemples permettant au dĂ©veloppeur d’augmenter la couverture.

🔧 Je n’ai pas trouvĂ© d’outil appliquant ce principe. Les tests de mutation ont mis 25 ans Ă  passer du laboratoire aux IDE, je pense que les prochaines annĂ©es verront ce type d’outils venir renforcer nos pratiques.

SOURCE

Greta Yorsh, Thomas Ball, and Mooly Sagiv. 2006. Testing, abstraction, theorem proving: better together! In Proceedings of the 2006 international symposium on Software testing and analysis (ISSTA ‘06). Association for Computing Machinery, New York, NY, USA, 145–156. DOI:10.1145/1146238.1146255

Enzo Sandré


📄 Lien public DOIs: 10.1145/1146238.1146255