đ 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