Des jeux de tests : pour quoi faire? Test du logiciel, cours 2. Flot de contrôle

Documents pareils
Qualité du logiciel: Méthodes de test

Introduction aux tests du logiciel

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Gestion mémoire et Représentation intermédiaire

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)

Représentation d un entier en base b

Cours d algorithmique pour la classe de 2nde

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

Initiation à l algorithmique

1 Recherche en table par balayage

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

TP 1. Prise en main du langage Python

Algorithmique et programmation : les bases (VBA) Corrigé

DG-ADAJ: Une plateforme Desktop Grid

as Architecture des Systèmes d Information

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

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

Les BRMS Business Rules Management System. Groupe GENITECH

Introduction à MATLAB R

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Cours Informatique Master STEP

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

Programme Compte bancaire (code)

1. Structure d'un programme FORTRAN 95

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

Corrigé des TD 1 à 5

Initiation à la programmation en Python

Organigramme / Algorigramme Dossier élève 1 SI

Les structures de données. Rajae El Ouazzani

Présentation du langage et premières fonctions

Resolution limit in community detection

Conventions d écriture et outils de mise au point

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

Initiation à LabView : Les exemples d applications :

Licence Sciences et Technologies Examen janvier 2010

Compilation (INF 564)

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

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

Rappels d architecture

Recherche dans un tableau

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

MIS 102 Initiation à l Informatique

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Algorithmes récursifs

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Cours d Algorithmique et de Langage C v 3.0

Chap III : Les tableaux

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Propagation sur réseau statique et dynamique

STAGE IREM 0- Premiers pas en Python

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Programmer en JAVA. par Tama

Bases de programmation. Cours 5. Structurer les données

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources


Algorithmique et Programmation, IMA

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

Ordonnancement temps réel

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Cours d initiation à la programmation en C++ Johann Cuenin

Informatique Générale

Algorithmique & programmation

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

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

Test de logiciel dans les méthodes agiles

Structure d un programme

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

UE C avancé cours 1: introduction et révisions

ASR1 TD7 : Un microprocesseur RISC 16 bits

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Introduction au langage C

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

= constante et cette constante est a.

Découverte du tableur CellSheet

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

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

ALGORITHMIQUE ET PROGRAMMATION En C

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Arbres binaires de recherche

UE Programmation Impérative Licence 2ème Année

Manipulations du laboratoire

Génie Logiciel avec Ada. 4 février 2013

ACTIVITÉ DE PROGRAMMATION

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Le langage C. Séance n 4

Conception de réseaux de télécommunications : optimisation et expérimentations

CORRECTION EXERCICES ALGORITHME 1

Notions fondamentales du langage C# Version 1.0

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Transcription:

Test du logiciel, cours 2 Des jeux de tests : pour quoi faire? Plan Jeux de test Tests structurels Trace pour le contrôle (le vérificateur vérifie que le testeur a effectué les tests du jeu de test), Trace entre la conception et l exécution du test (entre le moment de la spécification et celui où le code est écrit et peut être testé) Séparer l exécution des tests de l analyse des résultats (ce n est pas au moment où on fait le test qu il faut juger de la pertinence des sorties, ce n est pas la même personne qui le fait la plupart du temps) DESS DLS 2002-2003 Test du logiciel 1/34 DESS DLS 2002-2003 Test du logiciel 3/34 Première partie : généralités Flot de contrôle Trouve = False Indice = 1 Légende : jeux de test, procédure de test, o o WHILE Trouve == False && Indice < Tab_Max { Indice = Indice + 1 IF Tab[Indice] == Valeur { { Trouve = True } o : Sens de parcours du flot : Paquet d instructions sans rupture de séquence : Conditionnelle. La branche Vraie est marquée o couverture de test } } RETURN Indice L analyse du flot de contrôle permet la construction des lignes du tableau de tests DESS DLS 2002-2003 Test du logiciel 2/34 DESS DLS 2002-2003 Test du logiciel 4/34

