• Aucun résultat trouvé

Les trois contributions majeures de cette thèse s’articulent autour de deux axes : la mise au point de deux techniques de test adaptées aux transformations de modèles, l’intégration de ces techniques dans une approche globale d’un composant de transformation de modèles. Ce deuxième axe a compris différentes expériences et développements d’outils.

La difficulté de l’élaboration de techniques pour le test de transformations de modèles réside essentiellement dans la nature et la complexité des données manipulées : des modèles. Nous avons également pris en compte l’absence de langage de transformation unanimement reconnu et le fait que les traitements d’une transformation sont essentiellement basés sur des méta- modèles définis au niveau méta.

6.1.1 Analyse de mutation pour le test de transformations de modèles

Dans le chapitre 3, nous avons proposé une adaptation de l’analyse de mutation pour le test de transformations de modèles. L’analyse de mutation est impliquée dans plusieurs activités du test. Elle permet de qualifier un ensemble de données de test ce qui est une forme de critère d’arrêt. Ce critère permet de guider la génération de nouvelles données si la qualité des données est insuffisante. Cette technique permet également de mettre à l’épreuve les oracles et de vérifier l’efficacité de techniques de génération de données de test.

Il était nécessaire d’adapter l’analyse de mutation au contexte des transformations de modèles pour avoir une technique indépendante de l’implantation des transformations, en particulier du langage utilisé, et pour refléter les erreurs particulières aux transformations.

Nous avons proposé de baser les opérateurs spécifiques aux transformations, non pas au niveau syntaxique du code de l’implantation mais à un niveau sémantique. Les dix opérateurs que nous proposons définissent des erreurs qui altèrent les opérations élémentaires d’une transformation : la navigation d’un modèle, la sélection d’objets par filtrage, et la création d’objets.

Notre adaptation de l’analyse de mutation permet d’évaluer différentes techniques et critères pour le test de transformations. Par exemple, nous travaillons à l’évaluation de critères de test fonctionnels, comme nous l’avons expliqué dans la section 5.4. De plus, la définition des opérateurs au niveau sémantique permet de comparer ces techniques dans différents langages de transformation (en introduisant la même erreur au niveau sémantique dans une transformation implantée dans deux langages différents). Il est également possible d’exploiter les mutants pour mettre à l’épreuve des oracles.

6.1.2 Oracles pour le test de transformations de modèles

Dans le chapitre 4, nous avons proposé six fonctions d’oracle pour le test de transformations de modèles. Ces fonctions diffèrent sur la nature des données d’oracle qu’elles nécessitent : des transformations de référence ou inverse, des modèles, des contraintes OCL (sous forme de contrat ou d’assertion), des assertions avec des patterns de model snippets.

Nous avons étudié différentes propriétés des fonctions pour évaluer quelle fonction permet de réaliser des oracles réutilisables sans risque d’erreur. Nous avons évalué ces deux qualités en fonction de la généricité et la complétude des fonctions, les redondances et la taille des données, le couplage entre les données et les méta-modèles. Nous avons déduit que les fonctions qui modularisent le plus leur vérification permettent de réaliser des oracles avec moins de risque d’erreur tout en permettant une plus grande réutilisabilité.

6.1.3 Qualification de composants de transformations de modèles

Dans le chapitre 5, nous avons exploité nos premières contributions pour adapter et expérimenter une méthodologie globale pour la construction de composants de transformation de modèles. Nous intégrons dans ces composants à la fois : l’implantation, les cas de test, et la spécification sous forme de contrat. Nous avons expérimenté cette méthodologie grâce à

143 Conclusions et perspectives

plusieurs développements : un support des contraintes dans Kermeta, une plate-forme expérimentale supportant l’analyse de mutation pour les transformations, et un harnais de test pour l’exécution des tests qui supporte les fonctions d’oracle proposées.

Les développements réalisés sont importants pour nos recherches mais ils bénéficient également à d’autres travaux. Le principal est notre intégration du support des contrats dans Kermeta. Il sert de base au support du standard OCL dans Kermeta. Cette fonctionnalité apporte à la plate-forme Kermeta le quatrième aspect essentiel pour en faire une plate-forme complète pour l’Ingénierie Dirigée par les Modèles (comme illustrée dans la figure 5-6 : avec la méta- modélisation, la sémantique, les transformations, et les contraintes).

La plate-forme développée pour supporter l’analyse de mutation pour les transformations de modèles nous sert à exploiter cette technique directement pour le test, mais pas seulement. Elle permet également d’utiliser des contrats comme oracle, ce que nous exploitons pour les qualifier quand ils sont embarqués dans un composant de confiance. Par ailleurs, nous l’utilisons pour expérimenter d’autres techniques de test comme la génération automatique de modèles de test. Nous avons montré cet apport pour nos travaux de validation de critères de test fonctionnels dans la section 5.4.

A la fin de cette thèse, les résultats obtenus sont variés. En plus de proposer deux techniques pour le test des transformations de modèles, nous avons apporté une contribution pour l’avancement de la recherche sur les problématiques du test de transformation. L’outillage développé et les techniques que nous avons étudiées dans nos études participent concrètement aux recherches en cours dans l’équipe Triskell, et permettent d’envisager plusieurs perspectives que nous présentons dans la section suivante. Nous avons fourni dans ce travail à la fois des techniques exploitables mais également des moyens pour expérimenter et valider les travaux qui restent à faire. Nous exploitons déjà concrètement dans nos travaux l’analyse de mutation pour mettre à l’épreuve des oracles.