Testes des logiciels Réalisée par: Ettalbi Ramzi Hadfi Skander 05/11/2007 test

Testes des logiciels Réalisée par: Ettalbi Ramzi Hadfi Skander 05/11/2007 test des logiciels 1 Hadfi Skander Menjli Chaouki Weslati Wassim Sommaire: Definition Classification des tests oClassification selon le niveau de détail classification selon le niveau d’accessibilité Tests unitaires(TDD) Tests d’intégrations Tests de non régression 05/11/2007 test des logiciels 2 oClassification selon la caractéristique Recapitulatif oclassification selon le niveau d’accessibilité Boîte noire Boîte blanche Tests de performance Test fonctionnel Test de robustesse Définitions  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 des différences entre les résultats attendus et ceux obtenus » 05/11/2007 test des logiciels 3 Xanthakis et al. Cycle de développement de test 05/11/2007 test des logiciels 4 Mise au point Inductive 05/11/2007 test des logiciels 5 Mise au point Déductive 05/11/2007 test des logiciels 6 Tests unitaires  Test de composants isolés. Ce test permet de démontrer que chaque module effectue toute la fonction prévue et seulement cette fonction. On peut distinguer dans ces tests unitaires : • Les tests de logique (recherche d'erreur, vérification de l'enchaînement correct des branches parcourues) 05/11/2007 test des logiciels 7 • Les tests de calcul (vérification des résultats des calculs, des performances, de l'exactitude des algorithmes).  Imaginons que nous devions écrire une classe Java qui manipule des chemins Unix écrits sous forme de chaînes de caractères, par exemple "/usr/include/stdlib.h". Cette classe doit permettre d'extraire des parties d'un chemin, d'ajouter des chemins, etc. Imaginons que la première fonctionnalité dont nous ayons besoin soit l'extraction du dernier composant du chemin. Nous écrivons les tests de cette fonctionnalité avant même d'entamer l'écriture de la classe. Exemple de test unitaire 05/11/2007 test des logiciels 8 fonctionnalité avant même d'entamer l'écriture de la classe.  Path p = new Path("/usr/include/stdlib.h"); assertEquals("stdlib.h", p.getLastComponent());  ou encore :  Path p = new Path("/"); assertEquals("", p.getLastComponent());  En écrivant ces quelques tests, nous avons implicitement commencé à définir l'interface de notre classe. Nous pouvons d'ailleurs en écrire une première version :  public class Path { public Path(String pathName) { //... } public String getLastComponent() { //... }} 05/11/2007 test des logiciels 9 Présentation de JUnit  JUnit définit trois notions principales : • Un TestCase est typiquement une classe de test. Chacune de nos classes de test dérive de cette classe, qui elle-même dérive de la classe Test. • Une TestSuite est un ensemble de tests. Elle dérive également de la classe Test et contient des instances de la classe Test (suivant le Design Pattern "Composite"), ce qui lui permet de contenir indifféremment des TestCase ou d'autres TestSuite : 05/11/2007 test des logiciels 10 qui lui permet de contenir indifféremment des TestCase ou d'autres TestSuite : •Un TestRunner permet de lancer l'exécution d'une liste de Test. TDD: Test Driven Development Définition: Le Test Driven Development (TDD) ou en Français développement piloté par les tests est une méthode de développement des logiciels qui préconise d'écrire les tests unitaires avant d'écrire le code source d'un logiciel. 05/11/2007 test des logiciels 11 d'écrire les tests unitaires avant d'écrire le code source d'un logiciel. TDD: Test Driven Development Le Cycle de TDD: Le cycle préconisé par TDD comporte cinq étapes : écrire un premier test. vérifier qu'il échoue (car le code qu'il teste n'existe pas). écrire le minimum de code suffisant pour faire passer le test. 05/11/2007 test des logiciels 12 écrire le minimum de code suffisant pour faire passer le test. vérifier que le test passe. puis refactoriser le code. TDD: Test Driven Development Intérêt: Assurer que le code produit est testable unitairement. Eviter les erreurs de conception. Augmenter la confiance en soi du programmeur. Construction conjointe du programme et d’une suite de tests de non régression. 05/11/2007 test des logiciels 13 régression. Test d’intégration Définition: Un test d'intégration est un test qui se déroule dans une phase d'un projet informatique suivant les tests unitaires. Il consiste, une fois que les développeurs ont chacun validé leurs développements ou leurs correctifs, à regrouper leurs modifications ensemble dans le cadre d'une livraison. 05/11/2007 test des logiciels 14 le cadre d'une livraison. Test d’intégration Caractéristiques: L'intégration a pour but de valider le fait que toutes les parties développées indépendamment fonctionnent bien ensemble. 05/11/2007 test des logiciels 15 L'intégration fait appel en général à un système de contrôle de versions, et éventuellement à des programmes d'installation. Pour les applications utilisant les nouvelles technologies et donc des ateliers de génie logiciel (Eclipse - Visual Studio - JBuilder - JDeveloper...), les tests d’intégration ont évolué vers de l’intégration continue. Test de non régression Définition: Les tests de non-régression ont pour but de vérifier que les évolutions apportées par une nouvelle version d'un logiciel n'altère pas les fonctionnalités préexistantes. 05/11/2007 test des logiciels 16 Test de non régression Caractéristiques: Ces tests sont fastidieux car ils doivent être le plus exhaustif possible, afin de s'assurer que le logiciel fonctionne de la même manière. 05/11/2007 test des logiciels 17 manière.  Il existe des programmes informatiques spécialisés qui permettent d'automatiser ces tests. Ces programmes appelés souvent robots de tests. Classification selon le niveau d'accessibilité Il s’agit de répartir les techniques de base en deux catégories suivant qu'elles autorisent ou non l'observation du comportement interne du composant logiciel sous tests : ►Test Fonctionnel (boite noire) ►Test structurel (boite blanche) ►Test structurel (boite blanche) Test Fonctionnel (Boite noire) Le test boîte noire (TBN) consiste à tester un composant en ne connaissant de lui que son interface, il vise à examiner le comportement fonctionnel du logiciel et sa conformité avec la spécification du logiciel Méthodes du test fonctionnel Test par classe d’équivalence et test aux limites   Test déterministe Test par classe d’équivalence et test aux limites   Test déterministe Test combinatoire –Algorithmes Pairwise Test aléatoire Génération automatique de tests à partir d’une spécification Test Fonctionnel Le test par classe d’équivalence consiste à regrouper les valeurs d’entrée qui devraient produire le même type de résultat Le test se fait alors avec un représentant de la classe d’équivalence pris au hasard Test par classe d’équivalence et Test aux limites Le test au limite complète le test par classe d’équivalence en préférant choisir un représentant de la classe à ses limites (quand cela à un sens) Test Fonctionnel Tester un fragment des combinaisons de valeurs qui garantissent que chaque combinaison de 2 variables est testé Exemple : 4 variables avec 3 valeurs possibles chacune Test combinatoire : approche Pairwise V1 V2 V3 V4 a b c d Les paires (v1, v2) (v1, v3) (v1, v4) (v2, v3) (v2, v4) (v3, v4) Les combinaisons : 6*9=72 Le nombre de tests augmente très vite dans l’approche de Pairwise avec les triplets , les quadruplets, etc… a b c d e f g h i j k l Test Fonctionnel Principe du test aléatoire Utilisation d’une fonction de calcul pour sélectionner les DT Fonction aléatoire : choix aléatoire dans le domaine de la donnée d’entrée ou utilisation d’une loi statistique sur le domaine Test aléatoire ou statistique Test Fonctionnel : Model-Based Testing Génération automatique de tests à partir d’une spécification: •Modéliser pour tester (SDL language,UML,B…) : Choix de notation •Stratégies de génération: Classes d’équivalence et test aux bornes… •Sélection des tests (Focaliser la génération sur certains comportements) •Sélection des tests (Focaliser la génération sur certains comportements) •Génération de cas de test (GOAL language) Test « Boite blanche » Ce test consiste à analyser la structure interne du programme en déterminant les chemins minimaux afin d'assurer que: ►Toutes les conditions d'arrêt de boucle ont été vérifiées. ►Toutes les branches d'une instruction conditionnelle ont été testés. ►Les structures de donne interne ont été testées (pour assurer la validité). validité). Le test structurel ou boite blanche peut être soit statique ou dynamique Test structurel Le test statique est appliqué sur une description du programme ou directement sur le texte du programme mais sans exécuter ce dernier Estimation de la complexité Statistiquement, la complexité d’un programme est corrélée avec le Test structurel statique : pas d’exécution réelle Statistiquement, la complexité d’un programme est corrélée avec le nombre de ses défauts (complexité cyclomatique …) MacCabe propose de refaire le codage de tout programme dont la complexité cyclomatique est supérieur à 10 en exceptant les programmes où ils ont beaucoup d’instruction de branchement Graphe du flot de contrôle (GFC) Test structurel dynamique Selon la caractéristique  test fonctionnel : vérifie que le programme est conforme aux spécifications Selon la caractéristique  Méthodes du test fonctionnel –Test déterministe Analyse partitionnelle des domaines des données d’entrée et test aux limites –Test combinatoire –Algorithmes Pairwise –Test combinatoire –Algorithmes Pairwise –Test aléatoire –Génération automatique de tests à partir d’une spécification Selon la caractéristique  Automatisation des tests fonctionnels  lorsque des applications doivent fonctionner sur plusieurs plates-formes, la charge des tests manuels croît proportionnellement en multipliant les risques croît proportionnellement en multipliant les risques d’erreurs humaines et d’incohérences susceptibles d’altérer les résultats finaux. Selon la caractéristique  L’automatisation du processus de test optimise la qualité logicielle et uploads/Management/ expose-tests-logiciel.pdf

  • 16
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jui 08, 2022
  • Catégorie Management
  • Langue French
  • Taille du fichier 1.2413MB