• Aucun résultat trouvé

L’analyse de mutation pour l’expérimentation de critères

Les travaux de cette thèse s’intègrent dans une recherche à longue échéance pour la validation des transformations de modèles. Les différentes contributions que nous proposons participent directement au test de transformations de modèles. D’autres aspects de la problématique sont le sujet de différentes études dans l’équipe Triskell. En particulier, Franck Fleurey et al. [Fleurey'07a] ont défini des critères fonctionnels pour le test de transformations de modèles. L'approche proposée a besoin d'une validation expérimentale. Il s'agit de démontrer que les modèles qui satisfont ces critères sont efficaces pour détecter des erreurs. Notre adaptation de l'analyse de mutation (chapitre 3) et son implémentation dans une plateforme expérimentale permettent de réaliser cette évaluation.

De cette manière, nous montrons que l'adaptation de l'analyse de mutation va au delà de son utilisation directe pour tester une transformation. Elle est aussi utile pour développer d'autres techniques de test qui seront soit complémentaires, soit adaptées à d'autres contextes d'utilisation.

5.4.1 Critères de couverture du domaine d'entrée

La technique se base sur un partitionnement du domaine d'entrée. Les propriétés du méta- modèle source de la transformation sont considérées pour déterminer des partitions de leur plage de valeur. La figure 5-23 illustre le partitionnement réalisé pour le méta-modèle source de la transformation class2rdbms. Par exemple, l’ensemble des valeurs de « attrs » est partitionné en trois intervalles [0..0], [1..1], et [2..+∞ [.

Fleurey et al ont défini différentes stratégies qui exploitent ce partitionnement. Une stratégie consiste à déterminer des combinaisons de partitions dans des fragments de modèle. Parmi les dix stratégies existantes, AllRanges crée un fragment de modèle par partition, alors que

AllPartitions crée un fragment de modèle par propriété en combinant les partitions de celle- ci. Cela donne par exemple:

ƒ Un fragment de modèle avec le critère AllRanges : Un objet de type Classifier c

avec c.name = « »

ƒ Un fragment de modèle avec le critère AllPartitions : Deux objets de type Classc1

name: EString Classifier name: EString Association is_primary: EBoolean name: EString Attribute is_persistent: EBoolean Class PrimitiveDataType ClassModel type 1 classifier * dest 1 1 src association * parent 0..1 1..* attrs partition 0 1 ]1,∞[ partition 0 1 partition true false partition « » « .+ » partition 1 ]1,∞[

Figure 5-23 - Partitions pour le méta-modèle source de la transformation class2rdbms

La sélection des modèles en fonction d’une stratégie se base sur les fragments de modèle générés. Pour qu’un ensemble de modèles satisfasse une stratégie, chaque fragment de modèle doit être contenu par au moins un modèle.

5.4.2 Mise à l'épreuve de modèles satisfaisant les critères

Pour évaluer la performance d’une stratégie, nous sélectionnons différents ensembles de modèles qui la satisfont et nous mesurons leur score de mutation. Ces ensembles diffèrent entre eux sur les critères qu'ils respectent et sur leur taille. Nous comparons plusieurs ensembles parce que la génération est en partie aléatoire sur le choix des attributs par exemple, et que nous devons établir des statistiques avec des modèles de différentes tailles. Nous analysons les résultats obtenus pour montrer que les modèles de test sélectionnés en utilisant une stratégie détectent davantage d’erreurs que des modèles sélectionnés aléatoirement.

Dans cette expérience, nous étudions deux stratégies différentes AllRanges et

AllPartitions. En appliquant l’outil MMCC [Fleurey'07a] au méta-modèle source (figure 2-7) de la transformation class2rdbms, quinze fragments de modèles sont produits avec la stratégie AllRanges et cinq avec AllPartitions. Nous générons automatiquement avec Cartier des ensembles dont chaque modèle contient un fragment de modèle différent. Nous obtenons donc des ensembles de quinze modèles satisfaisant AllRanges et de cinq modèles satisfaisant AllPartitions. Nous décidons enfin de réaliser huit ensembles par stratégies. Chaque ensemble varie selon la taille de ses modèles.

De plus, nous générons de manière aléatoire des ensembles de modèles parmi deux cent modèles de différentes tailles. Huit ensembles de quinze modèles et huit ensembles de cinq modèles sont sélectionnés aléatoirement. Ils permettent de réaliser une comparaison des performances d’une sélection réalisée avec et sans stratégie.

Tous ces modèles ont été produits grâce à Cartier [Sen'08], un outil développé par Sagar Sen pour la synthèse automatique de modèles.

139 L’analyse de mutation pour l’expérimentation de critères fonctionnels

De cette manière, l’expérimentation se compose de trente-deux ensembles contenant un total de trois cent vingt modèles (la répartition est rappelée en abscisse de la figure 5-24).

5.4.3 Validation des critères proposés

Nous appliquons l’analyse de mutation pour chacun des ensembles et obtenons leurs scores de mutation. Pour comparer les différentes stratégies de sélection, nous présentons ces mesures dans le diagramme « boîte à moustaches » de la figure 5-24. Chaque boîte correspond à huit ensembles classés selon la stratégie employée et le nombre de modèles des ensembles.

En premier lieu, nous observons les résultats des ensembles générés sans stratégie. Nous constatons que les ensembles qui comportent plus de modèles (troisième colonne contre première colonne) ont de meilleurs scores de mutation : le plus faible ensemble de quinze modèles a un score supérieur au plus fort ensemble de cinq modèles. Ensuite, nous comparons l’utilisation ou non d’une stratégie. Dans ce cas, tous les ensembles générés sans stratégie ont un score de mutation inférieur au plus faible premier quartile des ensembles générés avec stratégie. Finalement, la comparaison des deux stratégies montre que AllPartitions obtient de meilleurs scores de mutation et que la taille de sa « boîte » est plus réduite. En analysant ces mesures, nous déduisons que l’utilisation de plus d’informations pour la sélection de modèles de test fait converger les scores de mutation des ensembles de modèles de test vers des valeurs plus élevées. L’utilisation d’une stratégie plus fine permet de sélectionner des modèles plus performants pour détecter des erreurs.

68.56% 87.60% 86.60% 64.69% 71.13% 81.43% 55.67% 72.68% 65.98% 72.68% 82.72% 69.07% 55% 60% 65% 70% 75% 80% 85% 90% Random (5 models/set in 8 sets)

AllPartitions(5/8) Random(15/8) AllRanges(15/8)

Strategy M ut a ti on S c or e 3rd quartile max median min 1st quartile

Figure 5-24 - Diagramme "boîte à moustaches" pour la comparaison des stratégies de sélection de modèles

MMCC [Fleurey'07a] automatise cette sélection : il génère les fragments de modèle à partir d’un méta-modèle et vérifie la satisfaction d’une stratégie par un ensemble de modèles. Ainsi, en exploitant notre adaptation de l’analyse de mutation et son implémentation, nous contribuons à la validation d’une technique pour le test de transformation de modèles.

5.5 Conclusion

Dans ce chapitre nous avons réalisé plusieurs études. Nous avons tout d’abord expérimenté les contributions des précédents chapitres : l’analyse de mutation et les fonctions d’oracle adaptées au test de transformations de modèles. Nous avons utilisé une approche globale des composants de transformation de modèles en considérant l’implantation, les tests, et la spécification embarqués dans le composant. Cette approche s’appuie sur une méthodologie globale pour la qualification et l’amélioration du niveau de confiance du composant. Les expériences menées ont montré que nos propositions permettent tout d’abord de vérifier et de détecter les erreurs d’une transformation de modèles, ensuite de qualifier ces tests et les contrats qui traduisent la spécification sous une forme exécutable.

Pour réaliser ces expériences, valider l’application des techniques étudiées, nous avons développé plusieurs outils. Le support des contraintes dans Kermeta est un apport à la fois pour nos travaux mais également pour les travaux exploitant la plate-forme Kermeta (en particulier avec le support d’OCL). Le harnais de test est un moyen pour réaliser directement le test de transformations de modèles. Finalement la plate-forme pour le support de l’analyse de mutation, nous permet d’appliquer la méthodologie globale de qualification de composants de transformation de modèles.

L’adaptation de l’analyse de mutation qui est le fondement de ce dernier outil, nous permet d’étendre nos travaux à d’autres problématiques du test de transformations de modèles En particulier, nous avons étudié différents critères de test fonctionnels. En confrontant des modèles satisfaisant ces critères, nous avons montré que ces modèles ont un meilleur pouvoir de détection des erreurs quand la quantité d’information utilisée pour la sélection de modèles de test (et en conséquence pour la génération) est plus importante.

6

Conclusions et perspectives

Les travaux de cette thèse se placent dans un contexte où la complexité grandissante des systèmes logiciels conduit à l’émergence de l’Ingénierie Dirigée par les Modèles (IDM). Cette nouvelle approche du génie logiciel propose d’élever le niveau d’abstraction du développement pour traiter au maximum le système sous forme de modèles. Cette abstraction permet de s’affranchir de contraintes techniques d’une plate-forme, d’un langage. Le développement de l’IDM a déjà fourni des techniques et des outils pour la méta-modélisation, la transformation de modèles, la simulation de modèles, etc. Il est possible de produire des modèles et de les traiter automatiquement pour les améliorer, les analyser, leur ajouter automatiquement des contraintes fonctionnelles ou non. Cependant le succès d’une approche de développement ne réside pas seulement dans les techniques de développement mais également dans les techniques de test qui permettent d’assurer que les différents résultats obtenus soient correct.

Au cours de cette thèse, nous nous sommes intéressés à plusieurs problématiques du test de transformations de modèles. Nous les avons traités et avons obtenu différents résultats que nous reprenons dans la section 6.1. Nous envisageons plusieurs perspectives à nos travaux que nous présentons dans la section 6.2