Flot de données Jeux de tests Exemple de flot de données Entrées du jeu Sorties du jeu P1 P2 VG1 P2 P3 VG1 VG2 Capteur 1 Capteur 2 Capteur 3 Acquisition entrées Valeur cpt 1 Valeur cpt 2 Valeur cpt 3 Traitement Sortie 1 Sortie 2 Vérification Sorties Actionneur 1 Actionneur 2 Jeu 1 Jeu 2 Jeu 3 L analyse du flot de données permet la construction des colonnes du tableau de tests Mode En supposant que les variables globales VG1 et VG2 soient VG1 lue et écrite VG2 seulement écrite. DESS DLS 2002-2003 Test du logiciel 5/34 DESS DLS 2002-2003 Test du logiciel 7/34 Composant : procédure ou fonction Difficultés du test d un logiciel vg1, vg2 : Int; procedure proc (p1 : in Int; p2 : in out Int; p3 : out Int) is l1, l2 : Int; corps de la procédure end proc; Toute la difficulté du test d un logiciel provient de la détermination : d un jeu d entrées par rapport à une couverture de tests des valeurs de sortie d une procédure par rapport à un jeu d entrées déterminé (problème de l oracle) traitement des composants appelés (voir le bouchonnage à la fin de ce cours) DESS DLS 2002-2003 Test du logiciel 6/34 DESS DLS 2002-2003 Test du logiciel 8/34

L oracle Importance du jeu de tests Procédure qui permet de prédire la valeur des sorties par rapport aux valeurs d entrée. Bas niveau : valeur précise Haut niveau : de la valeur précise à une simple propriété à vérifier (intervalle, propriété mathématique, propriété de sûreté, etc.) On voit ici l importance du jeu de tests, car tout repose sur lui : Le jeu de tests est une représentation pour des valeurs particulières de la spécification d une procédure. Si l on veut tester complètement un logiciel, il faut élaborer tous les jeux de tests permettant de couvrir la spécification. La combinatoire de n importe quel problème même de très petite taille est trop importante pour faire un test exhaustif. Par exemple, pour vérifier l addition sur les entiers 32 bits, cela nécessiterait 2 64 jeux de tests. Équilibre d arbitrage OK/KO : trop de OK : le client n est pas content trop de KO : le développeur est mécontent (30 à 50 % des KO sont liés à des erreurs du testeur) Il faut séparer (au moins temporellement) l arbitrage et l exécution des tests. DESS DLS 2002-2003 Test du logiciel 9/34 DESS DLS 2002-2003 Test du logiciel 11/34 Exécution d un test Couverture de tests, critère d arrêt Positionner les valeurs des entrées du jeu de tests Couverture de tests : Appeler la procédure à tester niveau de confiance dans le logiciel pour le client, le contrat entre le client et le testeur, jugé par le vérificateur, pour le testeur, critère de mesure Récupérer les sorties obtenues Critère d arrêt : quand s arrêter de tester? négatif : bugs bloquants, on n est pas en mesure de tester la suite positif (taux de couverture) oui Résultats obtenus = Résultats attendus non On ne cherche pas 100% de la couverture à chaque fois (> 90% bien fait, sauf normes de sûreté très spécifiques) TEST OK TEST KO DESS DLS 2002-2003 Test du logiciel 10/34 DESS DLS 2002-2003 Test du logiciel 12/34

Choix de la couverture des tests Familles de tests Il existe une centaine de couvertures de tests différentes, voir le site 3 critères de choix : criticité du logiciel (normes de sûreté, imposé par le vérficateur) contraintes imposées au logiciel (facteurs qualité imposés par le client : temporelles, portabilité, etc.) type de logiciel (domaine : BD, réseaux, embarqué, etc.) http://www.kaner.com/coverage.htm pour en avoir une liste. Nous ne verrons que les principales. Ces deux familles de tests sont complémentaires et doivent obligatoirement être effectuées si l on veut avoir une certaine confiance dans le logiciel produit. Notion de taux de couverture : mesure de la couverture (justification) Chaque jeu de test doit augmenter la couverture de tests La première permet de valider l implémentation d un algorithme. Elle est automatisable. La seconde permet de vérifier que l algorithme mis en œuvre permet de résoudre le problème posé. Elle relève du testeur humain essentiellement. DESS DLS 2002-2003 Test du logiciel 13/34 DESS DLS 2002-2003 Test du logiciel 15/34 Les grandes familles de tests Deuxième partie : Tests structurels Tests structurels Couvertures basées sur la structure du code à tester (flot de contrôle et flot de données) Tests fonctionnels Couvertures basées sur la fonctionnalité réalisée par le code à tester But des tests structurels : détecter les fautes d implémentation. vérifier que le logiciel n en fait pas plus que sa spécification et qu il n existe pas de cas de plantage (overflow, non initialisation,...) Critère d arrêt : lié à la structure du code et non à la fonctionnalité du logiciel DESS DLS 2002-2003 Test du logiciel 14/34 DESS DLS 2002-2003 Test du logiciel 16/34

