Stage de M2 Génération de tests structurels pour des crit`eres

Transcription

Stage de M2 Génération de tests structurels pour des crit`eres
Stage de M2
Génération de tests structurels
pour des critères avancés
Domaine : méthodes formelles, vérification, génération automatique de tests structurels
Mots clés : exécution dynamique symbolique, critères de couverture avancés, mutations
Encadrant : Sébastien Bardin (CEA), Nikolay Kosmatov (CEA)
Contacts :
[email protected], [email protected]
http://sebastien.bardin.free.fr
• Lieu de stage : CEA, Saclay (région parisienne). Durée : 5-6 mois.
• Rémunération : oui
• Continuation en thèse possible
•
•
•
•
Le test est la méthode principale de vérification et validation du logiciel [1]. C’est une activité
coûteuse dont l’un des points clés est la synthèse de données d’entrée du programme permettant
de couvrir certains objectifs de test. L’exécution dynamique symbolique (DSE) [2,3] permet à
partir du code source d’un programme de générer automatiquement des jeux de tests atteignant
une couverture structurelle du code très élevée. Ceci permet d’envisager des procédés de test du
logiciel massifs et complètement automatisés. Cependant la méthode DSE n’est utilisée pour le
moment qu’avec des critères de tests assez pauvres, typiquement la couverture des branches ou
des instructions du programme. Des critères plus intéressants (en terme de détection de fautes)
sont par exemple les critères de mutation ou des critères logiques avancés comme MCDC [1].
Sujet. Nous développons actuellement au CEA un critère de test puissant et versatile, la
couverture de labels, capable d’émuler une grande partie des autres critères de tests. Le but
de ce stage est de réaliser l’intégration de ce critère au sein de l’outil PathCrawler [3] et de la
plate-forme de vérification Frama-C [4]. Les travaux prévus sont les suivants : (1) concevoir et
réaliser des modules d’annotation automatique de programmes, qui à partir d’un programme
C et d’un critère de test connu, retourne le programme C annotés avec des labels émulant le
critère voulu ; (2) assurer l’interfaçage avec l’outil PathCrawler, par exemple en retournant les
couvertures atteintes par les jeux de tests générés par PathCrawler ; (3) profiter des services
d’analyse statique de Frama-C pour optimiser le processus de couverture des labels, par exemple
en détectant des labels insatisfiables. L’étudiant devra par ailleurs évaluer son implémentation,
à la fois en termes de correction des mesures obtenues et d’efficacité.
Références.
[1.] P. Ammann, J. Offutt. Introduction to Software Testing. 2008.
[2.] P. Godefroid, N. Klarlund, K. Sen. DART : Directed Automated Random Testing. In PLDI 2005.
[3.] N. Williams, B. Marre, P. Mouy. On-the-Fly Generation of K-Path Tests for C Functions. In ASE
2004.
[4.] http ://frama-c.com/