Tests et Validation du logiciel

Slides:



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

Les Systèmes d’Information Financière Atelier conjoint ACBF / Banque Mondiale / AFRITAC de l’Ouest Gérer l’application dans le temps, sur les plans fonctionnel,
Premier programme en C :
ANOVA à un facteur (Rehailia)
Tests et Validation du logiciel
Tests et Validation du logiciel
Contrôle des processus : Introduction au Contrôle Qualité
Initiation à la programmation et algorithmique cours 4
La Gestion de la Configuration
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Présentation des programmes de terminale STG Juin 2006.
LA LOGIQUE ALGORITHMIQUE. Algorithme Définition Ensemble dopérations Effectuées dans un ordre logique Afin dobtenir un résultat, Afin de résoudre un problème.
Algorithmique Résume.
Tolérance aux défaillances de logiciel
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
Tests non paramétriques
Méthodes statistiques. Ajustements et corrélation
People want to do X, but computers can only do Y. This leads to a problem. My job is to explain how this problem can be solved.
ORGANISATION DES CONTENUS
Les démarches de développement
Les démarches de développement
Version du 22 juin Un outil danalyse statique (synthèse de propriétés) de preuve de propriétés de logiciels écrits en langage C ANSI, utilisé dans.
Introduction : Compilation et Traduction
Outils d’analyse statique
Tests et Validation du logiciel
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Chapitre II.Rappels mathématiques et complexité
La revue de projet.
Les bases de l’Algorithmique
MIAGE MASTER 1 Cours de gestion de projet
Initiation à la programmation et algorithmique
SIMULATION WATERFALL & INSPECTION
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Démarche de résolution de problèmes
Les éléments de base de l’algorithmique
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Methode de Tri efficace
Etude longitudinale d’essais multilocaux: apports du modèle mixte
ALGORITHMIQUE en classe de seconde
Régression linéaire simple
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Techniques de test Boulanger Jean-Louis.
FICHIERS : Définition : Algorithme général:
Introduction à l’algorithmique
Principes de programmation (suite)
Ift 2251 Introduction au Génie Logiciel
Introduction Un test sur les tests Ce que n’est pas le test
2.1 - Historique Chapitre 2 : Introduction au langage C++
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Supports de formation au SQ Unifié
Université de Sherbrooke
TD0 - Rappels. Acquis du programme 1 ère année Analyser et modéliser : un problème, une situation ; Imaginer et concevoir : une solution algorithmique.
 Syntaxe du langage PHP
Introduction au Génie Logiciel
Tutorat en bio-informatique
Le langage Racket (Lisp)
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
1 1 Huitième journée Quelques algorithmes. 2 Définition Description des tâches pour que celles-ci soient aisément programmables Différent d’une méthode.
Algorithmique : Introduction
Présentation AICHA REVEL INGENIEUR D’ÉTUDE STERIA DEPARTEMENT TRD
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 2) François Meunier DMI.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
Les démarches de développement
STATISTIQUE INFERENTIELLE LES TESTS STATISTIQUES
Scripts et fonctions Instructions de contrôle
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
Objectifs des réunions avec les Directions Régionales nationale.
FACTORY systemes Le module de gestion de fiches recettes FORMATION INTOUCH 7.0.
Transcription de la présentation:

Tests et Validation du logiciel 02/2007 – 06/2007

Test structurel Tests structurels statiques Revue de codes Estimation de la complexité

Test structurel statique Introduction Regroupe les méthodes qui ne nécessitent pas l’exécution du code binaire. Intérêt de ce type de tests : caractère absolu de son approche Inconvénient : pas d’exécution du programme avec des « vrai » DT.

Revue de code Revue de Code Technique de contrôle plutôt que de test REVUE ou iNSPECTION (REVIEW OR iNSPECTION), IEEE 729: Examen détaillé d’une spécification, d’une conception ou d’une implémentation par une personne ou un groupe de personnes, afin de déceler des fautes, des violations de normes de développement ou d'autres problèmes. Technique de contrôle plutôt que de test Auto-correction (Desk-checking) / Lectures croisées (Author-reader cycle)