Couvertures des Tests Structurels Couverture des branches Couverture du flot de contrôle (des instructions, des branches, des chemins, LCSAJ, etc.) Couverture de chaque condition logique Couverture des itérations Couverture de chaque donnée procedure p is test 1 test 2 if c1 then vrai faux s1 ; s1 if c2 then faux vrai s2 ; s2 DESS DLS 2002-2003 Test du logiciel 17/34 DESS DLS 2002-2003 Test du logiciel 19/34 Couverture des instructions Couverture des chemins procedure p is test 1 if c1 then vrai s1 ; s1 if c2 then vrai s2 ; s2 procedure p is test 1 test 2 test 3 test 4 if c1 then vrai vrai faux faux s1 ; s1 s1 if c2 then vrai faux vrai faux s2 ; s2 s2 DESS DLS 2002-2003 Test du logiciel 18/34 DESS DLS 2002-2003 Test du logiciel 20/34

Couverture du code source : couverture LCSAJ Nombre de tests / couverture Programmes qui font la même chose : Linear Code Subpath And Jump (LCSAJ) en anglais Portion Linéaire de Code Suivie d un Saut (PLCS) en français Un peu de vocabulaire Dans le graphe de contrôle de la procédure, on distingue : Les noeuds spéciaux (grisés sur le dessin) : l entrée, la sortie, l arrivée d un branchement (saut) Les arcs spéciaux (traits épais sur le dessin) : les sauts ; l arc de sortie en fait partie par défaut. On appelle LCSAJ un chemin allant d un noeud spécial à un autre comprenant exactement un saut entre l avant-dernier et le dernier noeud. Adapté à un certain type de programmation, de bas niveau (sinon cela dépend du compilateur). Calculé automatiquement d ordinaire, inutile de s inquièter! procedure p1 is procedure p2 is s := faux s := c1 and c2 if c1 then end p2 ; if c2 then s := vrai ; end p1 ; 3 tests (couverture des chemins) 1 test (couverture des chemins) Est-il raisonnable que le niveau de confiance (la couverture) dépende de la façon dont le développeur a écrit son code? Les couvertures vues précédemment (du flot de contrôle) sont trop sensibles au flot de contrôle! il faut les complèter par d autres types de couvertures... DESS DLS 2002-2003 Test du logiciel 21/34 DESS DLS 2002-2003 Test du logiciel 23/34 Un exemple de PLCS en Basic Couverture des conditions logiques 005 INPUT A,C 010 B=2*A L5 INPUT A, C B < 2*A 020 A=A+1 030 IF A < 0 THEN GOTO 040 B=-A A < A+1 L20 050 PRINT A+B 060 IF B=2*C THEN GOTO 070 A = 1; GOTO 90 080 A = -2; GOTO 20 090 PRINT A 100 END Chemins couvrant toutes les PLCS : A < 0 L30 A >= 0 B < A L40 PRINT A+B L80 A < 2 Dans les couvertures du flot de contrôle : on s appuie sur le flot de contrôle, sans regarder le contenu de chacun des noeuds. Au lieu de passer une fois dans le cas true et une fois dans le cas false, on cherche les différentes façons de rendre la condition logique vraie ou fausse ; on augmente ainsi la confiance obtenue dans le logiciel (couverture). [L5,L20,L30,L60,L70,L90,L100] L60 B=2*C [L5,L20,L30,L40,L60,L80,L20,L30,L60,L70,L90,L100] [L5,L20,L30,L40,L60,L70,L90,L100] B <> 2*C A < 1 L70 L90 L100 PRINT A DESS DLS 2002-2003 Test du logiciel 22/34 DESS DLS 2002-2003 Test du logiciel 24/34

