Test et diagnostic : des objets aux modèles Yves Le Traon « in God we trust, for the rest we test » (A. Petrenko)

Slides:



Advertisements
Présentations similaires
Mustapha EL FEDDI Tests Mustapha EL FEDDI
Advertisements

EPITECH 2009 UML EPITECH 2009
Les Systèmes d’Information Financière Atelier conjoint ACBF / Banque Mondiale / AFRITAC de l’Ouest Gérer l’application dans le temps, sur les plans fonctionnel,
Eléments de Génie Logiciel
Processus d'expression du besoin
La Gestion de la Configuration
Transformation de documents XML
Spécification et qualité du logiciel
19 septembre 2006 Tendances Logicielles IBM Rational Data Architect Un outil complet de modélisation et de conception pour SGBD Isabelle Claverie-Berge.
J. Paul Gibson Bureau A 207, Le département LOgiciels-Réseaux
CONTINUOUS TESTING Hakima Zidouri Informatique Réseau 3
M.E.D.A.L. Module dEnseignement à Distance pour lArchitecture Logicielle Alain VAILLY Diapositive n° 1 IUP MIAGE - Université de NANTES IUP-MIAGE 3ème.
UML - Présentation.
Les démarches de développement
INTRODUCTION.
Phase de préparation des itérations Produit Story 11 Release1 Story 1mStory 21 Release2 Story 2m… …
Test de logiciel GLG101 AP.TELLE & S.MILOVANOVIC MAI 2007.
Les Ateliers de Génie Logiciel
Alain Le Guennec Jean-Marc Jézéquel Action Triskell
Intellectual Property Rights are governed by PROTEUS Contract and PROTEUS consortium agreements. Before using, reproducing, modifying or disclosing the.
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Démarche Analyse des OGL et des Méthodes Objectifs : Activités :
le profil UML en temps réel MARTE
Gestion des systèmes d’information
Sommaire Objectif de Peakup Principes de fonctionnement
Tests unitaires et fonctionnels
Modèle, Méthode et Conception
Des outils pour le développement logiciel
Complément Le diagramme des classes
Techniques de test Boulanger Jean-Louis.
OIL & UPML DREVET - HUMBERT Introduction OIL : un langage de description dontologies UPML : un langage de description de systèmes à base.
Xpath XML Path language par Yves Bekkers
Présentation du mémoire
CSI1502 Principes fondamentaux en conception des logiciels
© Petko ValtchevUniversité de Montréal Janvier IFT 2251 Génie Logiciel Notions de Base Hiver 2002 Petko Valtchev.
Tolerance Manager Un concept métier
Portée, arrimages et intervenants Évolution des méthodes
Programmation non procédurale Le projet ECOLE 2000
Sensibilisation a la modelisation
Ingénierie Système en SysML appliquée à la rédaction du cahier des charges Y. Le Gallou Séminaire académique STI2D - Calais – 1er avril 2014.
Test logiciel Xavier Baril.
Le management de l'IVVQ Processus techniques IVVQ
Supports de formation au SQ Unifié
Génération de tests pour la localisation automatique d’erreurs Yves Le Traon et Franck FLEUREY.
2003 (revisé 2008)SEG Chapitre 11 Chapitre 1 “The Systems Engineering Context” Le contexte du génie de systèmes.
Cycles de Vie du Logiciel LFI2 Genie Logiciel/ Gestion de Projets Septembre 2008.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
LA POSE D’UN DIAGNOSTIC Jm bouthors - Consultant
Introduction au Génie Logiciel
Le test de logiciel Yves Le Traon
VALIDATION VÉRIFICATION & TESTS
Travaux Pratiques Optimisation Combinatoire
Initiation à la conception des systèmes d'informations
François CARCENAC,Frédéric BONIOL ONERA-DTIM Zoubir MAMMERI IRIT
1 INFOR 101 Chapitre 4 Marianne Morris. 2 Révision de chapitre 3 Algorithmes Sequential Search Selection Sort Binary Search Ordre de magnitude  (n) Mesurer.
Présentation AICHA REVEL INGENIEUR D’ÉTUDE STERIA DEPARTEMENT TRD
Entity/Facet/Pattern Une application qui en a…
1 Vers la gestion de la cohérence dans les processus multi-modèles métier Wolfgang THEURER Ecole Nationale Supérieure d’Ingénieurs des Etudes et Techniques.
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
L’enseignement de spécialité SLAM
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Réalisé avec le soutien de Pied de page fixe Pied de page 1 Titre Sous titre.
© Petko ValtchevUniversité de Montréal Janvier IFT 2251 Génie Logiciel Le Processus Hiver 2002 Petko Valtchev.
Document de spécification d’exigences Normes IEEE et 29148:2011
© 2015 SAMARES ENGINEERING – All rights reserved Raphaël Faudou Groupe de travail sur les exigences Paris – 9 Octobre.
Dániel Darvas (CERN BE-ICS-PCS) Spécification formelle pour les API CERN-ESTEREL séminaire 21/01/2016, CERN Travail conjoint avec B. Fernández, E. Blanco,
PRÉSENTATION AGL LES TESTS LOGICIELS LES TEST LOGICIELS 1 Mickael BETTINELLI Brandon OZIOL Gaétan PHILIPPE Simon LUAIRE.
19 avril Spécification d’un cadre d’ingénierie pour les réseaux d’organisations Laboratoire de recherche : OMSI à l’EMSE.
SIO Gestion de projets, applications SIO Hager Khechine, MBA, PhD. Séance 2 : Méthodes de découpage de projets.
Planning Process « t’as un plan pour ce soir ? » Tony Carnal Altran.
Transcription de la présentation:

Test et diagnostic : des objets aux modèles Yves Le Traon « in God we trust, for the rest we test » (A. Petrenko)

24/03/20062 Une « vision » de la recherche en génie logiciel 0 1 « Testing can prove the presence of bugs, but never their absence » Dijkstra Bienvenue dans le domaine de l’incertitude !!! Monde pas idéal => génie logiciel – Compromis entre une solution idéale en pratique inapplicable et solution imparfaite mais praticable – Test et génie logiciel : difficile alchimie solution idéalepratique actuelle bon dosage ?

24/03/20063 Le test de logiciels C’est important ! Objectifs du test – examiner ou exécuter un programme dans le but d’y trouver des fautes – relativement à une spécification – formalisation de critères pour guider la sélection des tests – cas de test / oracle

24/03/20064 Problématique Le test Vérification/preuve tests conformité du produit par rapport à sa spécification

24/03/20065 Problématique du test analyse des besoins spécification Implémentation test Le coût du test dans le développement + maintenance = 100 % du coût global de développement !!! Test An. b Spécif. Implém.

24/03/20066 Problématique du test Pourquoi ? Coût Effort Confiance

24/03/20067 Le test dynamique : processus Donnée de testProgramme P Exécution Oracle RésultatSpécification S Verdict Critère d’arrêt vrai Localisation / Mise au point faux non vérifié Problèmes Génération de données de test Oracle Diagnostic

24/03/20068 Le test : c’est un peu désordre Autant de techniques que de domaines d’application Nombreux problèmes (génération/oracle/environnement, étape du processus/critère) Psychologiquement redoutable

24/03/20069 Le test des logiciels à objets Au départ… une certaine méfiance des testeurs…

24/03/ Sentiment mitigé au niveau du code C.m1() B.m1()A.m1() C.m4() B.m2() Method calls flow for processing C.m1() A m1() m2() m3() m4() B w m1() m2() m3() C m1() m4() The Yo-yo Effect (Binder, Offut) calls super() calls m4() calls m2() Implements

24/03/ Et pourtant …. OO fonctionne aussi bien que le procédural classique Culture test – Environnement pour assister la réalisation des tests: Junit – Test-first development

24/03/ JUnit Permet de structurer les cas de test – cas de test / suite de test Permet de sauvegarder les cas de test – important pour la non régression – quand une classe évolue on ré-exécute les cas de test

24/03/ Test-first development Xtreme programming On écrit les tests d’abord, on réalise ensuite Les cas de test servent de support à la documentation Tester avec une intention précise Retours rapides sur la qualité du code – itérations courtes dans le cycle de développement – on exécute le code tout de suite (avant même de l’avoir écrit) – On ne code que quand un test a échoué – refactorings fréquents Approche « anti-modèle »

24/03/ Test-first development Écrire un cas de test Exécuter les cas de test Faire un petit changement Exécuter les cas de test échec succès échec développement s’arrête développement continue Exemple : ajout dans une liste chainée public void testAdd(){ list.add("first"); assertTrue(list.size()==1); } public void add (String it){ Node node = new Node(); node.setItem(it); node.setNext(null); if (firstNode == null) { node.setPrevious(null); this.setFirstNode(node); } lastNode = node; this.setCurrentNode(node); } public void add (String it){}

