Test et cycle logiciel



Documents pareils
Quatrième partie IV. Test. Test 15 février / 71

Test et Validation du Logiciel

Qualité du logiciel: Méthodes de test

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

Test de logiciel dans les méthodes agiles

Agilitéet qualité logicielle: une mutation enmarche

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

Les Bonnes PRATIQUES DU TEST LOGICIEL

Bruno Legeard Fabrice Bouquet Laboratoire d Informatique de l Université de Franche-Comté

Testeur Agile Niveau Fondation Bertrand Cornanguer, Vice-chair Agile tester WG

La mémorisation des mots de passe dans les navigateurs web modernes

Vérification et Validation

BULK SMS Envoi en masse d un message texte moyennant un téléphone mobile (GSM)

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Vérifier la qualité de vos applications logicielle de manière continue

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Plan. 1 Cycles de développement. 2 Méthodes agiles, principes généraux. 3 Comment se passe un Sprint?

Approche de modélisation des tests de logiciels complexes par un système multi-agents

Processus d Informatisation

Intervenants. Thomas d'erceville Project Manager. Christian NGUYEN Practice Manager IT Quality

Introduction au génie logiciel

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Travaux soutenus par l ANR. Jean-François CAPURON (DGA) Bruno LEGEARD (Smartesting)

Extrait des Exploitations Pédagogiques

OPTIMISER SON PROCESSUS DE TEST AVEC UNE APPROCHE BOITE GRISE

données en connaissance et en actions?

Plan. Tests. 1. Introduction. 1. Introduction

CONSULTANT AMOA/RECETTE à la recherche d un poste dans la région de Montpellier 7 ans d expérience

Germe Grenoble 4 22/06/2012. Intervenant: Bruno Sbille

Le génie logiciel. maintenance de logiciels.

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Définition des Webservices Ordre de paiement par . Version 1.0

Publier dans la Base Documentaire

Centre hospitalier Sainte croix

Séance 1 Méthodologies du génie logiciel

Conception des systèmes répartis

Impact des robots d indexation sur le cache de second niveau de SPIP IMBERTI Christophe - SG/SPSSI/CP2I/DO Ouest 06/06/2012 mis à jour le 05/07/2012

DEMANDE D INFORMATION RFI (Request for information)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Retour d expérience implémentation Scrum / XP

Sauvegarde des fichiers

Conduite de projets SI. Les méthodes «Agiles» N QUAL/1995/3660e ORESYS

IFT3913 Qualité du logiciel et métriques. Chapitre 2 Modèles de processus du développement du logiciel. Plan du cours

TP 1. Prise en main du langage Python

Mises en relief. Information supplémentaire relative au sujet traité. Souligne un point important à ne pas négliger.

MÉTHODOLOGIE PROJET SYSTÈME D INFORMATION DÉCISIONNEL BI - BUSINESS INTELLIGENCE. En résumé :

Bertrand Cornanguer Sogeti

Cours de Master Recherche

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Gestion Projet. Cours 3. Le cycle de vie

Solution IT Power Management Gérer la consommation électrique de toute votre infrastructure IT

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Résolution de systèmes linéaires par des méthodes directes

Topologie du web - Valentin Bourgoin - Méthodes agiles & SCRUM

MANUEL DE L UTILISATEUR