Couverture des conditions logiques Couverture des conditions logiques Stratégie pour limiter la combinatoire procedure p is t1 t2 t 3 t4 t5 t6 t7 t8 if c1 or c2 or c3 (V,V,V) (V,V,F) (V,F,V) (V,F,F) (F,V,V) (F,V,F) (F,F,V) (F,F,F) then s1 ; s1 s1 s1 s1 s1 s1 s1 else s2 ; s2 stratégie pour l opérateur OU, effectuer un test avec toutes les sous-conditions à FAUX un test pour chaque sous-condition à VRAI unitairement (circulation d un 1) un test avec toutes les sous-conditions à VRAI Par conséquent, n + 2 tests par condition (sur l exemple, on fait 5 tests au lieu de 8 : on évite les tests t2, t3, t5) stratégie pour l opérateur ET, effectuer un test avec toutes les sous-conditions à VRAI un test pour chaque sous-condition à FAUX unitairement (circulation d un 0). Par conséquent, n + 1 tests par condition Cette stratégie pour limiter la combinatoire est appelée couverture des conditions logiques. DESS DLS 2002-2003 Test du logiciel 25/34 DESS DLS 2002-2003 Test du logiciel 27/34 Couverture des conditions logiques Couverture des itérations Plusieurs façons de couvrir les conditions logiques. Les deux extrêmes : évaluer les conditions une à une (n tests) la table de vérité de chaque condition (2 n tests par condition) procedure p is test1 test2 test 3 while c1 (F) (V,F) (V,...,V,F) loop s1 ; s1 s1 ;... ;s1 end loop ; DESS DLS 2002-2003 Test du logiciel 26/34 DESS DLS 2002-2003 Test du logiciel 28/34

Couverture des données Couverture d une donnée Dans les couvertures précédentes : on ne s est pas intéressé au format des données manipulées ainsi qu aux valeurs numériques permettant de rendre une condition vraie ou fausse. La couverture des données consiste à choisir : les «bonnes valeurs numériques» pour rendre une condition vraie ou fausse (valeurs remarquables) les valeurs limites des données d entrée les valeurs numériques permettant de d obtenir les valeurs calculées (overflow, division par zéro,...) procedure p is test1 test2 test 3 test 4 test 5 test 6 if e > 30 359 31 30 0-32768 32767 then s1 ; s1 s1 s1 DESS DLS 2002-2003 Test du logiciel 29/34 DESS DLS 2002-2003 Test du logiciel 31/34 Couverture de chaque donnée : domaine d une donnée Programme de tests Domaine informatique 32768 0 32767 Pour les test structurels, obligation d écrire des programmes de tests pour exécuter les tests. Ces programmes de tests prennent en entrée les jeux de tests et sont linkés avec le composant à tester. Domaine fonctionnel 0 359 Ces programmes sont généralement écrits automatiquement par les logiciels d exécution de tests (par exemple : RTRT de Rational). DESS DLS 2002-2003 Test du logiciel 30/34 DESS DLS 2002-2003 Test du logiciel 32/34

Programme de tests Les programmes de tests sont architecturés comme suit : Initialisation des variables globales utilisées par le composant à tester à partir des valeurs d entrée des jeux de tests Appel du composant à tester avec les paramètres initialisés à partir des valeurs d entrée des jeux de tests Récupération des sorties produites par le composant (paramètres en sortie et variables globales) Comparaison des valeurs des sorties obtenues avec les valeurs des sorties décrites dans les jeux de tests Enregistrement et affichage du résultat de test. DESS DLS 2002-2003 Test du logiciel 33/34 Le bouchonnage... o S = f( e1, e2,...) IF S > 100...... Les différentes valeurs de la donnée S sont peut-être très difficiles à calculer à partir des valeurs e1, e2,... présentes dans le jeu de tests. La technique du bouchonnage consiste donc à : ajouter une entrée artificielle dans les jeux de test. Cette entrée correspondra à la sortie de la fonction f écrire un bouchon pour remplacer le véritable code de la fonction f : ce code ne fait que retourner la valeur positionnée dans le jeu de test. Ainsi le testeur peut maitriser complétement les tests réalisés. DESS DLS 2002-2003 Test du logiciel 34/34