24/03/ Des objets aux modèles refactoring Tissage composition code refactoring

24/03/ Des étapes de test … au test des étapes Analyse Conception globale Conception détaillée Exigences Implémentation Système Intégration Unitaire Test transfo modèles

24/03/ Plan Test de composants Assemblage de composants Test « système » Diagnostic Test et modèles

24/03/200618

24/03/ Composants et test

24/03/ Composants de confiance Du point de vue utilisateur... Components “off-the-shelf” ?

24/03/ Composants de confiance Du point de vue utilisateur... Components “off-the-shelf” 85% “replay” selftests 100% 55% 100%

24/03/ Composant de confiance Spécification Implantation V & V : ensemble de cas de test Confiance fondée sur la cohérence contrats exécutables Composants autotestables

24/03/ Analyse de mutation R. DeMillo, R. Lipton and F. Sayward, "Hints on Test Data Selection : Help For The Practicing Programmer". IEEE Computer 11(4): April Technique pour évaluer l’efficacité d’un ensemble de cas de test – Injection d’erreurs dans le programme sous test – Calcul de la proportion d’erreurs détectées par les cas de test

24/03/ Analyse de mutation P Génératio n de mutants Mutant 1 Mutant 2 Mutant 3 Mutant 4 Mutant 5 Mutant 6 CT Exécutio n Mutant tué Diagnosti c Mutant vivant Spécification incomplète Automatique Manuel Optimiseu r Mutant équivalent Supprimé de l’ensemble des mutants Ajout de contrats Cas de test insuffisants

24/03/ Optimisation automatique de cas de test Score de mutation moyen facile à atteindre Comment optimiser ces tests Analogie avec l’évolution

24/03/ Classe A Amélioration des tests Test Test1 Test2 Test3 Test4 Test5 Population de prédateurs Population de proies mutantA5 mutantA6 mutantA7 mutantA8 mutantA9 mutantA10 mutantA1 mutantA2 mutantA3 mutantA4 mutantA14 mutantA11 mutantA18 mutantA12 mutantA13 mutantA17 Test6

24/03/ ensembles de bactéries – Bouillon (population courante) – Solution (contruite itérativement) 4 opérations – Classer, Mémoriser, Filtrer, Muter Condition d’arrêt – Objectif atteint – Nb de génération – … Classer Mémoriser Filtrer Muter Bouillon bacteriologique Ensemble solution Arrêt La boucle bactériologique

24/03/ La boucle bactériologique Fonction d’utilité (F) – Indique la pertinence d’un ensemble de bactéries pour le problème considéré Classer Mémoriser Filtrer Muter Définie pour un ensemble de Bactéries Utilité d’une bactérie – f(b) = F(bUS) – F(S) – Utilité relative aux bactéries déjà mémorisées Bouillon bacteriologique Ensemble solution

24/03/ La boucle bactériologique Fonction de mémorisation – Fonction à valeur booléenne indiquant si la meilleure bactérie du bouillon doit être mémorisée. Exemples – Seuil de mémorisation – Plusieurs itérations sans améliorations – … Classer Mémoriser Filtrer Muter Bouillon bacteriologique Ensemble solution

24/03/ Ensemble solution La boucle bactériologique Fonction de filtrage – Elimine les bactéries inutiles du bouillon afin de garantir l’efficacité de l’algorithme Exemples – Supprimer les bactéries d’utilité nulle – Dans le domaine du test : heuristiques de minimisation de suites de test – … Classer Mémoriser Filtrer Muter Bouillon bacteriologique

24/03/ La boucle bactériologique Opérateur de mutation – Permet, à partir d’une bactérie parente, de construire une nouvelle bactérie – Fortement dépendant du problème considéré Classer Mémoriser Filtrer Muter Bouillon bacteriologique Ensemble solution

24/03/ La boucle bactériologique Fonction d’utilité (F) – Indique la pertinence d’un ensemble de bactéries pour le problème considéré Classer Mémoriser Filtrer Muter Définie pour un ensemble de Bactéries Utilité d’une bactérie – f(b) = F(bUS) – F(S) – Utilité relative aux bactéries déjà mémorisées Bouillon bacteriologique Ensemble solution

24/03/ Étude d’un parser C#

24/03/ Résultats Approche composant autotestable Algorithme original pour la génération de cas de test Développement d’outils pour les expériences

24/03/ Assemblage de composants

