Test de logiciels synchrones avec la PLC Thèse Besnik Seljimi 2 juillet 2009 Sous la direction de Ioannis Parissis et Laurent Trilling
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
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC 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
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC 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
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC 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
Contexte scientifique Logiciels synchrones Programme Synchrone Environnement i0 i1 i2 i3 ° ° ° o0 o1 o2 o3 Interaction continue avec un environnement externe Hypothèse de synchronisme: réaction instantanée En pratique: suffisamment rapide C’EST UN RAPPEL 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Contexte scientifique Le langage Lustre node edge(X: bool) returns (edgeX: bool); let edgeX = false -> not(pre X) and X; tel; 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
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 » Outils : ajouter des outils qui utilisent des modèles du programme Spécs algébrique, BZ-testing tools 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Test de logiciels synchrones Approche Lutess Simulateur Environnement Environnement Programme Synchrone Programme Synchrone Boîte noire Oracle OK Construction automatique de générateurs de test Modélisation Environnement 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Test de logiciels synchrones Approche Lutess Spécifications informelles Modèle de test Générateur de données Logiciel exécutable Développement Langage de spécification de Lutess (Lustre enrichi) Booléen Interaction 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC 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
Problématique et motivations Un contrôleur simple Programme synchrone Environnement Environnement 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Problématique et motivations Exemple numérique du climatiseur 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; 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Problématique et motivations Problématique et contributions Spécifications informelles Modèle de test Générateur de données Logiciel exécutable Développement Interaction Langage de spécification Lutess Booléen BDD Numérique Lutess V2 Les logiciels de la vie réelle contiennent des entrées/sorties numériques Description de l’environnement Valeurs entières Opérateurs algébriques, de comparaison, … Objectif de ce travail Logiciels synchrones numériques Adaptation des techniques de test PLC + Enrichissement techniques de génération 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC 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
Langage de spécification Un contrôleur simple Programme synchrone Environnement Environnement 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Langage de spécification Invariants de l’environnement 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 DIRE CE QUI EST NOUVEAU 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Langage de spécification Invariants de l’environnement Tamb >= -20 and Tamb <= 60, Tutil >= 10 and Tutil <= 40, dTamb >= -1 and dTamb <= 1 Appui aléatoire sur Bouton ? 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Langage de spécification Probabilités conditionnelles 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 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Langage de spécification Probabilités conditionnelles prob(false -> pre En_marche, Bouton, 0.1); Version booléenne 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Langage de spécification Probabilités conditionnelles 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 Pourquoi c’est intéressant Pourquoi pas avant ! 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Langage de spécification Probabilités conditionnelles prob(false -> pre(En_marche and Tsort > Tamb), true -> (Tamb > pre Tamb), 0.8); 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
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
Langage de spécification Propriétés de sûreté 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 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
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
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC 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
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC Hypothèses 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 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC Hypothèses Mettre des boîtes rouges 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC Hypothèses Améliore le guidage / propriétés de sûreté Certaines sorties deviennent impossibles Boîte noire Boîte grise Boîte blanche Hypothèses 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC 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
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC 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
Génération de données de test Générateur Modèle de test Machine à états finis Contraintes Algorithmes de résolution 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Génération de données de test Machine à états finis 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 Une variable d’état pour chaque expression pre E 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Génération de données de test Machine à états finis testnode Env_clim(En_marche: bool; Tsort: int) returns (Bouton : bool; Tamb, Tutil: int); var dTamb: int; q0: bool; q1: int; q2,q3: bool; let q0 = 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 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Génération de données de test Machine génératrice : 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 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Génération de données de test Générateur Modèle de test Machine à états finis Contraintes Algorithmes de résolution 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Génération de données de test Représentation en contraintes inputs Bouton: bool; Tamb, Tutil: int; outputs … state 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Génération de données de test Représentation en contraintes transition q0' = false; q1' = Tamb; q2' = En_marche; q3' = Tsort>Tamb; 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Génération de données de test Représentation en contraintes var dTamb: int; local dTamb = if q0 then 0 else Tamb – q1; environment Tamb>=-20 and Tamb<=60 and Tutil>=10 and Tutil<=40 dTamb>=-1 and dTamb<=1; 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Génération de données de test Représentation en contraintes 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); 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
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
Génération de données de test Génération de données de test Générateur Modèle de test Machine à états finis Contraintes Algorithmes Algorithmes de génération Séquence de test = chemin dans la machine 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Algorithme de génération Démarrer dans l’état initial Générer une séquence de longueur n 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 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Algorithme de génération Vecteurs pouvant violer la PS 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Génération de données de test Vecteurs pertinents / PS 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 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Génération de données de test Vecteurs pertinents / PS 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 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Génération de données de test Vecteurs pertinents / PS Les entrées qui sont susceptibles de mener à un état suspect Vecteur pertinent d’entrées: 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Génération de données de test Hypothèses 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 Hypothèses Boîte noire Boîte grise Boîte blanche Test Preuve 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Algorithme de génération Choix d’une entrée 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Génération de données de test choose 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 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC 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
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 Programme GATeL Séquence d’entrées Objectif 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Travaux connexes Lutess vs. Gatel Spécifications informelles Modèle de test Générateur de données environment prob safeprop hypothesis assert Objectif de test Code source Exécutable Similitudes Safeprop + hypothesis (programme complet) 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Travaux connexes Lutess vs. Lurette (VERIMAG) Spécifications informelles Modèle de test Générateur de données environment prob safeprop hypothesis Scenarios Automates PLC Polyèdres + BDD Linéaire 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC 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
Réalisations et expérimentations Réalisations Lutess V2 ECLiPSe Prolog 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
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 Dire que la taille est importante 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
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 Fautes détectées maintenant / pas avant 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC 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
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 CAS D’INCOHERENCES : Commentaires 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
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
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
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC Questions ? 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Algorithme en ECLiPSe Prolog 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC
Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC 2 juillet 2009 Thèse Besnik Seljimi Test de logiciels synchrones avecla PLC