Upload
hayfa-ben-slima
View
145
Download
5
Embed Size (px)
Citation preview
Tests et Validation du logiciel
02/2007 – 06/2007
Willy ANDRZEJAK
Présentation
Willy ANDRZEJAK – 30 ans Ingénieur Système – Adventec [email protected]
Ingénieur Cnam depuis…… Professeur depuis ….
UE GLG101 enseignée depuis…
A vous…
Consignes
Vérifier en les quittant, la propreté des salles et, le cas échéant, faire ramasser les papiers ou autres détritus,
Interdire l’introduction de toute denrée alimentaire ou boisson dans les salles de cours (seule les bouteilles d’eau sont tolérées)
Vérifier les extinctions de lumières Vérifier qu’après la fin du cours, tous les auditeurs
sont bien sortis de l’ENSAM, Respecter les horaires de fin de cours fixés à 21H30 Veiller au rangement des chaises et des tables dans
la même disposition que celle trouvée en arrivant.
Calendrier
06, 13, 20, 27 Février06, 13, 20, 27 Mars03, 10 AvrilPas de cours pendant 4 semaines15, 22, 29 Mai05, 12 Juin
Horaires : 18h30 21h30
Organisation du cours
Cours 45 h + travail personnel 15 h (rédaction d’une dossier et d’une présentation)
Cours participatif + exercices 1 ou 2 intervenants extérieurs pour présenter
leur métier Présentation de vos exposés
Sources principales de ce cours
Vos exposés
Individuel ou par groupes (2 maximum) Sujet libre (théorique, pratique) mais devant
avoir un rapport avec les tests 1 dossier bien formé (20 pages de contenu
minimum par personne) Fourniture de 1 ou 2 questions pour l’examen
avec réponse Date de fourniture des dossiers : 15 Mai 2007. 1 présentation oral 20-30 minutes par
personne
Examen
Les notes d’exposés comptent pour 1/3 de la note d’examen
Note d’exposé : 60% dossier / 40% présentation
Je vous indiquerai durant les cours, certaines questions qui pourraient être posées
Plan
Introduction au test des logiciels Définitions du test Classes de défaut Difficultés liées au tests Types de tests vs
Techniques de tests Stratégie - Généralités Tests dans le projet
Tests et cycle de vie Test Unitaires Tests d’intégration Tests de charge
Techniques de test Introduction Approche fonctionnelle Approche structurelle Comparaison des approches Efficacité des techniques de
tests
Le test ..
D’après vous…
Quelques Bugs connus
En 1996 la fusée Ariane 5 explose après 30s de vol Erreur de conversion entre données numériques! $500M en matériel + $7B en développement!
Quelques bugs connus
En 2004 une défaillance du système d’alarme d’une centrale électrique produit une coupure d’électricité aux Etats-Unis et au Canada 50M de personnes privées d'électricité $6B perdus!
En 1992 les ambulances de Londres sont dirigées par un logiciel fautif Des personnes perdent la vie…
Définition du test
Erreur, défaut, anomalieOn constate une anomalieDue à un défaut (on dit aussi une faute (!) )
du logicielDéfaut du à une erreur du programmeur
(ex. : confusion d ’un I avec un 1)
Définition du test
« Program testing can be used to show the presence of bugs, but never to show their absence! »
Edsger Wybe Dijkstra
Définition du test
Qu’est ce qu’un test réussi ?
Un test réussi n ’est pas un test qui n ’a pas trouvé de défauts, mais un test qui a effectivement trouvé un défaut (ou une anomalie)
G.J. Myers
Définition du test
Selon l’IEEE « 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 »
Définition du test
Selon Bill Hetzel « Le test est une activité destinée à déterminer si l’évaluation d’une caractéristique ou d’une aptitude d’un programme ou d’un système donne les résultats requis. »
Définition du test
Selon Glendford. J. Myers (The Art of software Testing); « Tester c’est exécuter le programme dans l’intention d’y trouver des anomalies ou des défauts »
Définition du test
« Le tests des logiciels » Edition Hermes; « Le test d’un logiciel est une activité qui fait partie du processus de développement. Il est mené selon les règles de l’assurance de la qualité et débute une fois que l’activité de programmation est terminée. Il s’intéresse aussi bien au code source qu’au comportement du logiciel. Son objectif consiste à minimiser les chances d’apparition d’une anomalie avec des moyens automatiques ou manuels qui visent à détecter aussi bien les diverses anomalies possibles que les éventuels défauts qui les provoqueraient ».
Définition du test
Est-ce que le logiciel fonctionne comme prévu ? Le test est souvent associé avec les termes vérification et
validation.
La validation est le moyen de confirmer le respect d’exigences déterminées pour une utilisation spécifique prévue. Validation : Faisons-nous le travail attendu ?
La Vérification est l’action de confirmer la satisfaction des exigences spécifiques via l’étude et la mise à disposition de preuves objectives. Vérification : Faisons-nous le travail correctement ?
IEEE Standard for software test documentation 1998
Définition du test
Finalité : fiabilité du logiciel : taux de disponibilité pour les utilisateurs
MTTR : Mean Time To Repair. Temps moyen mis pour réparer un système en panne
MTTF : Mean Time To Failure. Temps moyen que met un système à tomber en panne. C'est une sorte d'unité de mesure de la faibilité d'un système.
MTBF : Mean Time Between Failures. Temps moyen écoulé entre deux pannes, y compris le temps de réparation : MTBF = MTTF + MTTR (La francisation en « Moyenne des Temps de Bon Fonctionnement » est donc fausse). Voir aussi MTBE.
MTBE : Mean Time Between Errors. Temps moyen entre deux erreurs
Taux de disponibilité pour l’utilisateur : MTTF / MTBF
Définition du test
Tests par l’affirmation (positive testing) « Le test est une activité destinée à déterminer si
l’évaluation d’une caractéristique ou d’une aptitude d’un programme ou d’un système donne les résultats requis. »
Tests par la négation (negative testing) « Tester c’est exécuter le programme dans
l’intention d’y trouver des anomalies ou des défauts »
Définition du test
Le Bug
Tests et débuggage
Jeux de test
DT = {x = 5, y = 5, b = 58}
Jeux de test : ensemble de données de test
Scénario de test : séquence d ’actions
Oracle de test : prédiction du résultat
Définition du test
Définition de classes de d’erreurs Calcul Logique Entrée / sortie Traitement des données Interface Définition des données
Difficultés du test
Paramètres rendant le test difficile : Tests Exhaustif Processus d’introduction des défaut Difficultés d’ordre psychologique ou culturel Difficultés formelles Autres
Difficultés du test
Le test exhaustif est difficile à réaliser Exemple : un logiciel avec 5 paramètres de type byte (8
bits) admet 2^40 valeurs différentes en entrée
Le test est une méthode de vérification partielle de logiciels
La qualité du test dépend de la pertinence du choix des données de test
Difficultés du test
Processus d’introduction des défaut Manipulation de données abstraites Succession de transformations:
Idée « abstraite » et confuse du client
Spécifications Conception Code source Assemblage, ….
Perte d’informations, introduction d’erreurs, etc.
Besoin réel
Besoin perçu Besoin modélisé
Difficultés du test
Difficultés d’ordre psychologique ou culturelActivité tendant à montrer les erreurs des
programmeurs !Manque d’intérêt pour ce domaine du génie
logiciel
Difficultés du test
Difficultés formellesRésultat d’un ensemble de travaux
théoriques sur les systèmes formel : « Il ne peut exister aucun algorithme général (donc aucun outil), capable de démontrer l’exactitude totale de n’importe quel programme ».
Travaux de Kurt Gödel , A. Turing et A Church.
Difficultés du test
• Gödel : 1931 Idée de base : l ’autoréférence
Cette phrase est fausse.
- si elle est vraie, alors ce qu ’elle dit est vraie, i.e. elle est fausse- si elle est fausse, alors elle est vraie
Difficultés du test
• Puis Turing et Church...
• Il existe des algorithmes qu ’on ne peut écrire– Exemple : un algo qui, sans utiliser des
fichiers de recopie ou autres artifices, donne comme résultat d ’exécution l ’impression du texte source.
a := 1;b := 2;
Il faudrait ajouterwriteln (‘ a := 1; ’);writeln (‘ b := 2; ’);
Mais comme ces 2 instructionsappartiennent aussi au code source, ilfaut ajouter :writeln(‘ writeln (‘ ‘ a := 1; ’’););writeln (‘ writeln (‘ ‘ b := 2; ’’););
Difficultés du test
Autres difficultésTaille et complexité des programmesPerturbation / modification du
comportement normal du code par l’outillage de test
Distinction environnement de développement et environnement de production
Le temps réelL’environnement extérieur
Types de tests vs Techniques de tests
« Tests » : deux axesTypes de testsTechniques de tests
Types de tests vs Techniques de tests
Types de tests Catégories de tests effectués tout au long de la vie du
logiciel. Tests unitaires, tests d’intégration, tests système, tests
de non régression,…
Techniques de tests Techniques utilisées durant les phases de tests (types
de tests) Techniques fonctionnelles, structurelles , dynamiques,
statiques, flots de données, graphes cause-effet, …
Tests Fonctionnels – black box
Tests Structurels – white box
Plan
Introduction au test des logiciels Définitions du test Classes de défaut Difficultés liées au tests Types de tests vs
Techniques de tests Stratégie - Généralités Tests dans le projet
Tests et cycle de vie Test Unitaires Tests d’intégration Tests de charge
Techniques de test Introduction Approche fonctionnelle Approche structurelle Comparaison des approches Efficacité des techniques de
tests
Stratégie de tests
50 % ou plus des charges d’un projet
Les tests doivent être conçus avant que le logiciel soit réalisé
Conception du logiciel facilité de test. Testabilité = exigence clé
Stratégie de tests
Etapes de conception des testsGénéralistes détailléesUne stratégie de test.Une planification des tests.La conception des dossiers de test.L'élaboration d'une procédure de test.
Stratégie de tests
Une stratégie de test devrait être idéalement une grande organisation à l'image d'une organisation de développement.
Enoncé de l'approche générale du test, en identifiant Types de tests qui seront effectués pour les différentes étapes du
projet et comment ils seront effectués Définition des couvertures de tests. Choix des outils Moyens et délais à investir dans l’activité de tests (effort)
Développer une stratégie de test, qui répond efficacement aux besoins d'une organisation, est critique pour assurer le succès du développement des applications. L'application d'une stratégie de test à un projet de développement devrait être détaillée dans le plan qualité du projet.
Stratégie de tests
Rendre l’effort de test efficaceMaximiser les chances de détecter les
erreursTrouver le plus d’erreurs possiblesLe plus rapidement possibleFaciliter le diagnostique
Stratégie de tests
Critères d’arrêt des testsUne fois les jeux de tests passés avec
succès (donc pour une couverture définie au préalable)
En fonction du nombre d’erreurs trouvées, ou du temps imparti (quid des erreurs qui restent ?)
En fonction du taux marginal de détection (nombre d’erreurs trouvées par rapport au temps)
Stratégie de tests
Plan de testLes éléments à tester.L’ordre dans lequel ils doivent être testés.L’application de "la stratégie de test" au test
de chaque élément.La description de l'environnement de test.
Stratégie de tests
L'objectif de chaque plan de test est de fournir un programme pour vérifier, en testant le logiciel produit, que celui-ci satisfait les besoins ou la conception du logiciel. Dans le cas du test de recette et du test système, on fait référence à l'étude des besoins généraux.
Stratégie de tests
Définition des dossiers de test (scenario) N dossiers de tests pour chaque élément à tester de
chaque niveau de test Explique comment la mise en place d'un besoin
particulier ou d'un choix conceptuel doit être testé et quel est le critère de succès de ce test.
Nécessité de concevoir des dossiers de test « positifs » et « négatifs »
Peut permettre de trouver des problèmes de conception avant même le début des développements
Stratégie de tests
Définition des procédures de testsProcessus exact à suivre pour mener à bien
chaque dossier Le niveau de détail doit être tel que la
procédure de test est déterministe et répétable
Stratégie de tests
Documentation des résultats de testsNécessité de consigner tous les résultats
d’exécution de tests.Des comptes-rendus de test peuvent être
produits à différents moments du processus. Un compte-rendu résumera les résultats et documentera toutes les analyses
Stratégie de tests - Conclusion
Toujours tester en fonction d'une spécification.
Documenter le processus de test Tester à chaque niveau de spécification.
La détection précoce des erreurs réduira finalement les coûts.
Planifier les activités de test.
Stratégie de tests - Conclusion
Utiliser les techniques telles d’analyse statique et dynamique.
Tester positivement, mais aussi négativement
Coupler gestion des tests et gestion des corrections