Title: Test de spcifications de logiciels synchrones
1Test de spécifications de logiciels synchrones
- Besnik Seljimi
- Laboratoire LSR-IMAG
Réunion DANOCOPS Grenoble 22/03/2005
2Plan
- La vision synchrone
- Vérification formelle
- Tests - Approche Lutess
- La PLC dans Lutess
- Le test à la PLC
- Conclusions
3Vision synchrone
Logicielsynchrone
Environnement
i0
i1
i2
i3
o0
o1
o2
o3
- Caractéristiques
- Interaction continue avec lenvironnement
- Temps de calcul nul
4Exemple Contrôleur de climatiseur
Climatiseur
T1 - temp basseT2 - temp normaleT3 - temp
haute Bouton on/off
Logiciel( étatt , entreet , sortiet )
état mémoire du programme
5Climatiseur en Lustre
- node clim(Bouton bool T int)
- returns (En_marche, Froid, Inactif, Chaud
bool) - let
- En_marche Bouton -gt(pre En_marche and not
Bouton) - or ( not(pre En_marche) and Bouton)
- Froid En_marche and T1
- Inactif En_marche and T2
- Chaud En_marche and T3
- tel
Y y0 -gt pre(X) t0 Y y0 ti Y xi-1
6Validation
Logicielsynchrone
Environnement
7Validation
Climatiseur
Environnement
UtilisateurEnvironnement physique La
température ne fait pas de sauts chaud-froid
Propriété
Le climatiseur émet-il du chaud quand il fait
froid ?
8Exemple
Climatiseur
Environnement
La température ne fait pas de sauts chaud-froid
implies ( T3, not(pre T1) ) and implies (
T1, not(pre T3) )
9Vérification formelle
Logiciels synchrone
Environnement
Logiciel ( étatct , entréest, sortiest )
Env ( étatet , entréest )
i1
prop ?
i0
prop ?
BOOM!
i1
i0
prop ?
prop ?
10Approche Lutess
i0
i1
Logicielssynchrone
Environnement
Logicielssynchrone
o0
o1
oracle
Code exécutable
oracle?
i0
oracle?
i0
11Approche Lutess
Logicielssynchrone
Environnement
node Oracle(bouton bool T int en_marche,
froid, inactif, chaud bool) returns (ok
bool)let ok implies(en_marche and T1,
chaud)tel
testnode Env (en_marche, froid, inactif, chaud
bool) returns (bouton bool T int)let
environment( T gt 1 and T lt 3 and implies (
T3, not(pre T1) ) and implies ( T1, not(pre
T3) ) ) tel
12PLC et Lutess
- Lutess actuellement
- Contraintes sous forme de formules booléennes
- Représentation dans des BDD (Binary Decision
Diagram) - Stratégies de sélection des entrées
- Aléatoire a gt b, choisir un couple parmi
(0,0), (0,1), (1,1) - Probabiliste P(a gt b) 0.6, P(a V b) 0.4,
- Scénario
- Propriétés de sûreté
13PLC et Lutess
- PLC dans Lutess
- Pouvoir exprimer des contraintes numériques
- X gt Y Z
- Peut-on facilement adapter les stratégies de
sélection ? - Exemple du choix aléatoire
14PLC
Logicielssynchrone
Environnement
entrées
sorties
E entrées U sorties
Propriété à vérifier P définie sur les séquences
de E
- Pour vérifier la propriété P sur un chemin de
longueur n - Vérifier quaucune séquence dentrées-sorties,
- E1, E2, , En-1, En
- ne vérifie
- P1, P2, , Pn-1, Pn
15Prolog
sequence(L,N) - N size(L), L E_S,
etat_initial(E), chemin(L).
chemin(E) - propriete(E,0). chemin(E1,E2S)
- propriete(E1,1), transition(E1,E2),
chemin(E2S).
etat_initial(E) - environnement_initial(E),
programme_initial(E). transition(E1,E2) -
environnement(E1, Etemp), programme(Etemp, E2).
16Exemple Climatiseur
testnode environnement(en_marche, froid, chaud,
inactif bool) returns (bouton bool T
int) let environment( Tgt1 and Tlt3 and
true -gt (T lt pre(T) 1 and T gt pre(T) -
1) ) tel
environnement_initial(E) - E _Bouton, T,
_En_marche, _Froid, _Inactif, _Chaud,
ge(T,1), le(T,3).
environnement(E1, E2) - E1 Pre_Bouton,
Pre_T, _, _, _, _, E2 Bouton, T, En_marche,
Froid, Inactif, Chaud, band(bge(T,1),
ble(T,3)) and band(ble(T, Pre_T1), bge(T,
Pre_T-1)).
17PLC
- Boite blanche
- On connaît la totalité du système
- 3 cas de figure
- Échec La propriété ne peut pas être violée sur
un chemin de longueur n - Réussite mais pas dénumération possible même
conclusion - Une énumération possible on obtient une
séquence de test qui mène le système à violer la
propriété
18PLC
- Boite noire
- Le nombre de séquences est très grand, néanmoins
- Permet de choisir des données dentrée qui
respectent lenvironnement - Éliminer des chemins a priori non permis par
lenvironnement (seul) - Exemple
- X gt pre(X), X dans 1,100
19PLC
- Boite grise
- Si on connaît une partie du programme
- Le nombre de chemins diminue
- Les chemins qui restent sont plus susceptibles de
mener à une violation de la propriété - Dans quelle mesure le nombre de chemin est réduit
? - Comment déduire des propriétés à partir du
programme ? - Propriétés bien testés
- Exemple
- Tester En_marche ? T3 gt Froid
- Sous hypothèse que En_marche ? T1 gt Chaud
- Propriétés instantanées - sans tenir compte
de létat du programme
20PLC
Propriétés instantanées - ne dépendant que de
Et
node climatiseur(bouton bool T int)
returns (en_marche, froid, chaud, inactif
bool) let en_marche bouton -gt(pre en_marche
and not bouton) or (not(pre en_marche) and
bouton) froid en_marche and T3 inactif
en_marche and T2 chaud en_marche and
T1 tel
programme(E) - E Interrupteur, T, En_marche,
Froid, Inactif, Chaud, band(Froid, En_marche,
beq(T,3)), band(Inactif, En_marche,
beq(T,2)), band(Chaud, En_marche, beq(T,1)).
21PLC
- Élimination des variables détat
- Abstraction des variables en logique
- c a ? b abstrait par c gt b
- a pre(a) and b abstrait par implies(a,b)
22boite noire vs. boite grise
Nombre de séquences après énumération
log(nb séq)
23Conclusions et perspectives
- Lutess avec des contraintes numériques
- Adaptation des stratégies existantes
- Lot 4.3
- Test en boite grise
- De quelles types de contraintes a-t-on besoin ?
- Logiciel sous test ? C/C ? contraintes
- Lot 4.2
- Test en boite blanche
- Preuve !
- Dautres travaux
- Lot 4.4 Recherche statique
- Dautres idées
- Quand peut-on parler de périodicité ?
-
24Questions ?
25BDD
- F(x0,x1,,xn) x0 . Fx0 x0 . Fx0
x0
0
1
x1
x1
x2
x2
x2
x2
26Logiciels synchrone
Environnement
Logiciel ( étatct , entréest, sortiest )
Env ( étatet , entréest )
Prop ( étatpt , entréest , sortiest )