Gestion de Projet. Génie Logiciel. Renaud Marlet. LaBRI / INRIA. (d'après A.-M. Hugues) màj 19/04/2007

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Soyez agile. Dans l industrie du logiciel, la. De plus chaque projet informatique

Méthodes Agiles et gestion de projets

Concilier mobilité et sécurité pour les postes nomades

Cryptologie. Algorithmes à clé publique. Jean-Marc Robert. Génie logiciel et des TI

Génie Logiciel LA QUALITE 1/5 LA QUALITE 3/5 LA QUALITE 2/5 LA QUALITE 4/5 LA QUALITE 5/5

Limitations of the Playstation 3 for High Performance Cluster Computing

Arbres binaires de recherche

aalto Collaborative Pour le gestionnaire,

Logiciel Libre Cours 3 Fondements: Génie Logiciel

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Programmation Web. Madalina Croitoru IUT Montpellier

VI. Tests non paramétriques sur un échantillon

Introduction Les processus traditionnels extreme Programming Conclusion. extreme Programming. vers plus d agilité. F. Miller francois.miller@inpg.

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

WIFI sécurisé en entreprise (sur un Active Directory 2008)

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Exercices sur le chapitre «Probabilités»

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Développement itératif, évolutif et agile

Développement spécifique d'un système d information

Le test automatisé des applications web modernes

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Préparation à l installation d Active Directory

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Système de contrôle du trafic d une ligne de métro Dossier de tests

AOLbox. Partage de disque dur Guide d utilisation. Partage de disque dur Guide d utilisation 1

Plan du cours. Historique du langage Nouveautés de Java 7

Scrum Une méthode agile pour vos projets

Cours 1 : Qu est-ce que la programmation?

Les mécanismes d'assurance et de contrôle de la qualité dans un

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Évaluation et implémentation des langages

Algorithmique et programmation : les bases (VBA) Corrigé

Transcription:

Test et cycle logiciel Fabrice Bouquet JDEV 2013 5 septembre 2013 INRIA / CNRS Université de Franche-Comté Fabrice Bouquet Test 1 / 59

Plan 1 Test 2 Test Structurel 3 Test fonctionnel 4 Calcul de données de tests 5 Synthèse Fabrice Bouquet Test 2 / 59

Plan Test Test Structurel Test fonctionnel Données Synthèse... Introduction 1 Test Introduction Dans les faits Dans le cycle de vie Bilan 2 Test Structurel Principe Couverture Bilan 3 Test fonctionnel Exemple Comment? 4 Calcul de données de tests Principe Analyse partitionnelle et test aux limites Approche combinatoire Test aléatoire/statistique 5 Synthèse Fabrice Bouquet Test 3 / 59

... Introduction Validation & Vérification Qui/Pourquoi? Validation : Est-ce que le logiciel réalise les fonctions attendues? Vérification : Est-ce que le logiciel fonctionne correctement? Exemple de méthodes de V & V Test statique : Revue de code, de spécifications, de documents de design Test dynamique : Exécuter le code pour s assurer d un fonctionnement correct Vérification symbolique : Run-time checking, Exécution symbolique Vérification formelle : Preuve ou model-checking d un modèle formel, raffinement et génération de code Fabrice Bouquet Test 4 / 59

... Introduction Pourquoi tester Motivation Ariane 5, Carte à puce en Allemagne, Réseau Orange... Complexité des comportements Erreur dans les spécifications, la conception, ou le programme Défaut (faute) dans le logiciel Défaillance (anomalie de fonctionnement) du programme Quelques chiffres Coût des bogues informatiques : 60 Milliards e/ an 22 Milliards économisés si processus tests Fabrice Bouquet Test 5 / 59

Test? Test Test Structurel Test fonctionnel Données Synthèse... Introduction IEEE (Standard Glossary of Software Engineering Terminology) "Le test est l exécution ou l évaluation d un système ou d un composant par des moyens automatiques ou manuels, pour vérifier qu il répond à ses spécifications ou identifier les différences entre les résultats attendus et les résultats obtenus". G. Myers (The Art of Software testing) "Tester, c est exécuter le programme dans l intention d y trouver des anomalies ou des défauts". Edsgar W. Dijkstra. Notes on structured programming. Academic Press, 1972 "Tester peut révéler la présence d une anomalie mais jamais son absence". Fabrice Bouquet Test 6 / 59

Plan Test Test Structurel Test fonctionnel Données Synthèse... Dans les faits 1 Test Introduction Dans les faits Dans le cycle de vie Bilan 2 Test Structurel Principe Couverture Bilan 3 Test fonctionnel Exemple Comment? 4 Calcul de données de tests Principe Analyse partitionnelle et test aux limites Approche combinatoire Test aléatoire/statistique 5 Synthèse Fabrice Bouquet Test 7 / 59

... Dans les faits Réalité du test Le test est une activité de validation du logiciel Est-ce que le logiciel a été développé correctement en fonction des différentes exigences? Test est une activité pas très populaire Difficultés d ordre psychologique ou culturel : Le développement est constructif car on cherche à établir des résultats corrects Le test est destructif car un bon test est un test qui trouve une anomalie Cependant, le test est une activité centrale : C est un élément principal d amélioration de la qualité logiciel Il peut représenter jusqu à 60% du coût complet du logiciel : 1/3 durant le développement du logiciel 2/3 durant la maintenance du logiciel Fabrice Bouquet Test 8 / 59

... Dans les faits Test dans les technologies de l information Maturité fonction QA/Test : passer d?une approche ad hoc vers une approche réfléchie et cohérente 1 : Top 4 des points d amélioration Europe de l ouest Choisir une méthodologie s intégrant dans un développement agile/composant. Fournir une couverture automatisée de test automatique pour permettre l agilité dans le test Plus se concentrer sur les aspects non-fonctionnels comme la performance, la disponibilité, la sécurité, etc Avoir une stratégie de test qui optimise l usage de services de tests (traditionnel ou cloud). 1. Source IDC European Services, Enterprise Application Testing Survey, March 2011 Fabrice Bouquet Test 9 / 59

Plan Test Test Structurel Test fonctionnel Données Synthèse... Dans le cycle de vie 1 Test Introduction Dans les faits Dans le cycle de vie Bilan 2 Test Structurel Principe Couverture Bilan 3 Test fonctionnel Exemple Comment? 4 Calcul de données de tests Principe Analyse partitionnelle et test aux limites Approche combinatoire Test aléatoire/statistique 5 Synthèse Fabrice Bouquet Test 10 / 59

... Dans le cycle de vie Développement logiciel et Niveau de test Besoin%client% Test%d accepta)on% Exigences% Test%Système% Concep)on% Test%d intégra)on% Code% Test%unitaire% Fabrice Bouquet Test 11 / 59

