23.11.2014 Views

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

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

4.3 Vocabu<strong>la</strong>ire du test 111<br />

void Addition_entier_modulo_10000 (x : int, y : int) {<br />

if (x=500 && y=600) then<br />

{<br />

printf(x-y) ; // Erreur 1<br />

}<br />

else<br />

{<br />

printf(x+y) ; //Erreur 2<br />

}}<br />

Ici, si l’erreur 1 sera difficilement i<strong>de</strong>ntifiée par le test boîte noire (extraire <strong>de</strong> <strong>la</strong> spécification<br />

le cas <strong>de</strong> test x = 500 et y = 600 est re<strong>la</strong>tivement peu probable), l’erreur 2 sera en théorie i<strong>de</strong>ntifiée<br />

facilement (étant donné le calcul modulo 10000, il semble naturel <strong>de</strong> tester le programme <strong>pour</strong><br />

<strong>de</strong>s valeurs telles que x + y > 10000).<br />

Par contre, en travail<strong>la</strong>nt sur <strong>la</strong> structure du programme, le test boîte b<strong>la</strong>nche i<strong>de</strong>ntifiera<br />

<strong>de</strong>ux tests permettant <strong>de</strong> passer dans les <strong>de</strong>ux branches du « if - then - else ». Ainsi, il faudra<br />

un test avec x = 500 et y = 600 et l’erreur 1 sera i<strong>de</strong>ntifié facilement. Il faudra également un<br />

test avec x ≠ 500 ou y ≠ 600 (i.e. (x = 500 && y = 600) = faux) et l’erreur 2 ne sera pas<br />

naturellement détectée (le test boîte b<strong>la</strong>nche n’imposera pas d’ordre <strong>de</strong> gran<strong>de</strong>ur <strong>pour</strong> les valeurs<br />

<strong>de</strong> x et <strong>de</strong> y).<br />

Les <strong>de</strong>ux stratégies sont donc plus complémentaires que concurrentes. Le test boîte b<strong>la</strong>nche<br />

(approche structurelle) i<strong>de</strong>ntifiera plus facilement les défauts <strong>de</strong> programmation. Le test boîte<br />

noire (approche fonctionnelle) sera plus adapté <strong>pour</strong> <strong>la</strong> détection d’erreurs <strong>de</strong> spécification ou<br />

d’omission par rapport à <strong>la</strong> spécification.<br />

4.3.4 Couverture <strong>de</strong> modèle, Critère <strong>de</strong> couverture<br />

4.3.4.1 Couverture <strong>de</strong> modèle<br />

Intuitivement, <strong>la</strong> notion <strong>de</strong> couverture <strong>de</strong> modèle a <strong>pour</strong> objectif <strong>de</strong> regar<strong>de</strong>r quelle quantité,<br />

quelle portion <strong>de</strong> modèle a été effectivement testée par un jeu <strong>de</strong> tests. Elle s’inspire <strong>de</strong> <strong>la</strong><br />

couverture <strong>de</strong> co<strong>de</strong> utilisée en génie logiciel. Mesurer <strong>la</strong> couverture d’un jeu <strong>de</strong> tests, c’est évaluer<br />

l’efficacité <strong>de</strong> ce jeu <strong>de</strong> tests sur le modèle. En effet, il est possible (mais souvent inutile) d’avoir<br />

un grand nombre <strong>de</strong> tests qui activent <strong>la</strong> même portion du modèle alors que peu <strong>de</strong> tests peuvent<br />

éprouver <strong>de</strong> manière efficace une plus gran<strong>de</strong> partie du modèle.<br />

Imaginons que tous les tests fournissent un résultat correct. Il serait tentant <strong>de</strong> penser que<br />

le modèle est bon et représente bien le comportement souhaité. Mais est-on certain <strong>de</strong> l’efficacité<br />

<strong>de</strong> notre jeu <strong>de</strong> tests ? Est-on certain d’avoir tout testé ? S’il reste <strong>de</strong>s portions non testées, leurs<br />

comportements respectifs sont-ils bons ? Sont-elles même utiles dans le modèle ? C’est ce genre<br />

<strong>de</strong> questions <strong>pour</strong> lesquelles <strong>la</strong> couverture <strong>de</strong> modèle a vocation à trouver <strong>de</strong>s réponses.<br />

Pour mesurer objectivement cette couverture <strong>de</strong> modèle, <strong>de</strong>s indicateurs ont été définis <strong>pour</strong><br />

mettre l’accent sur les portions <strong>de</strong> modèle testées et celles ne l’étant pas.<br />

4.3.4.2 Mesure <strong>de</strong> <strong>la</strong> couverture<br />

La mesure <strong>de</strong> <strong>la</strong> couverture d’un programme détermine comment le programme est exercé<br />

par le jeu <strong>de</strong> tests défini et permet d’établir <strong>la</strong> traçabilité entre le programme (entre les portions

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!