• Aucun résultat trouvé

Afin de v´erifier le bon fonctionnement de la m´ethode de g´en´eration de tests de vuln´erabilit´e sur le cas d’´etude du VCI , un ensemble d’outils ont ´et´e r´ealis´es. Plusieurs it´erations pour d´evelopper la m´ethode et les outils ont ´et´e n´ecessaires. De nombreuses versions majeures ont ainsi ´et´e propos´ees pour certains d’entre eux. Les premi`eres ´etaient bas´ees sur l’utilisation de l’API de Rodin. Cependant, cette API ´etant complexe et peu optimis´ee pour nos besoins, nous avons pr´ef´er´e utiliser l’API de ProB. Ces outils se d´ecomposent en deux cat´egories : les outils pour la m´ethode et les outils pour les cas d’´etudes.

6.1 Outils pour la m´ethode

Les outils pour la m´ethode sont g´en´eriques et peuvent ˆetre utilis´es pour tout mod`ele ou SUT. Chacun de ces outils est l’impl´ementation d’un composant du VTG.

6.1.1 Aplanissement de mod`eles Event-B

L’aplanissement du mod`ele, d´ecrit dans la section 4.2, est r´ealis´e en Java. Il se base sur l’API de ProB pour la repr´esentation objet et la manipulation de mod`eles Event-B. Ce mod`ele est ensuite transmis au module de mutation de mod`ele. Une seule version compos´ee d’environ 500 lignes de code a ´et´e n´ecessaire et son d´eveloppement a n´ecessit´e quelques heures.

6.1.2 Mutation de mod`eles Event-B

La mutation de mod`eles Event-B est d´ecompos´ee en trois ´etapes. Dans un premier temps, les formules `a muter sont extraites. Ces formules sont ensuite mut´ees selon les r`egles d´ecrites dans la section 4.4. Finalement les r´esultats de la mutation pr´ec´edente permettent de constituer les contextes mutants, ´ev´enements mutants et machines mutantes comme d´ecrits dans la section 4.4.2. Les mutations se font `a travers la repr´esentation objet des mod`eles dans ProB.

La mutation de formules se base sur un analyseur grammatical et syntaxique de formules Event-B. L’analyseur de Rodin a ´et´e r´eutilis´e pour cette tˆache. Il se base sur l’API TOM [63] d´evelopp´e par le LORIA. L’analyse permet de d´eterminer quelle r`egle de mutation doit ˆetre appliqu´ee. Les r`egles de r´e´ecriture sont impl´ement´ees en Java. Un programme Java de 2700 lignes de code permet de r´ealiser la mutation de machines, de contextes ainsi que de formules sans prendre en compte les param`etres d´ecrits dans la section 4.4.

Cette partie du VTG est la plus complexe et a subi de nombreuses modifications. Trois versions majeures ont ´et´e produites. La premi`ere se base sur une ancienne version de Rodin. Dˆu `a de nombreux probl`emes de stabilit´e de Rodin, le VTG n’´etait pas stable. Lorsqu’une version stable de la plateforme fut disponible, le VTG fut port´e. De nombreuses fonctionnalit´es ayant disparu, une adaptation de nos logiciels a dˆu ˆetre r´ealis´ee. De plus, nous avons utilis´e l’analyseur syntaxique et grammatical TOM. Cette version du programme ´etait compos´ee de plus de 10000 lignes de code et prenait en compte les param`etres de mutation. Pour la derni`ere version du VTG, Rodin a ´et´e abandonn´e au profit de ProB. Rodin ´etant destin´e `a ´editer et prouver des mod`eles Event-B, la

repr´esentation interne de ses mod`eles ne correspondait pas `a nos objectifs. ProB ayant mis `a disposition, durant la derni`ere ann´ee de doctorat, une API permettant de manipuler les mod`eles correspondant `a nos besoins, nous avons red´evelopp´e le VTG. La production de la mutation de mod`eles a n´ecessit´e environ une ann´ee au total.

6.1.3 Extraction de tests

Cet outil est r´ealis´e en partenariat avec Michael Leuschel. Il fait maintenant partie de l’ensemble des outils de test `a base de mod`ele propos´e par ProB. Seule l’extraction statique des tests est impl´ement´ee. Il est d´evelopp´e en Prolog. Deux mois nous ont ´et´e n´ecessaires. L’ensemble de tests abstrait est enregistr´e dans un fichier XML.

6.2 Outils pour le cas d’´etude

Les outils pour le cas d’´etude ne sont utilisables que pour le VCI . Cependant, ils sont des exemples d’outils qu’il serait n´ecessaire de d´evelopper pour d’autres SUT.

6.2.1 CAP2Rodin

Comme nous l’avons vu dans le chapitre pr´ec´edent, nous utilisons un mod`ele pr´erempli. Le nombre de champs d’un fichier CAP ´etant tr`es grand, nous ne pouvons pas les traduire manuellement dans un mod`ele Rodin. L’outil CAP2Rodin prend en entr´ee un fichier CAP et cr´ee les mod`eles n´ecessaires `a sa repr´esentation en Rodin. Cet outil est d´evelopp´e en Java.

Il a ´et´e r´ealis´e par 3 groupes d’´etudiants de licence et de master de l’Universit´e de Limoges. La version actuelle est compl`ete et aurait n´ecessit´e environ 8 mois de travail pour une personne. Elle est compos´ee de 2000 lignes de code.

6.2.2 XML2CAP

La concr´etisation statique des tests est r´ealis´ee `a l’aide de l’outil XML2CAP. Le VTG produit des tests abstraits sous forme de XML qui sont ensuite concr´etis´es en fichier CAP. Cet outil n’est pour le moment utilisable que pour la v´erification de type. Il est d´evelopp´e en Java et se base sur l’API CAPMAP [64]. Ce d´eveloppement a ´et´e r´ealis´e conjointement avec des ´etudiants de l’Universit´e de Limoges. Le mod`ele influant grandement sur le type de tests extraits, cet outil a ´et´e fr´equemment mis `a jour. La derni`ere version, compos´ee de 600 lignes de programmation, a ´et´e produite en 2 jours.

6.2.3 TestOnPC et TestOnCard

Ces deux outils permettent d’ex´ecuter les tests en envoyant les fichiers CAP au SUT. De plus, ils permettent de d´eterminer si le r´esultat d’un test correspond au r´esultat attendu. Ces deux impl´ementations permettent respectivement d’ex´ecuter les tests sur l’impl´ementation du VCI de Oracle et sur des impl´ementations embarqu´ees. Ces outils compos´es respectivement de 150 et 200 lignes de Java ont ´et´e d´evelopp´es en quelques heures, mais poss`edent encore de nombreux probl`emes h´erit´es d’instabilit´es dans les drivers et API utilis´es.

Documents relatifs