Tests Logiciels - INF4000 - Génie Logiciel - PDF

Document Details

EnchantingSugilite8424

Uploaded by EnchantingSugilite8424

Aminata Zerbo/Sabane

Tags

logiciel tests tests logiciels conception logiciel validation logiciel

Summary

These slides provide an introduction to software testing. Topics include the importance of software testing, software test types, and tools. A few major famous software failures are quoted in the presentation.

Full Transcript

INF4000 Génie Logiciel Tests Logiciels A M I NA TA ZERBO/SA BA NE Tests Logiciels INF4000-GL (UO1/SEA/DI/SITR) 2 Dr. A. SABANE Plan üIntroduction üTests Boite Noire üTests Structurels 3...

INF4000 Génie Logiciel Tests Logiciels A M I NA TA ZERBO/SA BA NE Tests Logiciels INF4000-GL (UO1/SEA/DI/SITR) 2 Dr. A. SABANE Plan üIntroduction üTests Boite Noire üTests Structurels 3 3 Tests Logiciels : Introduction 4 4 Plan üDéfinitions, Importance et Réalités üClassification des Tests ü Pratiques du Test Logiciel üTest du Triangle 5 5 Tests Logiciels Définitions, Importance et Réalités Test Logiciel « 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. » IEEE « Tester, c'est exécuter le programme dans l'intention d'y trouver des anomalies ou des défauts. » G. Myers The Art of Software testing 7 7 Validation et Vérification (V & V) Vérification Est-ce que le logiciel est conforme aux spécifications? Are we building the product right? Construisons nous le produit correctement? 8 8 Validation et Vérification (V & V) Validation Est-ce que le logiciel réalise les fonctions attendues ? Are we building the right product? Construisons nous le bon produit? 9 9 Techniques de V&V Test statique : Relecture (revue) du code, des spécifications, des documents de conception par une personne autre que le développeur Test dynamique : exécuter le code pour s'assurer de son bon fonctionnement 10 10 Techniques de V&V Vérification symbolique (exécution symbolique) : explorer les chemins d'exécution possibles d'un programme afin de détecter des bugs ou prouver certaines propriétés du programme Vérification formelle : preuve ou model-checking d'un modèle formel du programme 11 11 Importance des Tests Logiciels Un bug coûte très cher Pertes financières mais aussi pertes en vies humaines dans certaines situations Les bugs sont inhérents au développement logiciel Développeur expérimenté : 1 faute / 10 lignes de code 163 fautes / 1000 instructions [B. Beizer Software Testing Techniques 1990] 12 12 Importance des Tests Logiciels Exemples d’échecs majeurs Therac-25 : la machine de thérapie par radiation et rayons X a tué plusieurs patients. Cause : Les entrées non standards n’ont pas été testées Mission de la NASA vers Mars : vaisseau spatial Mars Climate Orbiter orbiteur climatique s’est écrasé (1999) Cause : une conversion incorrecte du système impérial au système métrique 13 13 Importance des Tests Logiciels Exemples d’échecs majeurs Panne du réseau téléphonique de Bouygues Telecom : Ça a duré 24 heures (17/11/2004) et les pertes ont été évaluées à 20 millions d'euros. Cause : infrastructure de Bouygues incompatible avec un algorithme largement utilisé dans l'industrie 14 14 Importance des Tests Logiciels Exemples d’échecs majeurs Ariane 5 en 1996 : le vaisseau spatial a été détruit. Cause : mauvaises spécifications, mauvais test d’utilisation et mauvaise gestion d’exceptions (Integer Overflow - Unit Testing). Pertes évaluées à environ 3 milliards de francs (457 millions d'euro). 15 15 Importance des Tests Logiciels Source : Échec d’ARIANE 5 Vol 501, Reportage par la revue Inquiry Board Un segment de programme pour convertir un nombre en virgule flottante en un nombre entier de 16 bits a été exécuté avec une valeur en dehors de la zone représentée par un nombre entier signé de 16 bit. Cette erreur de débordement (overflow) a causé l’extension des deux ordinateurs. Ceci a résulté en la perte totale de contrôle d’altitude. Ariane 5 a tourné incontrôlablement et des forces aérodynamiques ont pulvérisé le véhicule en morceaux. Cette détérioration a été détectée par un moniteur à bord qui a déclenché les charges explosives qui ont détruit le véhicule dans les airs. Ironiquement, le résultat de cette conversion de format n’était plus nécessaire après le décollage. 16 16 Réalités des Tests Logiciels Le test est une activité du contrôle qualité Il est indépendant du développement Ce que le test est : oexécuter le programme oconnaître les résultats attendus (notion d'oracle) oon échoue lorsqu'on ne trouve aucune erreur 17 17 Réalités des Tests Logiciels Le test est une activité du contrôle qualité Il est indépendant du développement Ce que le test n'est pas : o donner des explication sur une erreur oValider le logiciel (aucune erreur détectée ne signifie pas que le programme soit correct) 18 18 Réalités des Tests Logiciels “Le test peut révéler la présence des erreurs mais jamais leur absence ’’– E. W. Dijkstra Le test est un processus destructif contrairement à l’activité de programmation : un bon test est un test qui trouve une erreur Les erreurs peuvent être dues à des incompréhensions de spécifications ou des mauvais choix d’implémentation 19 19 Réalités des Tests Logiciels Les tests sont très coûteux : Jusqu’à 50% du coût total de développement du logiciels On ne peut pas tout tester : l’ensemble des données d’entrée est en général infini ou très grand de même que l’ensemble des chemins possibles ◦ Sélection des cas de tests ◦ notion de critères de (sélection de) test 20 20 Chaine de l’Erreur 21 21 Chaine de l’Erreur Erreur : Les personnes commettent des erreurs Défaut : Un défaut est le résultat d’une erreur dans la documentation d’un logiciel, dans le code, etc. Défaillance : Une défaillance se produit quand un défaut est exécuté Panne : Conséquence d’une défaillance – La circonstance de la défaillance peut ou ne pas être apparente à l’utilisateur 22 22 Quelques Définitions Test : Exécuter le logiciel avec des cas de test pour trouver les fautes ou augmenter sa confiance dans le système Jeu de test : Ensemble de données et une liste des résultats attendus (quelques fois omise). Oracle : résultats attendus d’une exécution du logiciel (5 est l’oracle de add(3,2)) 23 23 Processus du Test Dynamique 24 24 Problème de l’Oracle Comment vérifier les sorties calculées ? En théorie : oPar prédiction du résultat attendu oA l’aide d’une formule issue de la spécification oA l’aide d’un autre programme En pratique : oPrédictions approximatives (à cause des calculs flottants,…) oFormules inconnues (car programme = formule) oOracle contenant des fautes 25 25 Cycle de Vie des Tests 26 26 Qualités du Test Logiciel o Efficace pour découvrir des fautes o Aide à localiser les fautes à déboguer o Répétable de telle façon qu’une compréhension précise de la faute peut être déduite o Automatisé afin de réduire le coût et la durée o Systématique afin qu’il soit prédictible 27 27 Test Logiciel en Pratique L’activité de test est souvent perçue comme un travail ingrat mais elle est en réalité essentielle à la qualité du logiciel et permet d’éviter des pertes énormes. Pour développer un test efficace, le testeur devrait avoir : o La compréhension détaillée du système ; o Les connaissances des techniques de test ; o Les compétences d’appliquer ces techniques d’une manière efficace. 28 28 Test Logiciel en Pratique Le test est plus efficace lorsqu’il est effectué par des testeurs indépendants o Le programmeur reste souvent fidèle à l’ensemble des données qui fait fonctionner le programme. o Souvent, un programme ne fonctionne pas quand il est exécuté par quelqu’un d’autre 29 29 Tests Logiciels Classification des Tests Familles de Tests Tests structurels (boîte blanche ou de verre) Tests basés sur la structure interne du code Les données de tests sont produites après une analyse de code (elle est soumise à différents critères de test) ◦ Détectent principalement les erreurs commises ◦ Nécessitent la connaissance du code 31 31 Familles de Tests Exemples de Tests structurels ◦ Couverture de code basée sur le flot de contrôle (toutes les instructions, toutes les branches, tous les chemins, …) ◦ Couverture de code basée sur le flot des données (toutes les définitions de variable, toutes les utilisations, …) ◦ Couverture de code basée sur les fautes (test par mutants) 32 32 Familles de Tests Test structurel flot des données 33 33 Familles de Tests Tests fonctionnels (boîte noire) Tests basés sur la spécification du logiciel Permettent de tester la conformité du logiciel à la spécification Ces tests détectent principalement les erreurs d'omission de spécification 34 34 Familles de Tests Exemples de Tests fonctionnels ◦ Test combinatoire : Test des combinaisons possibles des valeurs d’entrée d’une sous partie du domaine des entrées ◦ Partition des domaines : diviser le domaine des entrées en un nombre fini de classes tel que le programme ait un comportement identique pour toutes valeurs d’une classe ◦ Test aux limites : tester les valeurs aux limites des domaines ou des classes d’équivalence. 35 35 Familles de Tests Les familles de tests sont complémentaires et doivent être utilisées simultanément 36 36 Niveaux de Test 37 37 Niveaux de Test Tests unitaires Test de procédures, de modules, de composants Validation d’un module indépendamment des autres Valider intensivement les fonctions unitaires Les unités sont-elles suffisamment spécifiées? Le code est-il lisible, maintenable…? 38 38 Niveaux de Test Tests Unitaires Test de procédures, de modules, de composants Qu’est ce qu’une unité? Programmation Procédurale Programmation orientée objet Procédure Classe 39 39 Niveaux de Test Tests d’intégration Test des interfaces entre modules Choisir un ordre pour intégrer et tester les différents modules du système è affecte le coût o Intégration du Big Bang o Intégration ascendante (de bas en haut ) o Intégration descendante (de haut en bas) o Intégration Sandwich Définir la hiérarchie des modules en se basant sur les dépendances entre les modules 40 40 Niveaux de Test Tests d’intégration Hiérarchie de modules Cas complexes Cas simples Il y a des cycle dans les il n’y a pas de cycle dans les dépendances entre modules dépendances entre modules Fréquents dans les systèmes OO Intégration facile de bas en Nécessitent des heuristiques haut 41 41 Niveaux de Test Tests de conformité ou test système Validation de l’adéquation du logiciel aux spécifications Valider la globalité du système Les fonctions offertes A partir de l’interface 42 42 Niveaux de Test Etapes et Hiérarchisation des Tests 43 43 Niveaux de Test Tests de non-régression Vérifient que les corrections ou évolutions dans le code n’ont pas créé de nouvelles anomalies Vérifier que ce qui marchait marche encore Quand? Dans la phase de maintenance du logiciel - Après un refactoring, un ajout/suppression de fonctionnalités - Après la correction d’une faute 44 44 Test de Caractéristiques Tests Fonctionnels : Examine le comportement fonctionnel du logiciel et sa conformité avec la spécification du logiciel - Les cas de test correspondent à des données d’entrée valide => Test-to-pass Tests de robustesse : Analyse le système dans le cas de sollicitations proches ou hors des limites - Les cas de test correspondent à des données d’entrée invalide => Test-to-fail Les tests nominaux sont passés avant les tests de robustesse 45 45 Test de Caractéristiques Tests de performance : évaluent la capacité du programme à fonctionner correctement vis-à-vis des critères de flux de données et de temps d'exécution –Load testing (test avec montée en charge) –Stress testing (soumis à des demandes de ressources anormales – simulation de l'activité maximale attendue) Autres caractéristiques : Ergonomie, sûreté, sécurité, … 46 46 Classification des Tests 47 47 Pratiques du Test Logiciel Test et Méthodes Agiles Test driven development 1. Développer les tests en premier 2. Développer le code Correspondant 3. Refactoriser Utilisation des outils d’automatisation 49 49 Test et Méthodes Agiles 50 50 Automatisation des Tests L’automatisation des activités de test permet de réduire le coût des tests Outils d’automatisation Aide à l’exécution des tests (Mercury Winrunner, IBM Rational Robot, Segue Silktest) Génération de tests fonctionnels (Leirios Test Generator, T-Vec, Reactis, Conformiq) Génération de tests structurels (IPL Cantata ++, Parasoft CodeWizard) 51 51 Automatisation des Tests Outils d’automatisation Gestion des campagnes de tests (IBM Rational Test Manager, Segue SilkplanPro) Test de performance (Empirixe-Load, Mercury LoadRunner) Plus sur www.stickminds.com 52 52 Test du Triangle Test du Triangle Spécification Un programme prend en entrée trois entiers. Ces trois entiers sont interprétés comme représentant les longueurs des cotés d’un triangle. Le programme rend un résultat précisant s’il s’agit d’un triangle quelconque, isocèle ou équilatéral. Produire une suite de cas de tests pour ce programme 54 54 Références Références Ce cours est basé sur le cours Méthodes de test et validation du Logiciel du Pr. Antoniol Giuliano de l’Ecole Polytechnique de Montréal INF4000-GL (UO1/SEA/DI/SITR) 56 A. Z. SABANE

Use Quizgecko on...
Browser
Browser