PRÉSENTATION AGL LES TESTS LOGICIELS LES TEST LOGICIELS 1 Mickael BETTINELLI Brandon OZIOL Gaétan PHILIPPE Simon LUAIRE
SOMMAIRE Introduction Différents types de tests Les principes Les niveaux de test Le test unitaire Le TTD Conclusion Sources LES TEST LOGICIELS 2
INTRODUCTION Un logiciel : plusieurs programmes et librairies interface documentation répond aux besoins exprimés par le client. LES TEST LOGICIELS 3
INTRODUCTION Tester un logiciel : Analyser et exécuter le programme dans le but de trouver des erreurs ou des défauts. Un test logiciel permet aussi de vérifier s'il répond aux exigences du client. LES TEST LOGICIELS 4
INTRODUCTION Pourquoi vérifier et valider ? Pour éviter les bugs coût économique, humain, environnemental pour l’utilisateur coût de la correction des bugs pour le fournisseur Pour assurer la qualité Capacité fonctionnelle Facilité d'utilisation Fiabilité Performance Maintenabilité Portabilité LES TEST LOGICIELS 5
DIFFÉRENTS TYPES DE TESTS les test fonctionnels : vérifier si le logiciel est conforme à sa spécification (qualité et performances attendues) les tests structurels : détecter toutes les erreurs d'implémentations ainsi que les fonctions non prévues. LES TEST LOGICIELS 6
PRINCIPES Principe n°1 : Un programmeur ne doit pas tester ses propres programmes. Principe n°2 : Ne pas faire les tests en pensant qu'aucune erreur ne sera trouvée (Un programme de test doit retourné par défaut une erreur). Principe n°3 : Il faut chercher à connaitre les résultats attendus avant l'exécution du programme. LES TEST LOGICIELS 7
PRINCIPES Principe n°4 : Il faut vérifier attentivement les résultats de chaque test ainsi que leur pertinence. Principe n°5 : Il faut aussi bien tester avec des programmes de tests valides ou invalides. Principe n°6 : Vérifier ce que fait le programme lorsqu'il n'est pas censé le faire. LES TEST LOGICIELS 8
LES NIVEAUX DE TEST Tests unitaires(ou test de composant): s'assurer que les composants logiciels pris individuellement sont conformes à leurs spécifications et prêts à être regroupés. Tests d'intégration: s'assurer que les interfaces des composants sont cohérentes entre elles et que le résultat de leur intégration permet de réaliser les fonctionnalités prévues. LES TEST LOGICIELS 9
LES NIVEAUX DE TEST Tests de validation: s'assurer que le système complet, matériel et logiciel, correspond bien à la définition des besoins tels qu'ils avaient été exprimés. Tests de non-régression: vérifier que la correction des erreurs n'a pas affecté les parties déjà testées. [Cela consiste à systématiquement repasser les tests déjà exécutés LES TEST LOGICIELS 10
LES NIVEAUX DE TEST 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 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... LES TEST LOGICIELS 11
LES NIVEAUX DE TEST 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é 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é...) LES TEST LOGICIELS 12
LE TEST UNITAIRE PRINCIPE Un test unitaire permet de vérifier qu'une unité partie du code ne contienne pas d'erreur. Il faut donc bien "isoler" la partie (classe) testée.
De nombreux framework dans chaque langage : -Java : Junit -C++ : Cunit, cppUnit,... -Python : Unittest,
LE TEST UNITAIRE Avantages : - Gain de temps sur l'ensemble du projet final - La reprise du code par une autre personne est plus facile - Le code final est plus efficace Inconvénients : - Impression de perdre du temps car beaucoup de test - Demande beaucoup de pratique pour des tests efficaces
LE TEST UNITAIRE static void Main(string[] args) { int a = 1; int b = 2; int resultat = Addition(a, b); if (resultat != 3) Console.WriteLine("Le test a raté"); a = 0; b = 0; resultat = Addition(a, b); if (resultat != 0) Console.WriteLine("Le test a raté"); a = -5; b = 5; resultat = Addition(a, b); if (resultat != 0) Console.WriteLine("Le test a raté"); }
TDD TDD = Test Driven Development => Développement piloté par les tests Technique de développement de logiciel qui préconise d'écrire les tests unitaires avant d'écrire le code source d'un logiciel.
TDD Méthode « traditionnelle » : Méthode « TDD » : Ajouter du code Ajouter un test qui teste le code Ajouter un code de test Ajouter du code qui respecte le test
TDD Cycle : Ecrire un premier test Vérifier qu’il échoue Ecrire le code suffisant pour passer le test Vérifier que le test passe Refactoriser le code
SOURCES diderot.fr/~eleph/Enseignement/ /CoursTests.pdf diderot.fr/~eleph/Enseignement/ /CoursTests.pdf pequan.lip6.fr/~vmm/fr/Enseignement/DESS/Test/Cours/C1.pd f pequan.lip6.fr/~vmm/fr/Enseignement/DESS/Test/Cours/C1.pd f Logiciel-TAGL.pdf Logiciel-TAGL.pdf LES TEST LOGICIELS 20