24/03/ Test d’intégration Plan de test – ordonnancement – minimiser le nombre de « testing stubs »

24/03/ Autres travaux: conception testable Testabilité d’un diagramme de classes – identification d’ « anti-patterns » Transformations de modèles pour supprimer les ambiguïtés d’une architecture – Application aux design patterns courants refactorings

24/03/ Test « système »

24/03/ Les exigences… attention ! terrain instable Point d’entrée d’un projet Premières approches – Fonctionnelles – Extra-fonctionnelles ? – Techniques ? Comment valider du flou, de l’informel ? Comment s’en servir pour valider la conception/implémentation

24/03/ Test à partir des exigences Partir des exigences – Soit textuelles – Soit cas d’utilisation étendus avec des contrats (dans une logique proche du B) Générer automatiquement des objectifs/cas de test Adaptable aux lignes de produits Expérimentations industrielles

24/03/ Métamodèle d’exigences requirement 1.1 "Register a book" the "book" becomes "registered" after the "librarian" did "register" the "book". the "book" is "available" after the "librarian" did "register" the "book". 8 Métamodèle d’objectifs de tests :C1:C2:C3 CallAction 12 Métamodèle statique C1 C2 C3 0..1* Métamodèle UCTS s1 s2s3 s4 /a1 /a5 /a4 /a3 /a2 7 Métamodèle de cas d’utilisation Package Actor UseCase > {observable(x)="dummy"} > {true} 3 4 Métamodèle de configuration :C1 :C2 :C1 observable="dummy" status="on" 5 6 if the mode of the system is dummy or real and the user did deselect Example function then the phase of the system is no phase and the status of the component is released implies the presence of the component is false. Traçabilité MModèles indépendants

24/03/ Expérimentations Question de base – Des cas de test générés à partir des exigences peuvent-ils tester correctement un système ? – Etudes de cas Deuxième question – applicable au niveau industriel (ROI) ? – % des exigences couvert pour un vrai système ?

Nominal code

24/03/ Exigences … Stabiliser les concepts grâce à la métamodélisation Se servir des métamodèles pour – La vérification – La simulation – La dérivation des tests

24/03/ Diagnostic « mais où ? »

24/03/ Diagnostic et Design-by-contract

24/03/ Diagnostic et Design-by-contract Design by Contract : Robustesse / Vigilance – Capacité d’un composant à détecter un état interne erroné Design by Contract : Diagnosabilité – Facilité à localiser une faute dans un composant sachant qu’une défaillance est détectée

24/03/ Robustesse A Robustesse localecapacité des contrats à détecter des erreurs Combinaison améliore la qualité Robustesse globale B C A contrats Det(A,C)

24/03/ Un exemple Eiffel

24/03/ Exemple p_date.ep_time.ep_date_time.e Total number of mutants Nbr equivalent Mutation score100% Initial contracts efficiency10,35%17,90%8,7% Improved contracts efficiency 69,42%91,43%70,10% First version test size Reduced tests size723344

24/03/ Exemple Robustesse des autotests contre un environnement infecté p_date_time selftest

24/03/ Robustesse

24/03/ Zone de diagnostique Logiciel classiqueDiagnosabilité Zone de diagnostique Logiciel conçu par contrats Traitement d’exception

24/03/ Diagnosabilité 00,20,40,60,81 Densité des contrats Diagnosabilité Efficacité des contrats

24/03/ Résultats Étude qualitative de la conception par contrats Bilan L’ajout de contrats, même peu efficaces, améliore la qualité du composant L’efficacité améliore plus que la densité

24/03/ Diagnostic et test

24/03/ Test et diagnostic : objectifs différents 2 activités à relier Test – générer un minimum de données de test qui satisfont le critère d’arrêt. – Les fautes sont détectées. Diagnostic – les algorithmes de localisation des fautes nécessitent de recouper un maximum d’informations.

24/03/ Recoupement de traces ? ? Nombre de cas de test + capacité à isoler la faute

24/03/ Fault localization algorithm Error : it should be p := -y Diagnosis matrix

24/03/ Précision du diagnostic Diagnosis accuracy. – the number of statements one has to examine before finding a fault. Dynamic Basic Block (DBB). – P the program under test – TS a test suite. – A DBB = {s  statements of P / s hat is covered by strictly the same test cases of TS}

24/03/ Exemple : la réunion virtuelle Bacteriological algorithm maximizing the number of DBBs

24/03/200662

24/03/ Améliorer la localisation Combiner – contrats – Test – Recoupement de traces/slices