Revue de code Exemple de check liste Commentaires Taux Intérêt du commentaire Instructions de tracing d’exécution Structure du code Goto… Références aux données Variables non initialisées Pointers fantômes Gestions de indices de tableaux Libération de allocations Calculs Conversions de types Overflow Division par zéro Précédence des opérateurs Forme des décisions Complexité des conditions Utilisation de comparaison <> dans une boucle Définition de constantes Comparaisons Entre types consistants Vérifier opérateurs < <= et > >= Contrôle Terminaison des boucles Sortie des procédures et fonctions conditions initiales Une itération en trop (ou en moins) Toutes les possibilités d’un case testées Taille des modules Mesures de complexité Le plan qualité prévoit en général l’utilisation de règles de programmation qui doivent également être vérifiées.

Mesures de complexité Statistiquement, la complexité d’un programme est corrélée avec le nombre de ses défauts. Plusieurs modèles mathématiques proposent une définition de cette complexité

Métriques d’Halstead Complexité liée à la distribution des variables et instructions. Métrique textuelle pour évaluer la taille d'un programme. Alternative au calcul du nombre de lignes de code source. Calcul a posteriori qui ne peut donc en aucun cas supplanter COCOMO ou la méthode des points de fonction.

Métriques d’Halstead La base des mesures est fournie par le vocabulaire utilisé. On évalue le nombre d’opérateurs et d’opérandes. n1 = nombre d’opérateurs uniques n2 = nombre d'opérandes uniques (termes, constantes , variables) N1 = nombre total d’apparition de ces opérateurs N2 = nombre total d’apparition de ces opérandes.

Métriques d’Halstead Exemple : a := a + 1; 3 opérateurs  + := ; 2 opérandes  a 1

Métriques d’Halstead Mise en œuvre : « Une fois que le code a été écrit, cette mesure peut être appliquée pour prédire la difficulté d’un programme et d’autres quantités, en employant les équations de Halstead : l = n1 + n2 Vocabulaire du programme L = N1 + N2                             Taille observée du programme Mais aussi Le = n1(Log2 n1) + n2 (Log2 n2)   Taille estimée du programme V = L Log2 (n1 + n2)                       Volume du programme D = (n1/2) (N2/n2)                           Difficulté du programme L1 = 1/D                                           Niveau du programme E = V/L1                                           Effort B = V/3000                                       Nombre d’erreurs T = E/S                                             Temps NB log2=logarithme en base 2

Métriques d’Halstead Calculez les mesures de Halstead pour le pseudo-code suivant : read x , y , z; type=’’scalène’’; i f ( x==y or x==z or y==z ) type=”isocèle”; i f ( x==y and x==z ) type=”équilatéral”; i f ( x>=y+z or y>x+z or z>=x+z ) type=”pas un triangle”; i f ( x<=0 or y<=0 or z<=0) type=”données erronées”; print type;

Métriques de Mc Cabe Mac Cabe étudier le logiciel en analysant le graphe de contrôle du programme et calcule la complexité structurelle ou nombre cyclomatique de ce graphe Soit n = Nombre de noeuds (blocs d’instructions séquentielles) e = Nombre d’arcs (branches suivies par le programme) v = nombre cyclomatique

Métriques de Mc Cabe Le nombre cyclomatique donne une évaluation du nombre des chemins indépendants dans le graphe et donc une indication sur le nombre de tests nécessaires Cette métrique indique la borne supérieure du nombre de tests à effectuer pour que tous les arcs soient couverts au moins une fois.

Métriques de Mc Cabe Calcul du nombre cyclomatique: Rappel Cas n° 1: 1 point d’entrée; 1 point de sortie v= e-n +2 Cas n° 2 i points d’entrée; s points de sortie v = e - n + i + s Rappel v = nombre cyclomatique n = Nombre de noeuds e = Nombre d’arcs

Métriques de Mc Cabe Dans la pratique il semble que la limite supérieure du nombre cyclomatique soit de 30 environ. La valeur maximum du nombre cyclomatique peut être définie comme un critère de qualité dans le plan qualité. Rq : Le ‘selon’(switch) peut donner un nombre cyclomatiquecatastrophique avec une compréhension fort simple du code !!!

