Méthodes pour la validation de modèles formels pour la ... - ISAE
Méthodes pour la validation de modèles formels pour la ... - ISAE
Méthodes pour la validation de modèles formels pour la ... - ISAE
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
118 Chapitre 4. Processus <strong>pour</strong> <strong>la</strong> <strong>validation</strong> <strong>de</strong> modèle AltaRica<br />
spécification, elle ne remettent pas en causes l’utilisation et l’application <strong>de</strong> critère <strong>de</strong> couverture<br />
sur le modèle AltaRica obtenu.<br />
4.4.2 Génération <strong>de</strong> cas <strong>de</strong> test <strong>pour</strong> <strong>la</strong> <strong>validation</strong> <strong>de</strong> l’intégration<br />
La <strong>validation</strong> <strong>de</strong> l’intégration est <strong>la</strong> phase <strong>de</strong> <strong>validation</strong> dans <strong>la</strong>quelle les composants unitaires<br />
sont connectés (définition 4.5) et testés en tant qu’ensemble <strong>de</strong> composants. Brièvement,<br />
on rappelle que connecter différents composants entre eux peut être vu comme un ajout d’un<br />
certain nombre <strong>de</strong> contraintes dont il faudra tenir compte. Ainsi, après intégration, les possibilités<br />
d’évolutions <strong>de</strong>s composants sont réduites (par rapport à leurs évolutions possibles lorsqu’ils sont<br />
considérés seuls) et avec elles le nombre <strong>de</strong> comportements possibles du composant. Sans développer<br />
ici un processus <strong>pour</strong> cette phase <strong>de</strong> <strong>validation</strong>, nous nous permettons cependant quelques<br />
mots à son sujet.<br />
F out<br />
A<br />
Nous prendrons l’exemple <strong>de</strong> <strong>de</strong>ux composants (<strong>de</strong>ux automates <strong>de</strong> mo<strong>de</strong>) A (FA<br />
in = {i A},<br />
= {o A}) et B (FB<br />
in = {i B}, FB<br />
out = {o B}) connectés <strong>de</strong> telle sorte que <strong>la</strong> sortie o A <strong>de</strong> A<br />
soit reliée à l’entrée i B <strong>de</strong> B. On nomme C (noté C = A ↔ B) l’automate <strong>de</strong> mo<strong>de</strong> résultat <strong>de</strong><br />
<strong>la</strong> connexion <strong>de</strong> A et B : FC<br />
in = {i A}, FC<br />
out = {o B}. On suppose <strong>la</strong> <strong>validation</strong> unitaire <strong>de</strong> A et<br />
B réalisée et on souhaite tester le lien entre les <strong>de</strong>ux composants.<br />
Idée N°1 : Processus <strong>de</strong> <strong>validation</strong> unitaire sur A ↔ B<br />
Cette première approche est fondée sur le fait que l’automate obtenu par composition <strong>de</strong><br />
<strong>de</strong>ux automates <strong>de</strong> mo<strong>de</strong> est un automate <strong>de</strong> mo<strong>de</strong> (section 2.3.2). Ainsi, <strong>pour</strong> vali<strong>de</strong>r l’intégration<br />
<strong>de</strong>s composants A et B, on vali<strong>de</strong>ra unitairement l’automate A ↔ B.<br />
Cette approche, bien qu’ayant l’avantage <strong>de</strong> ne pas introduire <strong>de</strong> notions supplémentaires,<br />
sera souvent difficilement applicable dans un cas réel. En particulier, l’automate A ↔ B <strong>de</strong>vient<br />
vite <strong>de</strong> taille importante et possé<strong>de</strong>r une spécification d’un tel automate n’est pas chose aisée. La<br />
génération <strong>de</strong> tests <strong>pour</strong>ra souvent être compliquée à obtenir.<br />
Idée N°2 : Faire du test fonctionnel<br />
Le principe général proposé ici sera « d’oublier » le comportement interne au profit d’une<br />
approche boîte noire (i.e. d’une approche fonctionnelle). Ce qui nous intéresse n’est alors pas<br />
d’activer toutes les portions du modèle mais seulement les différentes interfaces que le composant<br />
possè<strong>de</strong> avec son environnement (on suppose que l’activation <strong>de</strong>s parties internes a été obtenue<br />
grâce à <strong>la</strong> <strong>validation</strong> unitaire).<br />
Pour ce<strong>la</strong>, nous souhaitons étudier <strong>la</strong> génération <strong>de</strong> scénarios <strong>de</strong> test <strong>pour</strong> l’automate A ↔ B<br />
à partir <strong>de</strong>s tests générés sur A et <strong>de</strong> ceux générés sur B (lors <strong>de</strong> <strong>la</strong> phase <strong>de</strong> <strong>validation</strong> unitaire<br />
<strong>de</strong> A et B). Pour rappel et en commençant par considérer le composant A, un test est composé :<br />
– d’un vecteur d’évènement v = (e i ) i≥0 où chaque e i est soit un évènement <strong>de</strong> A, soit une<br />
déviation <strong>de</strong> <strong>la</strong> valeur d’entrée i A ;<br />
– s l’évaluation attendue <strong>de</strong>s variables d’état <strong>de</strong> A ;<br />
– Φ A <strong>la</strong> variable <strong>de</strong> sortie <strong>de</strong> A ;<br />
– ω A <strong>la</strong> valeur attendue <strong>de</strong> Φ A .<br />
En ne s’intéressant pas au comportement interne <strong>de</strong> A, on obtient, <strong>pour</strong> <strong>la</strong> variable <strong>de</strong> sortie<br />
Φ A , un ensemble <strong>de</strong> couples {scénario, valeur attendue} où les scénarios sont ceux obtenus <strong>de</strong> <strong>la</strong><br />
phase <strong>de</strong> génération <strong>de</strong> tests <strong>pour</strong> <strong>la</strong> <strong>validation</strong> unitaire (section 4.4.1). v Ai désigne le ième test<br />
unitaire <strong>de</strong> l’automate <strong>de</strong> mo<strong>de</strong> A.