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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

110 Chapitre 4. Processus <strong>pour</strong> <strong>la</strong> <strong>validation</strong> <strong>de</strong> modèle AltaRica<br />

4.3.3 Test boîte noire - Test boîte b<strong>la</strong>nche<br />

4.3.3.1 Test boîte noire<br />

L’approche <strong>de</strong> test <strong>de</strong> type « boîte noire » (aussi nommé test fonctionnel) est une <strong>de</strong>s <strong>de</strong>ux<br />

principales approches <strong>de</strong> conception <strong>de</strong>s tests appliqués aux logiciels <strong>pour</strong> vérifier <strong>la</strong> conformité<br />

d’un logiciel par rapport à sa spécification. On cherche ainsi à détecter les différents cas où le<br />

comportement du modèle est différent <strong>de</strong> celui attendu, i.e. dans quelles circonstances le comportement<br />

du modèle est différent <strong>de</strong> celui prédit par sa spécification ?<br />

En suivant cette approche, les différents cas <strong>de</strong> test sont construits à partir <strong>de</strong> l’examen <strong>de</strong><br />

<strong>la</strong> spécification, sans se référer à <strong>la</strong> structure du co<strong>de</strong> testé. La spécification permet <strong>de</strong> déterminer<br />

à <strong>la</strong> fois les cas importants à considérer et les valeurs attendues dans les cas sélectionnés.<br />

Une préoccupation importante est alors celle <strong>de</strong> <strong>la</strong> complétu<strong>de</strong> <strong>de</strong>s cas <strong>de</strong> test considérés<br />

par rapport à <strong>la</strong> spécification. Dans l’idéal, un test exhaustif <strong>de</strong> toutes les entrées du modèle<br />

permettrait <strong>de</strong> s’assurer du bon comportement <strong>de</strong> celui-ci, quelles que soient les circonstances.<br />

Bien souvent cependant et à cause <strong>de</strong> <strong>la</strong> complexité <strong>de</strong>s <strong>modèles</strong> à éprouver, une telle exhaustivité<br />

sera impossible à satisfaire. Pour répondre à cette question, on <strong>pour</strong>ra établir <strong>de</strong>s critères <strong>de</strong><br />

couverture <strong>de</strong> <strong>la</strong> spécification utilisée <strong>pour</strong> construire les tests.<br />

La notion peut être facilement transposée aux tests <strong>de</strong> modèle si <strong>la</strong> spécification du modèle<br />

est connue. L’approche consiste alors à considérer le modèle comme une boîte noire dont on ne<br />

considère pas <strong>la</strong> structure interne : on soumet <strong>de</strong>s entrées choisies à partir <strong>de</strong> <strong>la</strong> spécification du<br />

modèle, on regar<strong>de</strong> <strong>la</strong> sortie (on ne sait pas comment celle-ci est obtenue) et <strong>la</strong> spécification du<br />

modèle est à nouveau utilisée <strong>pour</strong> déci<strong>de</strong>r <strong>de</strong> l’acceptabilité <strong>de</strong> <strong>la</strong> sortie obtenue.<br />

4.3.3.2 Test boîte b<strong>la</strong>nche<br />

L’autre approche <strong>de</strong> conception <strong>de</strong>s tests est le test « boîte b<strong>la</strong>nche » ou test structurel.<br />

Dans ce cas, on suppose <strong>la</strong> structure interne du modèle connue et <strong>la</strong> sélection <strong>de</strong>s jeux <strong>de</strong> tests<br />

tient compte <strong>de</strong> <strong>la</strong> logique implémentée dans le modèle.<br />

Cette approche permet, entre autre, d’affiner <strong>la</strong> définition <strong>de</strong>s tests fonctionnels en leur<br />

permettant d’explorer <strong>de</strong>s parties re<strong>la</strong>tivement distinctes du programme/modèle évalué. La complétu<strong>de</strong><br />

<strong>de</strong>s parties du programme/modèle exercées par les tests peut alors être mesurée à l’ai<strong>de</strong><br />

<strong>de</strong> critère <strong>de</strong> couverture structurelle <strong>de</strong> l’implémentation.<br />

Dans notre cas, le but sera, par exemple, <strong>de</strong> passer par tous les chemins du modèle et permettra<br />

par exemple, d’exécuter <strong>de</strong>s scénarios improbables voire non souhaités (scénarios auxquels<br />

potentiellement le programmeur ou l’utilisateur n’avait pas pensé). On parlera alors <strong>de</strong> critère <strong>de</strong><br />

couverture du modèle (Cf. section 4.3.4).<br />

4.3.3.3 Exemple<br />

En pratique, il est important <strong>de</strong> combiner les <strong>de</strong>ux types d’approche <strong>de</strong> conception <strong>de</strong>s<br />

tests comme le montre l’exemple ci-<strong>de</strong>ssous. Imaginons donc que l’on souhaite implémenter un<br />

programme calcu<strong>la</strong>nt <strong>la</strong> somme <strong>de</strong> <strong>de</strong>ux entiers modulo 10000 et que nous l’implémentions <strong>de</strong> <strong>la</strong><br />

façon, fausse, suivante :

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

Saved successfully!

Ooh no, something went wrong!