24/03/ Des objets aux modèles

24/03/ Des objets aux modèles Tester des modèles ? – Condition: l’exécutabilité – Vérification de propriétés – Typage Tester les transformations de modèles – Quelques pistes

24/03/ Métamodèle de sortie décrit Modèle de sortie Transformations de modèles Account name EString type EString balance EInt Client name EString age EInt Account name EString type EString balance EInt Client name EString age EInt Transformation de modèles Spécifie RDBMSmodel : Parameter2 direction = output UMLmodel : Parameter1 direction = input T : Transformation Langage : l OCLexpression : pre direction = input OCLexpression : post direction = input Métamodèle d’entrée décrit Modèle d’entrée

24/03/ Le test des transformations de modèles Les données sont des modèles Nouveaux critères Nouveaux algorithmes Mais la vue en toujours valide

24/03/ Le test des transformations de modèles Génération des données de test Critère = la mutation Oracle -> contrats

24/03/ Génération de données de test ClassA String name ClassB Int val *a*a 1b1b random« »null ]1;  [ 10 1 [1;  [ 0 ]-  ;-1] Critère AllPerEC StopCriteria = 2 ClassA name : toto ClassA name : «» ClassB val : 0 a

24/03/ Le test de transformations de modèles Oracle Le test de transformations de modèles Oracle Le problème de l’oracle – Disposant du modèle attendu : Comparaison de modèles – Conformité du modèle à son métamodèle [travaux de Jim Steel] – Contrats (OCL) Contrats sur le modèle de sortie Contrats de la spécification de la transformation

24/03/ Oracle Contrat de la spécification fort Oracle Contrat de la spécification fort En OCL: context MetaUmlRdbms inv:self.modelUml.elements ->select(e|e.oclIsTypeOf(Class) and e.stereotype->exists(s|s.name='persistent')) ->collect(ecp|ecp.oclAsType(Class)) ->forAll(cp|self.database.elements ->one(t|t.name=cp.name and cp.feature.union(cp.generalization.parent->collect(p|p.oclAsType(Class)).feature) ->select(f|f.oclIsTypeOf(Attribute))->collect(fa|fa.oclAsType(Attribute)) ->forAll(a|t.columns->one(tc|tc.name=a.name and tc.type=a.type.name)) and t.columns.size()=cp.feature.union(cp.generalization.parent ->collect(p|p.oclAsType(Class)).feature) ->select(f|f.oclIsTypeOf(Attribute)).size())) and self.database.elements.size()=self.modelUml.elements ->select(e|e.oclIsTypeOf(Class) and e.stereotype ->exists(s|s.name='persistent')).size()

24/03/ Analyse de mutation pour les transformations de modèles Opérateurs classiques – Orientés objet ou non Outil µjava de Offutt Nécessité d’opérateurs spécifiques – Opérateurs sémantiques

24/03/ L’analyse de mutation Décomposition sémantique Navigation, filtrage, création, modification – Exemple de transformation name : string ID : int A B "persistent" name : string ID : int A B "persistent" name : string ID : int A B "persistent" table B name : string ID : int A ID name table B name : string ID : int A B "persistent" ID name table B ID name table B (a) (b) (c) (d) (e) (f) B "persistent" navigation filtrage création navigation création navigation filtrage modification

24/03/ Fault models Example for navigation mutations Wrong role to a correct class: from class A, navigate b2 instead of b1 Wrong role to a wrong class: from class A, navigate c instead of b1 Miss one successor: from class A, navigate b1.f instead of b2.f.d Extra successor:from class A, navigate b1.f.d instead of b2.f

24/03/ Analyse de mutation / Oracle Résultats expérimentaux Analyse de mutation / Oracle Résultats expérimentaux Difficulté du test ++++

24/03/ Modèles & Aspects Design Model Use Case Model Security Model QoS Model Business Model Object Model Test Model UI Model Plateforme Model Code Model tester Challenges: -Tissage automatique -Product Families (variations) -Réutilisation de transformations Challenges: -Tissage automatique -Product Families (variations) -Réutilisation de transformations

24/03/ Conclusion modèles Contributions – Génération de données de test – Mutation pour l’IDM – Oracle par contrats

24/03/ Largeur et perspectives Le facteur dispersion Transformation de modèles Tissages de vues : d’aspects Diagnostic Et composants Traçabilité Raffinement des tests Test guidé par les exigences

24/03/ Questions ?