Les tests dans la vie d un logiciel

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

Qualité du logiciel: Méthodes de test

Test et Validation du Logiciel

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

Test de logiciel dans les méthodes agiles

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Audits de sécurité, supervision en continu Renaud Deraison

Examen Médian - 1 heure 30

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

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

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

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

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

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

Formula Negator, Outil de négation de formule.

données en connaissance et en actions?

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Tutoriel sur Retina Network Security Scanner

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

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?

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

26 Centre de Sécurité et de

Évaluation et implémentation des langages

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Analyse statique de code dans un cycle de développement Web Retour d'expérience

TP 1. Prise en main du langage Python

Diagrammes de Package, de déploiement et de composants UML

Conception des systèmes répartis

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

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Parcours en deuxième année

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

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

Environnements de développement (intégrés)

Problèmes d ordonnancement dans les systèmes de production. Journée Automatique et Optimisation Université de Paris Mars 2003

White Paper - Livre Blanc

La place de SAS dans l'informatique décisionnelle

Architectures web/bases de données

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Vérification et Validation

Déploiement de SAS Foundation

Les Bonnes PRATIQUES DU TEST LOGICIEL

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

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit.

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

Extrait des Exploitations Pédagogiques

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Import factures depuis journal de vente

Manuel d'installation de GESLAB Client Lourd

La Sécurité des Données en Environnement DataCenter

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

Cours d algorithmique pour la classe de 2nde

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

VI. Tests non paramétriques sur un échantillon

Technologie Web. Conception de sites Web. Alexandre Pauchet. INSA Rouen - Département ASI. INSA - ASI TechnoWeb : Rappels UML 1/21

Efficacité énergétique des réseaux de cœur et d accès

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

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

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Data Tier Application avec SQL Server 2008 R2

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Programmation C++ (débutant)/instructions for, while et do...while

CAHIER DES CLAUSES TECHNIQUES PARTICULIERES (CCTP) Valant ACCORD-CADRE. Procédure d appel d offres ouvert - N

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

Corrigé des TD 1 à 5

aalto Collaborative Pour le gestionnaire,

Introduction au génie logiciel

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

DÉVELOPPER DES APPLICATIONS WEB SÉCURISÉES

Centre hospitalier Sainte croix

Les structures de données. Rajae El Ouazzani

Présentation du langage et premières fonctions

Simple Database Monitoring - SDBM Guide de l'usager

as Architecture des Systèmes d Information

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Algorithmique et programmation : les bases (VBA) Corrigé

Logiciel Libre Cours 3 Fondements: Génie Logiciel

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Big Data et Graphes : Quelques pistes de recherche

Automatisation de l administration système

Arbres binaires de recherche

UM2 - Master 2 Année Sensibilisation aux Tests de Projets Informatique - Managed Testing -

Programmer en JAVA. par Tama

répondre aux défis de l ingénierie logicielle déploiement et mise en œuvre opérationnelle : l'industrialisation au service de la compétitivité

SQL Parser XML Xquery : Approche de détection des injections SQL

TD3: tableaux avancées, première classe et chaînes

CA Desktop Migration Manager

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

Cours. Cours 8 : Révisions. Importance. Interface homme-machine

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

Olivier Deheurles Ingénieur conception et développement.net

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

Création d installateurs pour Windows avec InnoSetup

Transcription:

Les tests dans la vie d un logiciel Fabrice Bouquet 7 ème Rencontre DevelopR6 : les tests 5 Juin 2014 INRIA / CNRS Université de Franche-Comté Fabrice Bouquet Test 1 / 64

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

Plan Test Structurel Fonctionnel Données Non Fonct. 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 Test non fonctionnel Test de sécurité / vulnérabilité Test de performances / charges Test d IHM 6 Synthèse Fabrice Bouquet Test 3 / 64

... 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 / 64

... Introduction Pourquoi tester Motivation Ariane 5, Carte à puce, Réseau Orange, open SSL... 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 / 64

Test? Test Structurel Fonctionnel Données Non Fonct. 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 / 64

Plan Test Structurel Fonctionnel Données Non Fonct. 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 Test non fonctionnel Test de sécurité / vulnérabilité Test de performances / charges Test d IHM 6 Synthèse Fabrice Bouquet Test 7 / 64

... 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 / 64

... 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 / 64

Plan Test Structurel Fonctionnel Données Non Fonct. 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 Test non fonctionnel Test de sécurité / vulnérabilité Test de performances / charges Test d IHM 6 Synthèse Fabrice Bouquet Test 10 / 64

... 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 / 64

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

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

Coût Test Structurel Fonctionnel Données Non Fonct. 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 / 64

... 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 / 64

Plan Test Structurel Fonctionnel Données Non Fonct. 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 Test non fonctionnel Test de sécurité / vulnérabilité Test de performances / charges Test d IHM 6 Synthèse Fabrice Bouquet Test 16 / 64

... 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 / 64

... 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 / 64

... 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 / 64

Plan Test Structurel Fonctionnel Données Non Fonct. 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 Test non fonctionnel Test de sécurité / vulnérabilité Test de performances / charges Test d IHM 6 Synthèse Fabrice Bouquet Test 20 / 64

... 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 / 64

... 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 / 64

... 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 / 64

... 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 / 64

... 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 / 64

... 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 / 64

... 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 / 64

... 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 / 64

Plan Test Structurel Fonctionnel Données Non Fonct. 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 Test non fonctionnel Test de sécurité / vulnérabilité Test de performances / charges Test d IHM 6 Synthèse Fabrice Bouquet Test 26 / 64

Bilan Test Structurel Fonctionnel Données Non Fonct. 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 / 64

Bilan Test Structurel Fonctionnel Données Non Fonct. 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 / 64

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

Plan Test Structurel Fonctionnel Données Non Fonct. 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 Test non fonctionnel Test de sécurité / vulnérabilité Test de performances / charges Test d IHM 6 Synthèse Fabrice Bouquet Test 30 / 64

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

... Exemple Test fonctionnel - Exemple Spécification : "Formulaire d enregistrement pour un site web sécurisé." Login:'!ouquet' Password:' ******' Verifica7on:' ******' Register' Cancel' Fabrice Bouquet Test 31 / 64

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

... Exemple Test fonctionnel - Exemple Spécification : "Formulaire d enregistrement pour un site web sécurisé." Login:'!ouquet' Password:' ******' Quality( Verifica7on:' ******' Register' Cancel' 6 Cases : 15 tests Login (non) vide / long (3) Login (n ) existe (pas) (2) Password (non) vide / long (3) 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 / 64

... Exemple Test fonctionnel - Exemple Spécification : "Formulaire d enregistrement pour un site web sécurisé." Login:'!ouquet' Password:' ******' Quality( Type'the'word:' Verifica7on:' ******' Register' Cancel' 7 Cases : 17 tests Login (non) vide / long (3) Login (n ) existe (pas) (2) Password (non) vide / long (3) 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 / 64

... 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 / 64

... 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 / 64

... 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 / 64

Plan Test Structurel Fonctionnel Données Non Fonct. 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 Test non fonctionnel Test de sécurité / vulnérabilité Test de performances / charges Test d IHM 6 Synthèse Fabrice Bouquet Test 33 / 64

... 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 / 64

Plan Test Structurel Fonctionnel Données Non Fonct. 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 Test non fonctionnel Test de sécurité / vulnérabilité Test de performances / charges Test d IHM 6 Synthèse Fabrice Bouquet Test 35 / 64

... 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 / 64

... 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 / 64

... 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 / 64

... 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 / 64

... 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 / 64

... 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 / 64

... 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 / 64

... 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 / 64

... 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 / 64

Plan Test Structurel Fonctionnel Données Non Fonct. 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 Test non fonctionnel Test de sécurité / vulnérabilité Test de performances / charges Test d IHM 6 Synthèse Fabrice Bouquet Test 43 / 64

... 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 44 / 64

... 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 45 / 64

... 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 = {Windows, Linux, Mac Os} Réseau = {Cable, Wifi, Bluetooth} Imprimante = {Laser, Encre Liquide, Encre Solide} Format = {Texte, Image, Mixe} Fabrice Bouquet Test 46 / 64

... 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 Format Cas 1 Windows Bluetooth laser Texte Cas 2 Windows Cable Solide Image Cas 3 Windows Wifi Liquide Mixe Cas 4 Mac OS Bluetooth Solide Mixe Cas 5 Mac OS Cable Liquide Texte Cas 6 Mac OS Wifi laser Image Cas 7 Linux Bluetooth Liquide Image Cas 8 Linux Cable laser Mixe Cas 9 Linux Wifi Solide Texte Fabrice Bouquet Test 47 / 64

... 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 48 / 64

Plan Test Structurel Fonctionnel Données Non Fonct. 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 Test non fonctionnel Test de sécurité / vulnérabilité Test de performances / charges Test d IHM 6 Synthèse Fabrice Bouquet Test 49 / 64

... 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 50 / 64

... 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 51 / 64

... 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 52 / 64

... 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 53 / 64

Plan Test Structurel Fonctionnel Données Non Fonct. Synthèse... Sécurité 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 Test non fonctionnel Test de sécurité / vulnérabilité Test de performances / charges Test d IHM 6 Synthèse Fabrice Bouquet Test 54 / 64

... Sécurité Vulnérabilités Fabrice Bouquet Test 55 / 64

Failles Test Structurel Fonctionnel Données Non Fonct. Synthèse... Sécurité Fabrice Bouquet Test 56 / 64

Test Structurel Fonctionnel Données Non Fonct. Synthèse x... Sécurité Attaques Fabrice Bouquet Test 57 / 64

... Sécurité Test de sécurité Tester la manière dont le système est protège contre les accès internes ou externes non autorisés Network Scanning Network vulnerability scanner Source code analyser Security Test Technics Bytecode analyser SAST - Static Application Security Testing Binary code Scanner Database frangibility scanner Network monitoring techniques for detecting vulnerabilities and attacks Monitoring Business activity security monitoring (BAM) Model-based security testing DAST - Dynamic Application Security Testing Fuzzing Penetration test automation Fabrice Bouquet Test 58 / 64

... Performance Test de charge / performance Tester en simulant un nombre d utilisateurs(ions) virtuels prédéfinis et valider que le système répond correctement (temps/fonctionnement) Questions pour le développeur : Test de dégradations des transactions Test de stress Test de robustesse, d endurance, de fiabilité Test de capacité, test de montée en charge Test aux limites Tests de Volumétrie des données Référence http://en.wikipedia.org/wiki/load_testing Fabrice Bouquet Test 59 / 64

Test d IHM Test Structurel Fonctionnel Données Non Fonct. Synthèse... IHM Spécificité : Tester en simulant des actions sur l interface Différents univers : OS Langage Web Processus : Enregistrement Adaptation Rejeux Référence http://en.wikipedia.org/wiki/list_of_gui_testing_tools Fabrice Bouquet Test 60 / 64

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

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 62 / 64

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 63 / 64

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 64 / 64