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.5 Critère <strong>de</strong> couverture <strong>de</strong> <strong>modèles</strong> AltaRica par <strong>de</strong>s tests 127<br />

Exemple : Soit l’assertion suivante : « case { c 1 ∨ c 2 : v 1 , c 3 : v 2 , else v 3 } ». Comme dans<br />

l’exemple précé<strong>de</strong>nt, on a ici <strong>de</strong>ux prédicats p 1 et p 2 : p 1 = (c 1 ∨ c 2 ) ; p 2 = c 3 . Pour satisfaire le<br />

critère <strong>de</strong> couverture <strong>de</strong>s conditions modifiées <strong>de</strong>s prédicats, on procè<strong>de</strong> <strong>de</strong> <strong>la</strong> manière suivante :<br />

– On déplie le prédicat p 1 (c 1 ∨ c 2 ) suivant le dépliage <strong>pour</strong> le critère <strong>de</strong> couverture <strong>de</strong>s<br />

conditions modifiées <strong>de</strong>s prédicats :<br />

– c 1 = vrai ∧ c 2 = faux,<br />

– c 1 = faux ∧ c 2 = vrai ;<br />

– p 2 étant ici une condition, on souhaite uniquement l’évaluer à vrai et à faux. Ce<strong>la</strong> conduit<br />

au <strong>de</strong>ux cas suivant :<br />

– c 1 = faux ∧ c 2 = faux ∧ c 3 = vrai,<br />

– c 1 = faux ∧ c 2 = faux ∧ c 3 = faux.<br />

– le <strong>de</strong>rnier test permet alors d’évaluer le « else » <strong>de</strong> l’assertion.<br />

Ici, les tests [c 1 c 2 c 3 ] suivants satisfont le critère : [1 0 0], [0 1 0], [0 0 1] et [0 0 0].<br />

4.5.2.5 Critère <strong>de</strong> couverture <strong>de</strong>s conditions multiples <strong>de</strong>s prédicats<br />

De manière i<strong>de</strong>ntique à <strong>la</strong> section 4.3.4, ce critère vise, <strong>pour</strong> chaque prédicat p i à tester<br />

l’ensemble <strong>de</strong>s combinaisons possibles <strong>de</strong>s valeurs <strong>de</strong>s conditions. Pour ce<strong>la</strong>, le critère <strong>de</strong> couverture<br />

<strong>de</strong>s conditions multiples <strong>de</strong>s prédicats sera satisfait si :<br />

– <strong>pour</strong> chaque prédicat p i <strong>de</strong> l’assertion AltaRica, on applique dans une configuration où p i<br />

= vrai et p j = faux ∀j < i le dépliage N°5 <strong>pour</strong> critère <strong>de</strong> couverture <strong>de</strong>s conditions<br />

multiples défini en section 4.5.1.2 ;<br />

– il existe au moins un test amenant le modèle dans une configuration vérifiant ∀i, p i = faux.<br />

Exemple : Soit l’assertion suivante : « case { c 1 ∨ c 2 : v 1 , c 3 : v 2 , else v 3 } ». Comme dans les<br />

exemples précé<strong>de</strong>nts, on a ici <strong>de</strong>ux prédicats p 1 et p 2 : p 1 = (c 1 ∨ c 2 ) ; p 2 = c 3 . Pour satisfaire le<br />

critère <strong>de</strong> couverture <strong>de</strong>s conditions multiples <strong>de</strong>s prédicats, on procè<strong>de</strong> <strong>de</strong> <strong>la</strong> manière suivante :<br />

– On déplie le prédicat p 1 (c 1 ∨ c 2 ) suivant le dépliage <strong>pour</strong> le critère <strong>de</strong> couverture <strong>de</strong>s<br />

conditions multiples <strong>de</strong>s prédicats :<br />

– c 1 = vrai ∧ c 2 = vrai,<br />

– c 1 = vrai ∧ c 2 = faux,<br />

– c 1 = faux ∧ c 2 = vrai ;<br />

– p 2 étant ici une condition, on souhaite uniquement l’évaluer à vrai et à faux. Ce<strong>la</strong> conduit<br />

au <strong>de</strong>ux cas suivant :<br />

– c 1 = faux ∧ c 2 = faux ∧ c 3 = vrai,<br />

– c 1 = faux ∧ c 2 = faux ∧ c 3 = faux.<br />

– le <strong>de</strong>rnier test permet alors d’évaluer le « else » <strong>de</strong> l’assertion.<br />

Ici, les tests [c 1 c 2 c 3 ] suivants satisfont le critère : [1 1 0], [1 0 0], [0 1 0], [0 0 1] et [0 0 0].

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

Saved successfully!

Ooh no, something went wrong!