... Dans le cycle de vie Cycle de développement en V Fabrice Bouquet Test 12 / 59

... Dans le cycle de vie Méthode Scrum Fabrice Bouquet Test 13 / 59

Coût Test Test Structurel Test fonctionnel Données Synthèse... Dans le cycle de vie Mise(en( produc'on( Mise(en( Prod.(1( Mise(en( Prod.(2( Mise(en( Prod.(3( Mise(en( Prod.(n( Coût( Concep'on( Développement( Test( Maintenance( Coût( Concep'on( Développement( Test( Etape(du(projet( Etape(du(projet( Fabrice Bouquet Test 14 / 59

... Dans le cycle de vie Développement Guidé par les Tests (TDD) Développement Dirigé par les Tests Méthode de développement dans les méthodes agiles Préconise l écriture des tests avant le développement du code Début& Ajout&(test)& Refactoring& Exécu/on& Exécu/on& Codage& Fabrice Bouquet Test 15 / 59

Plan Test Test Structurel Test fonctionnel Données Synthèse... Bilan 1 Test Introduction Dans les faits Dans le cycle de vie Bilan 2 Test Structurel Principe Couverture Bilan 3 Test fonctionnel Exemple Comment? 4 Calcul de données de tests Principe Analyse partitionnelle et test aux limites Approche combinatoire Test aléatoire/statistique 5 Synthèse Fabrice Bouquet Test 16 / 59

... Bilan Acteurs du test Deux situations : 1. Je teste un programme que j ai écrit 2. Je teste un programme que quelqu un d autre a écrit Trois questions : 1. Comment choisir la technique de test? boite blanche ou boite noire? 2. Comment obtenir le résultat attendu? problème de l oracle du test 3. Comment savoir quand arrêter la phase de test? problème de l arrêt Fabrice Bouquet Test 17 / 59

... Bilan Test dynamique Cas(de( tests( Données( de(tests( Résultats( de(tests( Rapport( de(tests( Concep'on( des(tests( Prépara'on( des(données( de(tests( Exécu'on(du( programme( avec(tests( Comparaison( résultats( Fabrice Bouquet Test 18 / 59

... Bilan Type de tests [J. Tretmans] Niveau de détail (situation dans le cycle de vie) système intégration unitaire fonctionnel robustesse performance ergonomie sûreté sécurité Bout en bout module Boite blanche Boite noire Caractéristiques (ce que l on veut tester) Niveau d accessibilité Fabrice Bouquet Test 19 / 59

Plan Test Test Structurel Test fonctionnel Données Synthèse... Principe 1 Test Introduction Dans les faits Dans le cycle de vie Bilan 2 Test Structurel Principe Couverture Bilan 3 Test fonctionnel Exemple Comment? 4 Calcul de données de tests Principe Analyse partitionnelle et test aux limites Approche combinatoire Test aléatoire/statistique 5 Synthèse Fabrice Bouquet Test 20 / 59

... Couverture Test structurel - Exemple Algorithme 1: short prog3(i) A j = 1 Input : short i 1 short j, r ; B j = 1; while ( i> 0 ) do j = j * i; i = i - 1; if ( j > 1 ) then r = j; else if ( i < 0 ) then r = 0; else r = 1; return r; i > 0 C j = i*j i = i -1 i E R = j j > 1 D i < 0 G r = 0 j F i H r = 1 I return r Fabrice Bouquet Test 21 / 59

... Couverture Test structurel - Tous-les-nœuds A j = 1 B i > 0 i C j = i*j i = i -1 j > 1 D j Données de tests : E R = j F i < 0 i G r = 0 H r = 1 I return r Fabrice Bouquet Test 22 / 59

... Couverture Test structurel - Tous-les-nœuds A j = 1 B i > 0 i C j = i*j i = i -1 j > 1 D j Données de tests : DT1 : [i=1] A B C B D F H I E R = j F i < 0 i G r = 0 H r = 1 I return r Fabrice Bouquet Test 22 / 59

... Couverture Test structurel - Tous-les-nœuds A j = 1 B i > 0 i C j = i*j i = i -1 j > 1 D j Données de tests : DT1 : [i=1] A B C B D F H I E R = j F DT2 : [i=-1] A B D F G I i < 0 i G r = 0 H r = 1 I return r Fabrice Bouquet Test 22 / 59

... Couverture Test structurel - Tous-les-nœuds A j = 1 B i > 0 i C j = i*j i = i -1 j > 1 D j Données de tests : DT1 : [i=1] A B C B D F H I DT2 : [i=-1] A B D F G I E R = j F DT3 : [i=2] A B C B C B D E I i < 0 i G r = 0 H r = 1 I return r Fabrice Bouquet Test 22 / 59

... Couverture Test structurel - Tous-les-arcs A j = 1 B i > 0 i C j = i*j i = i -1 j > 1 D j Données de tests : DT1 : [i=1] A B C B D F H I DT2 : [i=-1] A B D F G I E R = j F DT3 : [i=2] A B C B C B D E I i < 0 i G r = 0 H r = 1 I return r Fabrice Bouquet Test 23 / 59

... Couverture Test structurel - Ts-chemins-indépendants A j = 1 B i > 0 C j = i*j i = i -1 i E R = j j > 1 D j F Nombre de McCabe ν(g) : nbre d arcs - nbre de nœuds + 2 ν(g) = 11-9 + 2 = 4 DT1 : [i=1] A B C B D F H I DT2 : [i=-1] A B D F G I DT3 : [i=2] A B C B C B D E I i < 0 i DT4 : [i=0] A B D F H I G r = 0 H r = 1 I return r Fabrice Bouquet Test 24 / 59

... Couverture Test structurel hiérarchie Tous les chemins Tous les DU-chemins Tous les i-chemins Tous les chemins indépendants Toutes les utilisations Toutes les définitions Toutes les P-Utilisations Tous les arcs (TER2) Tous les nœuds (TER1) Fabrice Bouquet Test 25 / 59

Plan Test Test Structurel Test fonctionnel Données Synthèse... Bilan 1 Test Introduction Dans les faits Dans le cycle de vie Bilan 2 Test Structurel Principe Couverture Bilan 3 Test fonctionnel Exemple Comment? 4 Calcul de données de tests Principe Analyse partitionnelle et test aux limites Approche combinatoire Test aléatoire/statistique 5 Synthèse Fabrice Bouquet Test 26 / 59

Bilan Test Test Structurel Test fonctionnel Données Synthèse... Bilan Bonne Pratique Une classe de code / Une classe de tests Test et classe dans le même "package" Les cas nominaux Les cas tordus / catastrophes Mauvaise Pratique Répertoire(s) mélangeant les sources et les tests Tests triviaux Effets de bord (ordre des tests, états dégradés) Fabrice Bouquet Test 27 / 59

Bilan Test Test Structurel Test fonctionnel Données Synthèse... Bilan En résumé, écrire des tests permet : Analyse fine ; Réduction des bogues ; Non-régression du code (refactoring) ; Documentation de votre code ; Développement plus serein ; Efficacité. = Si les tests sont écrits au fur et à mesure Fabrice Bouquet Test 28 / 59

... Bilan Jenkins / Cobertura Fabrice Bouquet Test 29 / 59

Plan Test Test Structurel Test fonctionnel Données Synthèse... Exemple 1 Test Introduction Dans les faits Dans le cycle de vie Bilan 2 Test Structurel Principe Couverture Bilan 3 Test fonctionnel Exemple Comment? 4 Calcul de données de tests Principe Analyse partitionnelle et test aux limites Approche combinatoire Test aléatoire/statistique 5 Synthèse Fabrice Bouquet Test 30 / 59

... Exemple Test fonctionnel - Exemple Spécification : "Formulaire d enregistrement pour un site web." Fabrice Bouquet Test 31 / 59

... Exemple Test fonctionnel - Exemple Spécification : "Formulaire d enregistrement pour un site web." Login:'!ouquet' Password:' ******' Verifica7on:' ******' Register' Cancel' 5 Cases : 10 tests Login (non) vide (2) Login (n ) existe (pas) (2) Password (non) vide (2) Password et Verification (password réécrit) (ne) sont (pas) les mêmes (2) Protocole http(s) (2) Fabrice Bouquet Test 31 / 59

... Exemple Test fonctionnel - Exemple Spécification : "Formulaire d enregistrement pour un site web." Login:'!ouquet' Password:' ******' Quality( Verifica7on:' ******' Register' Cancel' 6 Cases : 13 tests Login (non) vide (2) Login (n ) existe (pas) (2) Password (non) vide (2) Password et Verification (password réécrit) (ne) sont (pas) les mêmes (2) Protocole http(s) (2) Vérifier qualité / Résistance du password (1 par niveau) : poor, average, good Fabrice Bouquet Test 31 / 59

... Exemple Test fonctionnel - Exemple Spécification : "Formulaire d enregistrement pour un site web." Login:'!ouquet' Password:' ******' Quality( Type'the'word:' Verifica7on:' ******' Register' Cancel' 7 Cases : 15 tests Login (non) vide (2) Login (n ) existe (pas) (2) Password (non) vide (2) Password et Verification (password réécrit) (ne) sont (pas) les mêmes (2) Protocole http(s) (2) Vérifier qualité / Résistance du password (3) Vérifier si enregistrement (non) humain (2) Fabrice Bouquet Test 31 / 59

... Comment? Test fonctionnel Définition Le test fonctionnel vise à examiner le comportement fonctionnel d un logiciel et sa conformité avec la spécification ou les exigences du logiciel. Trois questions sous-jacentes Comment sélectionner des données de test (DT)? Comment construire des cas de tests (CT)? Comment savoir si le test réussit ou échoue? (problème de l oracle) Fabrice Bouquet Test 32 / 59

... Comment? Test fonctionnel Définition Le test fonctionnel vise à examiner le comportement fonctionnel d un logiciel et sa conformité avec la spécification ou les exigences du logiciel. Techniques de calcul des données de test Analyse partitionnelle des domaines des données d entrée et test aux limites Test combinatoire Génération aléatoire Fabrice Bouquet Test 32 / 59

... Comment? Test fonctionnel Définition Le test fonctionnel vise à examiner le comportement fonctionnel d un logiciel et sa conformité avec la spécification ou les exigences du logiciel. Techniques de génération de cas de test Test à partir de modèles : Formels : Automate, B, Z, UML/OCL, SysML.. Contrats : Acsl, Eiffel, JML, Praspel, Spec#... Schéma / scénario : Logique, Exp. régulière, Diag. de Seq... Couverture (exigence) Test combinatoire Génération aléatoire Fabrice Bouquet Test 32 / 59

Plan Test Test Structurel Test fonctionnel Données Synthèse... Principe 1 Test Introduction Dans les faits Dans le cycle de vie Bilan 2 Test Structurel Principe Couverture Bilan 3 Test fonctionnel Exemple Comment? 4 Calcul de données de tests Principe Analyse partitionnelle et test aux limites Approche combinatoire Test aléatoire/statistique 5 Synthèse Fabrice Bouquet Test 33 / 59

... Principe Produire des données pour le test Données de test = entrées du programme La production de données de test est essentielle, car elle permet de fournir les entrées utilisées pour tester le programme. La couverture exhaustive des entrées d un programme ou d un système à tester est trop complexe pour permettre une couverture exhaustive. Techniques possibles Diverses techniques vont permettre de sélectionner des données de test pertinentes (susceptibles de détecter des erreurs) : données (semi-)réelles (benerator, jailer) analyse partitionnelle approche combinatoire sélection aléatoire Fabrice Bouquet Test 34 / 59

Plan Test Test Structurel Test fonctionnel Données Synthèse... Partition / Limite 1 Test Introduction Dans les faits Dans le cycle de vie Bilan 2 Test Structurel Principe Couverture Bilan 3 Test fonctionnel Exemple Comment? 4 Calcul de données de tests Principe Analyse partitionnelle et test aux limites Approche combinatoire Test aléatoire/statistique 5 Synthèse Fabrice Bouquet Test 35 / 59

... Partition / Limite Analyse partitionnelle Principe de l analyse partitionnelle L analyse partitionnelle est une technique mathématique issue de l algèbre linéaire qui vise à limiter le nombre de cas de tests. Pour l analyse partitionnelle, on ne considère plus l ensemble des valeurs possibles, mais l ensemble des classes de valeurs possibles (classes d équivalence). Postulats de l analyse partitionnelle le domaine des données d entrée d une fonction se distinguent en classes d équivalence : classes de valeurs valides, et classes de valeurs invalides les classes d équivalence sont mutuellement exclusives C i, C j.c i C j C i C j = l union des classes de valeurs recouvre l ensemble du domaine des valeurs ( C i = E) Fabrice Bouquet Test 36 / 59

... Partition / Limite Les classes d équivalence Illustration des classes d équivalence Test d un ascenceur On souhaite tester un ascenceur. Les fonctionnalités sont les suivantes : Il est borné par un étage minimum : le rez-de-chaussée, il ne descend donc pas plus bas Il est borné par un étage maximum : N, il ne monte donc pas plus haut Fabrice Bouquet Test 37 / 59

... Partition / Limite Les classes d équivalence Illustration des classes d équivalence Test d un ascenceur On souhaite tester un ascenceur. Les fonctionnalités sont les suivantes : Il est borné par un étage minimum : le rez-de-chaussée, il ne descend donc pas plus bas Il est borné par un étage maximum : N, il ne monte donc pas plus haut Partitionnement On considérera les comportements : où l étage est 0 (rez-de-chaussée) où l étage est N (le dernier étage) où l étage est entre les 2 (intervalle de valeurs 1..(N 1)) Fabrice Bouquet Test 37 / 59

... Partition / Limite Les classes d équivalence Définition d une classe d équivalence Une classe d équivalence correspond à un ensemble de données de tests supposés tester le même comportement, c est-à-dire activer le même défaut. Pour effectuer l analyse partitionnelle, on utilise trois phases : 1 Pour chaque donnée d entrée, calcul de classes d équivalence sur les domaines de valeurs, 2 Choix d un représentant de chaque classe d équivalence, 3 Composition par produit cartésien sur l ensemble des données d entrée pour établir les DT. Fabrice Bouquet Test 38 / 59

... Partition / Limite Le test aux limites Principes Le test aux limites est une technique permettant de choisir une valeur précise parmi une classe d équivalence donnée. Principe On s intéresse aux bornes des intervalles partitionnant les domaines des variables d entrées : pour chaque intervalle, on garde les 2 valeurs correspondant aux 2 limites, et les 4 valeurs correspondant aux valeurs des limites ± le plus petit delta possible n 3..15 v 1 = 3, v 2 = 15, v 3 = 2, v 4 = 4, v 5 = 14, v 6 = 16 si la variable appartient à un ensemble ordonnés de valeurs, on choisit le premier, le second, l avant dernier et le dernier n { 7, 2, 3, 157, 200} v 1 = 7, v 2 = 2, v 3 = 157, v 4 = 200 Fabrice Bouquet Test 39 / 59

... Partition / Limite Le test aux limites Principes Le test aux limites est une technique permettant de choisir une valeur précise parmi une classe d équivalence donnée. Principe On s intéresse aux bornes des intervalles partitionnant les domaines des variables d entrées : si une condition d entrée spécifie un nombre de valeurs, définir les cas de test à partir du nombre minimum et maximum de valeurs, et des tests pour des nombres de valeurs hors limites invalides. Un fichier d entrée contient 1-255 records, produire un cas de test pour 0, 1, 255 et 256 Fabrice Bouquet Test 39 / 59

... Partition / Limite Types de données aux limites Les données d entrée ne sont pas seulement des valeurs numériques : caractères, booléens, images, son,... des objets. Ces catégories peuvent, en général, se prêter à une analyse partitionnelle et à l examen des conditions aux limites : True / False Fichier plein / Fichier vide Trame pleine / Trame vide Nuances de couleurs Plus grand / plus petit null, this, type hérité... En général, on essaie dans la mesure du possible de jouer sur une caractéristique numérique des données (taille de fichiers, dimensions d une image, etc.) ou de viser des valeurs spécifiques (caractères non affichables, etc.). Fabrice Bouquet Test 40 / 59

... Partition / Limite Valeur limite sur l exemple Login:'!ouquet' Password:' ******' Quality( Type'the'word:' Verifica7on:' ******' Register' Cancel' Variables du formulaire Login : vide, très longue chaine (+256c), login existant, invalide login Password : vide, très longue chaine, même login, poor, average, good Password verification : différent du Password, identique Captcha : la bonne chaine, pas la bonne Fabrice Bouquet Test 41 / 59

... Partition / Limite Synthèse sur l analyse partitionnelle L analyse partitionnelle est une méthode qui vise à diminuer le nombre de cas de tests par calcul de classes d équivalence. Il est important dans la réalisation du choix de classes d équivalence car sinon on risque de ne pas révéler un défaut. Le choix de conditions d entrée aux limites est une heuristique solide de choix de données d entrée au sein des classes d équivalence. Mais cette heuristique n est utilisable qu en présence d une relation d ordre sur la donnée d entrée considérée. Le test aux limites produit à la fois des cas de test nominaux (dans l intervalle) et de robustesse (hors intervalle). Fabrice Bouquet Test 42 / 59

... Partition / Limite Synthèse sur l analyse partitionnelle Pour une variable x i, on considère les données de test DT xi = {di 1,..., di n}. Fabrice Bouquet Test 43 / 59

... Partition / Limite Synthèse sur l analyse partitionnelle Pour une variable x i, on considère les données de test DT xi = {di 1,..., di n}. Qu en est-il lorsqu il y a plusieurs variables en entrée aux systèmes? Fabrice Bouquet Test 43 / 59

... Partition / Limite Synthèse sur l analyse partitionnelle Pour une variable x i, on considère les données de test DT xi = {di 1,..., di n}. Qu en est-il lorsqu il y a plusieurs variables en entrée aux systèmes? Si on veut effectuer la même approche pour n variables, on va construire le produit cartésien des données de test : DT x1 DT x2 DT xn Risque est d avoir un nombre de cas de test qui explose. Pour éviter cela, il faut travailler sur des classes d équivalence portant sur l ensemble des données d entrée. Fabrice Bouquet Test 43 / 59

... Partition / Limite Évaluation du test aux limites Méthode de test très productive en particulier dans les approches fonctionnelles. Le comportement du programme aux valeurs limites n est souvent pas ou insuffisamment examiné. Couvre l ensemble des phases de test (unitaires, d intégration, de conformité et de régression). Inconvénient Caractère parfois intuitif ou subjectif de la notion de limite rend difficile la caractérisation de la couverture de test. Fabrice Bouquet Test 44 / 59

Plan Test Test Structurel Test fonctionnel Données Synthèse... Approche combinatoire 1 Test Introduction Dans les faits Dans le cycle de vie Bilan 2 Test Structurel Principe Couverture Bilan 3 Test fonctionnel Exemple Comment? 4 Calcul de données de tests Principe Analyse partitionnelle et test aux limites Approche combinatoire Test aléatoire/statistique 5 Synthèse Fabrice Bouquet Test 45 / 59

... Approche combinatoire Approche combinatoire Comment faire lorsque l on a des combinaisons de valeurs de domaines d entrée qui donne lieu à une explosion combinatoire? Options d une boite de dialogue MS Word On a 12 cases à cocher et un menu déroulant pouvant prendre 3 valeurs. Avec 3 valeurs pour la liste déroulante, ceci fait 2 12 3 = 12288 valeurs possibles. Fabrice Bouquet Test 46 / 59

... Approche combinatoire Approche PairWise Pour réduire la combinatoire entre l ensemble des paramètres, on va chercher à tester un fragment des combinaisons de valeurs. Le choix des valeurs va être guidé pour garantir que chaque combinaison de 2 variables est testé. L idée sous-jacente est que dans la majorité des fautes, elles sont détectées par des combinaisons de 2 valeurs de variables. Fabrice Bouquet Test 47 / 59

... Approche combinatoire Approche PairWise Approche PairWise Soient 4 variables représentant respectivement un système d exploitation, un type de réseau, une imprimante et un type d application bureautique. Chacune possède 3 valeurs possibles. Ceci, nous donne : OS = {XP, Linux, MAC OSX} Réseau = {ATM, Wifi, Bluetooth} Imprimante = {HP35, Canon900, CanonEX} Application = {Word, Excel, Pwpoint} Fabrice Bouquet Test 48 / 59

... Approche combinatoire Approche PairWise Approche PairWise L ensemble des combinaisons donne 81 possibilités alors que seulement 9 cas suffisent pour couvrir toutes les paires. Ceci donne : # Cas OS Réseau Imprimante Application Cas 1 XP ATM Canon-EX Pwpoint Cas 2 XP Bluetooth Canon900 Word Cas 3 XP Wifi HP35 Excel Cas 4 Linux ATM HP35 Word Cas 5 Linux Bluetooth Canon-EX Excel Cas 6 Linux Wifi Canon900 Pwpoint Cas 7 Mac OS X ATM Canon900 Excel Cas 8 Mac OS X Bluetooth HP35 Pwpoint Cas 9 Mac OS X Wifi Canon-EX Word Fabrice Bouquet Test 49 / 59

... Approche combinatoire Approche PairWise Bilan Avantage du PairWise : Permet la réduction du nombre de cas possibles (maîtrise de l explosion combinatoire) Problème du Pairwise : Le choix de la combinaison de valeurs n est peut-être pas celle qui détecte le bogue... Référence http://www.pairwise.org Fabrice Bouquet Test 50 / 59

Plan Test Test Structurel Test fonctionnel Données Synthèse... Test aléatoire/statistique 1 Test Introduction Dans les faits Dans le cycle de vie Bilan 2 Test Structurel Principe Couverture Bilan 3 Test fonctionnel Exemple Comment? 4 Calcul de données de tests Principe Analyse partitionnelle et test aux limites Approche combinatoire Test aléatoire/statistique 5 Synthèse Fabrice Bouquet Test 51 / 59

... Test aléatoire/statistique Le test aléatoire Principe Il s agit d une approche basée sur la génération des tests d une manière probabiliste. Ainsi, on va utiliser une fonction (aléatoire) de calcul, qui va sélectionner une valeur aléatoire dans le domaine de la donnée d entrée. Uniformité ou pas? Il faut ainsi faire et vérifier des hypothèses d uniformité sur les valeurs des domaines, sinon il faut pouvoir établir des lois statistiques sur le domaine, basées sur les fréquences d apparitions de certaines valeurs, vis-à-vis de la sémantique de la donnée. Exemple : utilisation d une loi de Gauss pour une donnée représentant la taille des individus. Fabrice Bouquet Test 52 / 59

... Test aléatoire/statistique Synthèse test aléatoire Avantages : Processus peu coûteux qui permet de générer les tests. Retire l aspect subjectif du choix des DT par le valideur Inconvénient : Leur qualité dépend du niveau des tests : plus le test est poussé, plus on a de chance d avoir choisi au moins un représentant parmi toutes les classes d équivalence fonctionnelle ou structurelle du programme. Cette automatisation doit être complété par un oracle, qui n est pas toujours facile a établir et encore moins de façon automatique. Fabrice Bouquet Test 53 / 59

... Test aléatoire/statistique Limites du test aléatoire Dans le cas d application de grande taille, avec un grand nombre de variables, il est quasi impossible de produire au hasard des combinaisons d entrée qui sensibilisent des comportements très spécifiques. Algorithme 2: public int methodeimprobable(int x, int y) if (x == 600 && y == 500) then thrown new Exception("Bonne chance pour me trouver"); return (x+y); Limitation du test aléatoire Il est quasiment impossible qu un générateur aléatoire soit capable de sortir les deux valeurs de x et y (type int 2 64 valeurs possibles, 1 chance sur 2 128 (= 3.4e + 38)) permettant de déclencher l exception. Fabrice Bouquet Test 54 / 59

... Test aléatoire/statistique Bilan du test aléatoire, en pratique Intérêts de l approche aléatoire : Permettre facilement l automatisation pour la sélection des cas de test. Rendre les DT plus objectives car non assujettis aux choix du testeur. % couverture objectif Test déterministe Test aléatoire Effort Tendance : Evolution dans la détection / à l effort (le nombre de test produit). Les études montrent que le test statistique permet d atteindre rapidement 50% de l objectif de test mais qu il a tendance à plafonner ensuite. Fabrice Bouquet Test 55 / 59

Plan 1 Test 2 Test Structurel 3 Test fonctionnel 4 Calcul de données de tests 5 Synthèse Fabrice Bouquet Test 56 / 59

Plan de test Questions pour le testeur : Comment construire des cas de tests? Comment sélectionner des données de test? Comment savoir si le test réussit ou échoue? Questions pour le développeur : Quel est la testabilité de l application (points de contrôle et d observation)? Comment maintenir la stabilité des interfaces? Livraison est-elle fonctionnelle? Fabrice Bouquet Test 57 / 59

Outils Tableur,)Doors,)) HP)ALM,)IBM)Rat.) Requier.)Composer) Exigences) Conformiq,)SmartesGng,) Test)opGmal,)BenderRBT),) Praspel,)JML ) Artéfacts) de)tests) HP,)IBM,)salomeFTM)) Squash)TM,)Testlink) Référen3el) de)tests) Tableur,)Sonar,)) Cobertura,)jenkins) ) ) Rapports) Anomalies) Bugzlla,)Jira,)ManGs,) )Tableur,)Redmine) Scripts) de)tests) IBM)RFT,)Selenium,) HP)QuickTestPro,)Sahi,) XxUnit) Fabrice Bouquet Test 58 / 59

Questions Source - http://model-based-testing.info Est-ce que vous préférez utiliser un système prouvé ou testé?... cf. les artéfacts utilisés. Fabrice Bouquet Test 59 / 59