Qualité Logicielimad-hafidi.com/Cours/Genie/QL.pdf · Qualité Logiciel Pr Hafidi Imad...

74
Génie logiciel TEST Hafidi Imad-ENSAK-Cours QL 1 Qualité Logiciel Pr Hafidi Imad [email protected]

Transcript of Qualité Logicielimad-hafidi.com/Cours/Genie/QL.pdf · Qualité Logiciel Pr Hafidi Imad...

  • Génie logiciel TEST

    Hafidi Imad-ENSAK-Cours QL 1

    Qualité Logiciel

    Pr Hafidi Imad [email protected]

  • Hafidi Imad-ENSAK-Cours QL 2

    Introduction

  • Notion de qualité   La notion de qualité est une partie intégrante du processus de

    fabrication d'un produit   Un organisme international a édicté une série de normes sur

    ce sujet(Norme ISO)

    Pourquoi ?

    Hafidi Imad-ENSAK-Cours QL 3

  •   Il faut de comprendre l'évolution du rapport producteur/acheteur pour expliquer cette apparition de notion de qualité dans le monde économique.

    Hafidi Imad-ENSAK-Cours QL 4

  •   Les objectifs de qualité rejoignent bien souvent les objectifs de productivité  Adéquation aux besoins   Efficacité temps/espace   Fiabilité   Sécurité,   Intégrité  Testabilité, Traçabilité   Adaptabilité, Maintenabilité,  Convivialité (interface, aide et documentation)   Pérennité (facilité de la maintenance)

    Hafidi Imad-ENSAK-Cours QL 5

  •   La qualité vise à réduire le nombre d'erreurs résiduelles, maîtriser les coûts et la durée du développement sans nuire à l’innovation et à la créativité.

    Hafidi Imad-ENSAK-Cours QL 6

  •   Les moteurs de l'assurance qualité sont multiples : on peut citer   L'organisation du processus : découper le processus pour le

    maîtriser   Les ressources humaines : les équipes doivent être motivées

    pour mettre en place des procédures qualité   L'utilisation de techniques, méthodes, outils   Les considérations managériales, politiques et économiques :

    considérer le retour sur investissement de la mise en place de procédures qualité par une analyse coûts bénéfices.

    Hafidi Imad-ENSAK-Cours QL 7

  • Assurance qualité

    Assurance qualité : "Mise en oeuvre d'un ensemble approprié de dispositions préétablies et systématiques destinées à donner confiance en l'obtention de la qualité requise."

    Plus précisément toutes les normes qualité insistent sur trois aspects essentiels : communication, contrôle, organisation.

    Hafidi Imad-ENSAK-Cours QL 8

  • Organisation   Le processus de développement est classiquement organisé

    en différentes phases conformément à la figure

    Hafidi Imad-ENSAK-Cours QL 9

  •   Une tâche essentielle du chef de projet est d'organiser ces différentes phases et de les lier à des activités en y affectant les ressources nécessaires tant humaines que logicielles ou matérielles. L'enchaînement des activités constituera le workflow du projet.

      Chaque activité débouche sur un produit intermédiaire dont la production détermine la fin de l'activité et qui devra être contrôlé avant de passer à l'activité suivante.

    Hafidi Imad-ENSAK-Cours QL 10

  • Contrôle   L'assurance qualité passe par des contrôles réguliers et inclut

      la validation : permet de répondre à la question "sommes nous en train de faire le bon produit? "

      la vérification : répond à la question "est ce que nous faisons le produit correctement"

    Hafidi Imad-ENSAK-Cours QL 11

  • Croissance des erreurs

    Hafidi Imad-ENSAK-Cours QL 12

  • Inspection   le rôle primordial de contrôles intermédiaires. La validation

    et la vérification sont en partie garanties par la mise en place des d'inspections, revues, relectures pour tous les produits intermédiaires du développement (prototypes/ maquettes, documents de spécification, de conception, code, jeux de tests)

      L'inspection est une lecture critique d'un document (spécification, conception, code, plan d'intégration...); elle est destinée à améliorer la qualité d'un document.

      l'inspection est faite par une équipe indépendante du projet constituée par: un Modérateur, un Experts(s), Secrétaire , le client

    Hafidi Imad-ENSAK-Cours QL 13

  •   une inspection doit donner lieu à la rédaction de fiches de défauts avec une échelle de gravité et la définition des responsabilités concernant la correction des défauts.

      Les inspections sont à la base des décisions prises en revues. Une revue est une réunion permettant de valider une des phases du cycle de vie

    Hafidi Imad-ENSAK-Cours QL 14

  •   - les revues produits: état d'un projet sous ses différents aspects: Techniques, Financiers, Commerciaux, Calendrier, ...

      les revues techniques (celles qui nous intéressent le plus dans le cadre de ce cours): elles permettent de fournir au marketing et à l'unité de développement une évaluation des aspects techniques du projet et des coûts de réalisation

      les réunions de décision: elles valident le passage à la phase suivante et font bien souvent suite à l'une des deux précédentes.

    Hafidi Imad-ENSAK-Cours QL 15

  • Communication   L’assurance qualité insiste sur la nécessité de communiquer à

    différents niveaux:   entre développeurs et environnement, (clients avant le

    développement, support pendant la phase de maintenance) : cahier des charges, dossier d'analyse, manuel d'installation, dossier de conception, plan projet, plan qualité

      entre les développeurs (dossier d'analyse, dossier de conception, plan qualité, commentaires du code, résultats de tests…).

     Certains documents sont plus spécifiquement dédiés à la gestion de la qualité, il s'agit du manuel qualité de l'entreprise et du plan qualité du projet.

    Hafidi Imad-ENSAK-Cours QL 16

  • Manuel qualité   Le manuel qualité décrit les procédures définies par une

    entreprise ou une organisation pour atteindre ses objectifs de qualité.

      Il répertorie les méthodes et procédures à utiliser pour:  Gestion de projets   Réalisation, Vérification, Validation,   Evaluation de la Qualité (Mesures).

      En s'appuyant sur:  Rédaction de standards, normes (ISO, DOD..) , conventions,

    guides,   Expérience acquise des projets, pour améliorer le processus.

    Hafidi Imad-ENSAK-Cours QL 17

  • Plan de qualité   Le plan qualité logiciel définit, pour un projet

    donné, en accord avec le manuel qualité de l'entreprise, les méthodes techniques et outils permettant d'atteindre les objectifs de qualité pour un coût donné.

      Le plan qualité fait partie des éléments contractuels liant un client et son fournisseur de logiciels. Il est établi lors de la phase de planification.

    Hafidi Imad-ENSAK-Cours QL 18

  • Hafidi Imad-ENSAK-Cours QL 19

    Analyse Statique du code

  •   L’analyse statique de code consiste à étudier un programme source sans exécution du code en faisant appel à des listes de défauts typiques ou à des métriques dont les valeurs acceptables sont définies dans le plan qualité du projet.

      Cette activité doit être réalisée avant le processus de tests informatiques car elle permet souvent de mettre en évidence des erreurs de logique qui peuvent être coûteuses à corriger si elles sont découvertes tard.

    Hafidi Imad-ENSAK-Cours QL 20

  •   Les moyens mis en œuvre:   étude visuelle du programme source ,   étude graphique du flot de contrôle, des graphes d’appels,  métrologie du logiciel.

      Les résultats:   logique employée dans le programme,   communications entre les composants,   erreurs syntaxiques et structurelles,   style employé.

    Hafidi Imad-ENSAK-Cours QL 21

  • Inspection : par des extérieurs, checklist de défauts   Références aux données, variables non initialisées, indices de

    tableaux compris entre les bornes   Calculs, conversions de types, division par zéro   précédence des opérateurs, Comparaisons entre types

    consistants, vérifier opérateurs > >= et > >=, vérifier expressions booléennes & ou not, 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.

    Hafidi Imad-ENSAK-Cours QL 22

  •   Cette liste n’est pas limitative et doit être adaptée à chaque langage.

      Le plan qualité prévoit en général l’utilisation de règles de programmation qui doivent également être vérifiées.

    Hafidi Imad-ENSAK-Cours QL 23

  • Hafidi Imad-ENSAK-Cours QL 24

    Introduction au test de logiciels

  • Introduction   Les tests permettent de vérifier de manière dynamique que le

    produit réalisé est conforme aux intentions.   L’activité de tests est aussi vieille que le développement mais

    elle est encore trop souvent empirique. Elle est pourtant le dernier rempart contre les erreurs résiduelles.

    Hafidi Imad-ENSAK-Cours QL 25

  • Définition Norme 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. »

    Hafidi Imad-ENSAK-Cours QL 26

  •   « Tester peut révéler la présence d'erreurs mais jamais leur absence »  Vérification partielle : le test ne peut pas montrer la conformité

    du système (nécessité d'une infinité de tests)

      « Tester, c'est exécuter le programme dans l'intention d'y trouver des anomalies ou des défauts »  Objectif : détection des bugs

    Hafidi Imad-ENSAK-Cours QL 27

  • Bug   Anomalie (fonctionnement) : différence entre comportement

    attendu et comportement observé   Défaut (interne) : élément ou absence d'élément dans le

    logiciel entraînant une anomalie   Erreur (programmation, conception) : comportement du

    programmeur ou du concepteur conduisant à un défaut

    Hafidi Imad-ENSAK-Cours QL 28

    Erreur Défaut Anomalie

  • Limite de la vérification   Indécidabilité : Un problème est indécidable s'il n'existe pas

    d'algorithme capable de le résoudre dans le cas général   Ex : Problèmes indécidables

      L'exécution d'un programme termine  Deux programmes calculent la même chose  Un programme est une implantation correcte de sa spécification

    Il n'existe pas d'algorithme permettant de prouver la correction de n'importe quel programme

    Hafidi Imad-ENSAK-Cours QL 29

  • Limite de test   Explosion combinatoire : Nombre d'exécutions possibles

    d'un programme potentiellement infini

    Mais test = processus fini Nécessité d'approcher l'infini (l'extrêmement grand) par le fini

    (heuristique)

    Hafidi Imad-ENSAK-Cours QL 30

  • Évolution du test   le test de logiciels :

      est la méthode la plus utilisée pour assurer la qualité des logiciels

      fait l'objet d'une pratique trop souvent artisanale

      le test de logiciels devrait être :   une activité rigoureuse   fondée sur des modèles et des théories   de plus en plus automatique

    Hafidi Imad-ENSAK-Cours QL 31

  • Exemple   Spécification : Le programme prend en entrée trois entiers,

    interprétés comme étant les longueurs des côtés d'un triangle. Le programme retourne la propriété du triangle correspondant : scalène, isocèle ou équilatéral.

      Exercice : Écrire un ensemble de tests pour ce programme

    Hafidi Imad-ENSAK-Cours QL 32

  • Hafidi Imad-ENSAK-Cours QL 33

  •   16 cas correspondant aux défauts constatés dans des implantations de cette spécification

      Moyenne des résultats obtenus par un ensemble de développeurs expérimentés : 55%

    La construction de tests est une activité difficile, encore plus

    sur de grandes applications

    Hafidi Imad-ENSAK-Cours QL 34

  • Vocabulaire du test   Objectif de test : comportement du système à tester   Données de test : données à fournir en entrée au système de

    manière à déclencher un objectif de test   Résultats d'un test : conséquences ou sorties de l'exécution

    d'un test (affichage à l'écran, modification des variables, envoi de messages...)

      Cas de test : données d'entrée et résultats attendus associés à un objectif de test

    Hafidi Imad-ENSAK-Cours QL 35

  • Exemple : tri d'une liste d'entiers

    Hafidi Imad-ENSAK-Cours QL 36

  • Problème de l’oracle   Oracle : décision de la réussite de l'exécution d'un test,

    comparaison entre le résultat attendu et le résultat obtenu   Problème : décision pouvant être complexe

      types de données sans prédicat d'égalité   système non déterminisme : sortie possible mais pas celle

    attendue   heuristique : approximation du résultat optimal attendu

    Hafidi Imad-ENSAK-Cours QL 37

  •   Ex : Trouver le minimum d'une liste d'entiers   Entrée : [4; 2; 3; 6] Sortie attendue : 2  Oracle : Égalité entre entiers OK

      Ex : Calculer l'itinéraire le plus rapide entre deux villes   Entrée : Paris – Lyon Sortie attendue : ...A6...  Oracle : Trajet de 4h17 (quel que soit l'itinéraire choisi) OK

      Ex : Problème du sac à dos (résolu avec une heuristique)  Oracle : Résultat = résultat optimal + 5% OK

    Hafidi Imad-ENSAK-Cours QL 38

  •   Oracle : En général, résultat attendu = ensemble de conditions si plusieurs solutions possibles et énumération impossible

      Risques : Échec d'un programme conforme si définition trop stricte du résultat attendu   Faux positif (false-fail)

      Voir l'exemple du calcul d'itinéraire dans lequel on impose un chemin.

    Hafidi Imad-ENSAK-Cours QL 39

  •   Validité des tests : Les tests n'échouent que sur des programmes incorrects

      Faux positif (false-fail) : fait échouer un programme correct

      Complétude des tests : Les tests ne réussissent que sur des programmes corrects

      Faux négatif (false-pass) : fait passer un programme incorrect

      Validité indispensable, complétude impossible en pratique  Toujours s'assurer que les tests sont valides

    Hafidi Imad-ENSAK-Cours QL 40

  • Processus test   1.Choisir les comportements à tester (objectifs de test)   2. Choisir des données de test permettant de déclencher ces

    comportements + décrire le résultat attendu pour ces données   3. Exécuter les cas de test sur le système + collecter les résultats   4. Comparer les résultats obtenus aux résultats attendus pour

    établir un verdict

    Hafidi Imad-ENSAK-Cours QL 41

  • Exécution d’un Test   Scénario de test :

      Préambule : Suite d'actions amenant le programme dans l'état nécessaire pour exécuter le cas de test

     Corps : Exécution des fonctions du cas de test   Identification (facultatif) : Opérations d'observation rendant

    l'oracle possible   Postambule : Suite d'actions permettant de revenir à un état

    initial

    Hafidi Imad-ENSAK-Cours QL 42

  • Exemple : Pop (supprimer le sommet d'une pile)

    Hafidi Imad-ENSAK-Cours QL 43

  • Types de test

    Hafidi Imad-ENSAK-Cours QL 44

  • Hafidi Imad-ENSAK-Cours QL 45

  • Test boite noire : Test fonctionnel   Sélection des tests à partir d'une spécification du système

    (formelle ou informelle), sans connaissance de l'implantation Possibilité de construire les tests pendant la conception, avant

    le codage

    Hafidi Imad-ENSAK-Cours QL 46

  • Ex : Distributeur de café et thé

    Hafidi Imad-ENSAK-Cours QL 47

  • Test Boite blanche : Test structurel   Sélection des tests à partir de l'analyse du code source du

    système

      Construction des tests uniquement pour du code déjà écrit

    Hafidi Imad-ENSAK-Cours QL 48

  • 40

    analysedu code

    if xthen res := yelse res := 0endif

    SUCCÈS

    res = 0

    Test boîte blanche

    x = 1, y = 0 res = 0

    sélection

    exécution

    oracle

    x

    res := y res := 0

    true false

    x AND y

    Hafidi Imad-ENSAK-Cours QL 49

  • Couverture de chaque instruction (C0)   Critère de couverture : Règle pour sélectionner les tests et

    déterminer quand les arrêter   Au pire, on peut sélectionner des cas de test au hasard jusqu'à

    ce que le critère choisi soit satisfait   Oracle : Permet de déterminer la sortie attendue associée

    aux cas sélectionnes  Difficile a mettre en place si on veut automatiser  Complètement le processus de test

    Hafidi Imad-ENSAK-Cours QL 50

  •   Selon ce critère, chaque instruction doit être exécutée avec des données de test

      Sélectionner des cas de test jusqu’a ce qu'un outil de   couverture indique que toutes les instructions du code ont

    été exécutées

    Hafidi Imad-ENSAK-Cours QL 51

  • Exemple

      Apres le quatrième test, toutes les instructions sont exécutée   Il est rare que le jeu minimal soit bon d'un point de vue

    fonctionnel

    Hafidi Imad-ENSAK-Cours QL 52

  • Boite noire VS Boite blanche   Complémentarité : détection de fautes différentes

      Boîte noire : détecte les oublis ou les erreurs par rapport à la spécification

      Boîte blanche : détecte les erreurs de programmation

      Ex : Addition d'entiers modulo 100 000

      Boîte noire : détecte l'erreur par rapport à la spécification   Boîte blanche : détecte l'erreur pour les valeurs (600,500)

    Hafidi Imad-ENSAK-Cours QL 53

  • Hafidi Imad-ENSAK-Cours QL 54

  • Cycle de vie d’un logiciel

    Hafidi Imad-ENSAK-Cours QL 55

  • Test unitaire   Test des unités de programme de façon isolée,

    indépendamment les unes des autres, c'est-à-dire sans appel à une fonction d'un autre module, à une base de données...  méthodes, classes, modules, composants

      Ex : GPS  Algorithme de calcul d'itinéraire sur des exemples de graphes

    construits à la main

    Hafidi Imad-ENSAK-Cours QL 56

  • Test d’intégration   Test de la composition des modules via leur interface

    communications entre modules, appels de procédures...   Ex : GPS

      Lecture des données depuis la base de données  Communications avec l'IHM

    Hafidi Imad-ENSAK-Cours QL 57

  • Test système   Test de la conformité du produit fini par rapport au cahier

    des charges, effectué en boîte noire au travers de son interface

      Ex : GPS  Utilisation du logiciel sur des scénarios réalistes et complets

    Hafidi Imad-ENSAK-Cours QL 58

  • Hafidi Imad-ENSAK-Cours QL 59

  • Test de conformité   But : Assurer que le système présente les fonctionnalités

    attendues par l'utilisateur   Méthode : Sélection des tests à partir de la spécification, de

    façon à contrôler que toutes les fonctionnalités spécifiées sont implantées selon leurs spécifications

      Ex : Service de paiement en ligne   Scénarios avec transaction acceptée/refusée, couverture des

    différents cas et cas d'erreur prévus

    Hafidi Imad-ENSAK-Cours QL 60

  • Test de robustesse   But : Assurer que le système supporte les utilisations

    imprévues   Méthode : Sélection des tests en dehors des comportements

    spécifiés (entrées hors domaine, utilisation incorrecte de l'interface, environnement dégradé...)

      Ex : Service de paiement en ligne   Login dépassant la taille du buffer  Coupure réseau pendant la transaction

    Hafidi Imad-ENSAK-Cours QL 61

  • Test de sécurité   But : Assurer que le système ne possède pas de vulnérabilités

    permettant une attaque de l'extérieur   Méthode : Simulation d'attaques pour découvrir les faiblesses

    du système qui permettraient de porter atteinte à son intégrité

      Ex : Service de paiement en ligne   Essayer d'utiliser les données d'un autre utilisateur   Faire passer la transaction pour terminée sans avoir payé

    Hafidi Imad-ENSAK-Cours QL 62

  • Test de performance   But : Assurer que le système garde des temps de réponse

    satisfaisants à différents niveaux de charge   Méthode : Simulation à différents niveaux de charge

    d'utilisateurs pour mesurer les temps de réponse du système, l'utilisation des ressources...

      Ex : Service de paiement en ligne   Lancer plusieurs centaines puis milliers de transactions en

    même temps

    Hafidi Imad-ENSAK-Cours QL 63

  • Un type de test transversale

    Hafidi Imad-ENSAK-Cours QL 64

  • Test de non régression   But : Assurer que les corrections et les évolutions du code

    n'ont pas introduit de nouveaux défauts   Méthode : À chaque ajout ou modification de fonctionnalité,

    rejouer les tests pour cette fonctionnalité, puis pour celles qui en dépendent, puis les tests des niveaux supérieurs   Lourd mais indispensable  Automatisable en grande partie

    Hafidi Imad-ENSAK-Cours QL 65

  • Hafidi Imad-ENSAK-Cours QL 66

    Fiabilité & SDF logiciel

  •   les problèmes lies a la maîtrise des risques et la sûreté de fonctionnement ont vu leur importance et leur retentissement considérablement augmenter.

    Hafidi Imad-ENSAK-Cours QL 67

  • Exemple   Extraits d'un article de Libération du 19 novembre 2004

    suite a la succession de pannes des réseaux informatiques français :  A la racine de toutes ces pannes, on trouve des défaillances de

    l'informatique. Il s'agit d'anomalies logicielles.  On contrôle la qualité des services ou encore la couverture des

    réseaux, mais pas la vulnérabilité des systèmes.   Si la panne survient, c'est que les operateurs rognent sur tout, y

    compris sur la fiabilité de leur système.   Le consommateur est bien en droit de réclamer aujourd'hui la

    garantie d'une fiabilité absolue. Celle-ci doit devenir un motif d'achat, donc un argument de vente impératif.

    Hafidi Imad-ENSAK-Cours QL 68

  • Terminologie générale de la sûreté de fonctionnement   Un système est un ensemble de composants en interaction

    destine a accomplir une tâche donnée. C'est le cas par exemple des systèmes de production, systèmes de transport, systèmes informatiques, etc...

      La sureté de fonctionnement (SdF, en anglais dependability) d'un système est la propriété qui permet a ses utilisateurs de placer une confiance justifiée dans le service qu'il leur délivre. On dit aussi que la SdF est la science des défaillances.

      Un système subit une défaillance quand il ne peut plus délivrer le service attendu. La panne est l‘état du système résultant d'une défaillance.

    Hafidi Imad-ENSAK-Cours QL 69

  •   La sûreté de fonctionnement comprend 5 composantes :   la fiabilité,   la disponibilité,   la maintenabilite,   la sécurité-innocuite   la sécurité-confidentialite

    Hafidi Imad-ENSAK-Cours QL 70

  •   La fiabilite (reliability) est la caractéristique du système exprimée par la probabilité qu'il délivre le service attendu dans des conditions données et pendant une durée déterminée. La fiabilité exprime l'aptitude a la continuité du service.

      La disponibilité (availability) est exprimée par la probabilité que le système délivre le service attendu dans des conditions données et a un instant donne. La disponibilité caractérise donc l'aptitude du système a fonctionner quand on a besoin de lui.

    Hafidi Imad-ENSAK-Cours QL 71

  •   La maintenabilite (maintainability) caractérise l'aptitude du système a être réparé quand il est defaillant, ou a évoluer.

      La sécurité-innocuite (safety) caractérise l'aptitude du système a ne pas encourir de défaillances catastrophiques.

      La sécurité-confidentialite (security) caractérisé l'aptitude du système a se prémunir contre les accès ou manipulations non autorisées (virus, attaques,...).

    Hafidi Imad-ENSAK-Cours QL 72

  • Hafidi Imad-ENSAK-Cours QL 73

    Maintenance & évolution du logiciel

  •   La maintenance des systèmes est de deux types :   La maintenance corrective ou réparation remet en

    fonctionnement un système après sa défaillance.   La maintenance préventive est effectuée alors que le système

    fonctionne et a pour but de retarder l'occurrence des défaillances futures.

    Hafidi Imad-ENSAK-Cours QL 74