Métriques de Mc Cabe Exercice : soit le programme « recherche dichotomique » en langage C: void recherche_dico (elem cle, elem t[], int taille, boolean &trouv, int &A) { int d, g, m; g=0; d=taille -1; A (d+g) /2; if (t[A]= =cle) trouv=true; else trouv=false; while (g <=d && !trouv) { m= (d+g) /2; if (t[m]= =cle) { trouv=true; A=m; } else if (t[m]> cle) g=m+1; else d=m-1; Calculer le nombre cyclomatique de cette procédure.

Tests structurels dynamiques Basés sur le graphe de flot de contrôle (couverture de toutes les instructions, toutes les branches, tous les chemins, …) Basés sur la couverture du flot de données(toutes les définitions de variable, toutes les utilisations, …)

Tests structurels dynamiques Objectif : Produire les dt qui exécuteront un certain ensemble de comportements (chemins dans le graphe de contrôle) du programme.

Chemins dans un graphe de contrôle 1 seul sommet 1 seule sortie Nœuds = blocs d’instructions Arcs=possibilité de transfert d’un nœud à un autre Chemin de contrôle : chemin qui part de l’entrée pour rejoindre la sortie du graphe

Graphe de contrôle

Expression des chemins Exemple : soit P le programme suivant If x <= 0 then x:=-x Else x:=1-x; If x=-1 then x:=1; Else x:=x+1; Writeln(x); P admet le graphe ci contre

Expression des chemins Le graphe G1 est un graphe de contrôle qui admet une entrée -le noeud a -, une sortie -le noeud g. le chemin [a, c, d, e, g]est un chemin de contrôle, le chemin [b, d, f, g]n’est pas un chemin de contrôle.

Expression des chemins Le graphe G1 peut-être exprimé sous forme algébrique sous la forme suivante : G1 = abdfg+ abdeg+ acdfg+ acdeg le signe + désigne le «ou» logique entre chemins. Simplification de l’expression de chemins G1 = a (bdf+ bde+ cdf+ cde) g G1 = a (b + c) d (e + f) g Cette expression s’appelle l’expression des chemins du graphe.

Expression des chemins Facilité de construction en se basant sur un graphe structuré.  Association d’opération (+ ou *) aux structures primitives d’un graphe structuré

Expression des chemins

Expression des chemins Soit le programme P2 suivant : if n <= 0 then n := 1-n end; if not 2 div n Then n := n / 2 Else n := 3*n + 1 end ; write(n); Fournir le graphe de contrôle Calculez l’expression des chemins

Expression des chemins Soit le programme P3 suivant : i := 1; found:= false; while(not found) do begin if (a[i] = E) then found:= true; s := i; end; i := i + 1; Fournir le graphe de contrôle Calculez l’expression des chemins

Expression des chemins Soit le programme P4 suivant : For (i=1 to 10) for (j=1 to 10) print i*j next

Chemins exécutables et non exécutables Reprenons le graphe ci contre Trouver une DT permettant de couvrir le chemin [a,b,d,f,g] On dit que ce chemin est non exécutable.

Chemins exécutables et non exécutables Trouver une DT permettant d’exécuter le chemin [a,c,d,e,f,g,h] De nouveau… expression de chemin !

Chemins exécutables et non exécutables Chemin non exécutable : bug systématique ? P le programme suivant : Read (choix); If choix=1 then x:=x+1; If choix=2 then x:=x-1; Fournir le graphe de contrôle Fournir une DT pour traiter chaque chemin

Chemins exécutables et non exécutables P le programme suivant : Read (choix); If choix=1 then x:=x+1; If choix=2 then x:=x-1; Restructurer le programme Fournir le nouveau graphe de contrôle Fournir une DT pour traiter chaque chemin Fournir l’expression de chemin.

Expression et nombre de chemins Exemples d’expressions déjà traitée: ab(c(1 + d)eb)*f a (1+b)c(e+d)f a ( 1+b c (1 + de (1 + fg (1 + i) ) ) h Lien direct entre expression et nombre de chemins de contrôle maximum Remplacer chaque nœud par « 1 » et effectuer l’operation arithmétique. 1*1(1(1+1)1*1)*1=2 1(1+1)1(1+1)1=4 Le dernier ….