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