1 Test de logiciels synchrones avec la PLC Besnik Seljimi 2 juillet 2009 Sous la direction de Ioannis Parissis et Laurent Trilling Thèse
1
Test de logiciels synchrones avec la PLC
Besnik Seljimi2 juillet 2009
Sous la direction de Ioannis Parissis et Laurent Trilling
Thèse
2
Contexte scientifique
Qualité du logiciel– Aptitude à réaliser les services pour lesquels il est conçu– Vérification & Validation
Le test est une activité dynamique: exécution d’un programme – pour vérifier qu’il répond à ses spécifications – ou pour identifier ses défauts
Test exhaustif impraticable– Sélection de données de test
Domaine : Logiciels « critiques »– Défaillance = catastrophe humaine ou financière– Plus de vérification et de validation nécessaire– Logiciels réactifs synchrones
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
3
Objectif de la thèse
L’outil Lutess– Test des logiciel synchrones– Limité aux logiciels à entrées/sorties booléennes
Dans la réalité : logiciels à entrées/sorties numériques
Contribution de la thèse– Prise en compte des logiciels numériques– Plus d’expressivité / tests plus évolués
• Probabilités conditionnelles étendues–Les entrées booléennes / Expression quelconque
• Introduction d’hypothèses–Test en « boîte noire » / « Boîte grise »
• Utilisation simultanée de plusieurs techniques
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
4
Sommaire
Test de logiciels synchrones– L’approche Lutess
Problématique et motivations
Test de logiciels synchrones: Lutess V2– Langage de spécification– Génération de données de test– Travaux connexes
Réalisations et expérimentations
Conclusions et perspectives
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
5
Sommaire
Test de logiciels synchrones– L’approche Lutess
Problématique et motivations
Test de logiciels synchrones: Lutess V2– Langage de spécification– Génération de données de test– Travaux connexes
Réalisations et expérimentations
Conclusions et perspectives
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
6
Contexte scientifique
Logiciels synchrones
Interaction continue avec un environnement externe Hypothèse de synchronisme: réaction instantanée
– En pratique: suffisamment rapide
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Programme Synchrone
Environnement
i0 i1 i2 i3 ° ° °
o0 o1 o2 o3 ° ° °
7
Contexte scientifique
Le langage Lustre
Synchrone, flot de données, déclaratif Très répandu dans les domaines de l’avionique, de l’énergie, des
transports… Version commerciale : SCADE (Esterel Technologies)
2 juillet 2009
node edge(X: bool) returns (edgeX: bool);let edgeX = false -> not(pre X) and X;tel;
8
Test de logiciels synchrones
Test à partir de spécifications
Plusieurs modèles– Modèles de comportement du programme
• Test = conformité entre spécification et programme• LOFT, BZ-Testing Tools
– Modèles de comportement de l’environnement ou de l’utilisateur• Profils opérationnels• Profils d’usage
– Lutess• Test de logiciels synchrones en « boite noire »
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
9
Test de logiciels synchrones
Approche Lutess
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Programme Synchrone
Environnement
ModélisationEnvironnement
ModélisationEnvironnement
Construction automatique de générateursde test
Programme Synchrone
Programme Synchrone
Boîte noire
SimulateurEnvironnement
SimulateurEnvironnement
OracleOracle
OK
10
Test de logiciels synchrones
Approche Lutess
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Logicielexécutable
DéveloppementSpécifications
informellesSpécifications
informelles
Modèle de test
Modèle de test
Générateur de donnéesGénérateur de données Interaction Interaction
Langage de spécification de Lutess(Lustre enrichi)
Booléen
11
Sommaire
Test de logiciels synchrones– L’approche Lutess
Problématique et motivations
Test de logiciels synchrones: Lutess V2– Langage de spécification– Génération de données de test– Travaux connexes
Réalisations et expérimentations
Conclusions et perspectives
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
12
Problématique et motivations
Un contrôleur simple
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Programme synchrone
Environnement Environnement
13
Problématique et motivations
Exemple numérique du climatiseur
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
node Program_AC(Bouton: bool; Tamb, Tutil: int) returns (En_marche: bool ; Tsort: int) ;let En_marche = Bouton -> ((pre En_marche) and not Bouton)
or (not(pre En_marche) and
Bouton); Tsort = Tutil + (Tutil - Tamb) / 3;tel;
14
Problématique et motivations
Problématique et contributions
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Spécifications informelles
Spécifications informelles
Modèle de test
Modèle de test
Générateur de donnéesGénérateur de données
Logicielexécutable
Développement
Interaction Interaction
Langage de spécification
Lutess
Booléen
BDD PLCPLC
Lutess V2Lutess V2
NumériqueNumérique
+ Enrichissement techniques de génération+ Enrichissement techniques de génération
15
Sommaire
Test de logiciels synchrones– L’approche Lutess
Problématique et motivations
Test de logiciels synchrones : Lutess V2– Langage de spécification– Génération de données de test– Travaux connexes
Réalisations et expérimentations
Conclusions et perspectives
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
16
Langage de spécification
Un contrôleur simple
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Programme synchrone
Environnement Environnement
17
Langage de spécification
Invariants de l’environnement
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
testnode Env_clim(En_marche: bool; Tsort: int)returns (Bouton : bool; Tamb, Tutil: int);
var dTamb: int;let
dTamb = 0 -> Tamb - pre Tamb;environment(
Tamb >= -20 and Tamb <= 60,Tutil >= 10 and Tutil <= 40,dTamb >= -1 and dTamb <= 1
);tel
18
Langage de spécification
Invariants de l’environnement
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Tamb >= -20 and Tamb <= 60,Tutil >= 10 and Tutil <= 40,dTamb >= -1 and dTamb <= 1
Appui aléatoire sur Bouton ?
19
Langage de spécification
Probabilités conditionnelles
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
testnode Env_clim(En_marche: bool; Tsort: int)returns (Bouton : bool; Tamb, Tutil: int);
var dTamb: int;let
dTamb = 0 -> Tamb - pre Tamb;environment(
Tamb >= -20 and Tamb <= 60,Tutil >= 10 and Tutil <= 40,dTamb >= -1 and dTamb <= 1
);prob(false -> pre En_marche, Bouton, 0.1);
tel prob(C,E,P)
– C : Condition d’observabilité de E– E : Expression sur laquelle porte la probabilité P– P : Probabilité de E avec la condition C
20
Langage de spécification
Probabilités conditionnelles
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
prob(false -> pre En_marche, Bouton, 0.1);
Version booléenne
21
Langage de spécification
Probabilités conditionnelles
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
testnode Env_clim(En_marche: bool; Tsort: int)returns (Bouton : bool; Tamb, Tutil: int);
var dTamb: int;let
dTamb = 0 -> Tamb - pre Tamb;environment(
Tamb >= -20 and Tamb <= 60,Tutil >= 10 and Tutil <= 40,dTamb >= -1 and dTamb <= 1
);prob(false -> pre En_marche, Bouton, 0.1);prob(false -> pre(En_marche and Tsort > Tamb),
true -> (Tamb > pre Tamb), 0.8);tel
22
Langage de spécification
Probabilités conditionnelles
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
prob(false -> pre(En_marche and Tsort > Tamb),true -> (Tamb > pre Tamb), 0.8);
23
Langage de spécification
Propriétés de sûreté
Vérification de propriétés– Nouveau : Expression numérique comme propriété
– Exemple• Quand il fait froid => climatiseur chauffe
Et inversement
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
24
Langage de spécification
Propriétés de sûreté
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
testnode Env_clim(En_marche: bool; Tsort: int)returns (Bouton : bool; Tamb, Tutil: int);
var dTamb: int;let
dTamb = 0 -> Tamb - pre Tamb;environment(
Tamb >= -20 and Tamb <= 60,Tutil >= 10 and Tutil <= 40,dTamb >= -1 and dTamb <= 1
);safeprop(implies(En_marche and Tamb<Tutil,
Tsort>Tutil));tel
25
Langage de spécification
Propriétés de sûreté
Guidage:– Générer les entrées correspondantes– Toutes les valeurs sont considérées pour les sorties
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
26
Hypothèses
Introduction de connaissances partielles sur le programme Nouveau / version booléenne
Exemple– Bouton met en marche / éteint le climatiseur
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
27
Hypothèses
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
testnode Env_clim(En_marche: bool; Tsort: int)returns (Bouton : bool; Tamb, Tutil: int);
var dTamb: int;let
dTamb = 0 -> Tamb - pre Tamb;environment(
Tamb >= -20 and Tamb <= 60,Tutil >= 10 and Tutil <= 40,dTamb >= -1 and dTamb <= 1
);safeprop(implies(En_marche and Tamb<Tutil,
Tsort>Tutil));hypothesis(true -> (Bouton =
En_marche<>pre(En_marche)));tel
28
Hypothèses
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
29
Hypothèses
Améliore le guidage / propriétés de sûreté– Certaines sorties deviennent impossibles
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Boîte noire Boîte grise Boîte blanche
Hypothèses
30
Méthodologie de test
Définition du domaine des variables entières– Invariants d’environnement: intervalles
Dynamique de l’environnement– Invariants d’environnement : contraintes temporelles
Scénarios d’exécution– Invariants d’environnement : situations particulières– Probabilités conditionnelles
Test de propriétés– Propriétés de sûreté– Hypothèses
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
31
Sommaire
Test de logiciels synchrones– L’approche Lutess
Problématique et motivations
Test de logiciels synchrones : Lutess V2– Langage de spécification– Génération de données de test– Travaux connexes
Réalisations et expérimentations
Conclusions et perspectives
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
32
Génération de données de test
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
GénérateurGénérateurModèle de test Machine à états finis
Contraintes
Algorithmesde résolution
33
Génération de données de test
Machine à états finis
Une variable d’état pour chaque expression pre E
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
testnode Env_clim(En_marche: bool; Tsort: int)returns (Bouton : bool; Tamb, Tutil: int);
var dTamb: int;let
dTamb = 0 -> Tamb - pre Tamb;environment( … );safeprop( … );hypothesis( true -> Bouton =
En_marche<>pre(En_marche) );prob(false -> pre(Tsort>Tamb),
true -> (Tamb>pre Tamb), 0.8);tel
Une variable d’état (q0) pour distinguer l’état initial
34
Génération de données de test
Machine à états finis
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
testnode Env_clim(En_marche: bool; Tsort: int)returns (Bouton : bool; Tamb, Tutil: int);
var dTamb: int;q0: bool; q1: int; q2,q3: bool;
letq0 = true -> false;q1 = pre Tamb;q2 = pre En_marche;q3 = pre(Tsort>Tamb);dTamb = if q0 then 0 else Tamb – q1;environment( … );safeprop( … );hypothesis(if q0 then true else (Bouton = En_marche
<> q2));prob(if q0 then false else q3,
if q0 then true else (Tamb>q1), 0.8);tel
35
Génération de données de test
Machine génératrice
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
: l’ensemble des états : l’état initial : l’ensemble des entrées : l’ensemble des sorties
: la fonction de transition : invariants de l’environnement : la propriété de sûreté : les hypothèses : les probabilités
36
Génération de données de test
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
GénérateurGénérateurModèle de test Machine à états finis
Contraintes
Algorithmesde résolution
37
Génération de données de test
Représentation en contraintes
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
inputsBouton: bool; Tamb, Tutil: int;
outputs…
state …
38
Génération de données de test
Représentation en contraintes
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
transitionq0' = false;q1' = Tamb;q2' = En_marche;q3' = Tsort>Tamb;
39
Génération de données de test
Représentation en contraintes
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
var dTamb: int;local
dTamb = if q0 then 0 else Tamb – q1;environment
Tamb>=-20 and Tamb<=60and
Tutil>=10 and Tutil<=40and
dTamb>=-1 and dTamb<=1;
40
Génération de données de test
Représentation en contraintes
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
probabilities(c1,e1,p1) = (if q0 then false else q3,
if q0 then true else Tamb>q1, 0.8);
(c2,e2,p2) = (if q0 then false else q3,if q0 then true else Tamb<q1, 0.8);
41
Génération de données de test
Machine génératrice
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
42
Génération de données de test
Génération de données de test
Séquence de test = chemin dans la machine
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
GénérateurGénérateurModèle de test Machine à états finis
Contraintes
AlgorithmesContraintesAlgorithmes
de générationAlgorithmes
de génération
43
Algorithme de génération
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Les entrées respectant l’environnement
Les entrées respectant
les probabilités
Vecteurs pouvant violer la PS
Choix d’une entrée
Emission des entrées / Récupération sorties
Calcul état suivant
Démarrer dans l’état initialGénérer une séquence de longueur n
44
Algorithme de génération
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Vecteurs pouvant violer la PS
45
Génération de données de test
Vecteurs pertinents / PS
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Vecteur d’entrées pertinent–safeprop( i => o );– i=true
Une propriété de sûreté peut faire référence aux valeurs passées–safeprop( pre i => o );
– Violation à l’instant t– i=true à l’instant t-1
Généralisation: k instants, pour anticiper l’instant t+k
46
Génération de données de test
Vecteurs pertinents / PS
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Etat suspect (sous hypothèse)
Sous-chemin faisable (sous hypothèse) de longueur k Recherche sur les sous-chemins de longueur k
Sous-chemin faisable (sous hypothèse)– Entrées permises par l’environnement– Sorties permises par l’hypothèse
: Signature / PS
47
Génération de données de test
Vecteurs pertinents / PS
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Les entrées qui sont susceptibles de mener à un état suspect
Vecteur pertinent d’entrées:
48
Génération de données de test
Hypothèses
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Hypothèses de test:– Du test « boîte noire » vers le test « boîte blanche »– Introduction du programme entier en hypothèse
• Preuve locale de propriétés
Boîte noire Boîte grise Boîte blanche
Hypothèses
Test Preuve
49
Algorithme de génération
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Choix d’une entrée
50
Génération de données de test
choose
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Trouver une solution au système de contraintes
Génération aléatoire– Enumération : Variable de plus petit domaine la plus contrainte– Considère d’abord les variables booléennes
Génération aux bornes
51
Sommaire
Test de logiciels synchrones– L’approche Lutess
Problématique et motivations
Test de logiciels synchrones : Lutess V2– Langage de spécification– Génération de données de test– Travaux connexes
Réalisations et expérimentations
Conclusions et perspectives
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
52
Travaux connexes
GATeL (CEA-LIST)
Test interactif de programmes Lustre Programmation Logique avec Contraintes Recherche « en arrière » d’un chemin menant à l’objectif de test
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
GATeL
Programme
Objectif
Séquence d’entrées
53
Travaux connexes
Lutess vs. Gatel
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Spécifications informelles
Spécifications informelles
Modèle de test
Modèle de test
Générateur de donnéesGénérateur de données
environmentprobsafeprophypothesis
assertObjectif de test
Code sourceCode sourceExécutableExécutable
SimilitudesSafeprop + hypothesis (programme complet)
54
Travaux connexes
Lutess vs. Lurette (VERIMAG)
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Spécifications informelles
Spécifications informelles
Modèle de test
Modèle de test
Générateur de donnéesGénérateur de données
environmentprobsafeprophypothesis
ScenariosAutomates
PLC Polyèdres + BDDLinéaire
55
Sommaire
Test de logiciels synchrones– L’approche Lutess
Problématique et motivations
Test de logiciels synchrones : Lutess V2– Langage de spécification– Génération de données de test– Travaux connexes
Réalisations et expérimentations
Conclusions et perspectives
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
56
Réalisations et expérimentations
Réalisations
Lutess V2
ECLiPSe Prolog
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
57
Réalisations et expérimentations
Expérimentations
Lutess V2 appliqué au « contrôleur de chaudière » [EWDC2009]– [Abrial95] Steam-boiler control specification problem.– [Cattel&Duval96] The steam-boiler problem in Lustre.
• Interface:–34 entrées, dont 7 entiers–38 sorties, dont 8 entiers
• Taille : 686 lignes de code Lustre
Objectifs:– Evaluer l’applicabilité sur un logiciel plus réaliste– Etudier les performances de la génération– Valider la méthodologie
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
58
Réalisations et expérimentations
Experimentations
Complexité des spécifications– Testnodes: 20 invariants + propriétés de sûreté
Temps d’exécution: – < 30 sec, longueur 100 pas– Linéaire / nombre de pas
Construction générateur plus rapide / booléen Complexité pendant la génération
– Dépend fortement du type des spécifications
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
59
Sommaire
Test de logiciels synchrones– L’approche Lutess
Problématique et motivations
Test de logiciels synchrones : Lutess V2– Langage de spécification– Génération de données de test– Travaux connexes
Réalisations et expérimentations
Conclusions et perspectives
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
60
Conclusions et perspectives
Contributions
Lutess V2– Probabilités conditionnelles sur expressions quelconques– Introduction d’hypothèses pour le test guidée par les propriétés
– Un nouveau moteur de génération de données de test• Programmation par contraintes• Utilisation conjointe de l’ensemble des techniques de test
– Proposition d’une méthodologie de test– Expérimentations
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
61
Conclusions et perspectives
Perspectives
Prise en compte des variables réelles– Choix aléatoire ?– Quelle propagation ?
Génération interactive de données de test– Affiner les séquences de test
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
62
Conclusions et perspectives
Génération interactive
Ne considérer que les états qui nous intéressent interactive( <condition> );
– Génération interactive seulement lorsque <condition> = true
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
63
Questions
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
?
64
Algorithme en ECLiPSe Prolog
2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
652 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
662 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC