Tests et Validation du logiciel – 06/2007 02/2007 Willy ANDRZEJAK

Download Report

Transcript Tests et Validation du logiciel – 06/2007 02/2007 Willy ANDRZEJAK

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évrier  06, 13, 20, 27 Mars  03, 10 Avril  Pas de cours pendant 4 semaines  15, 22, 29 Mai  05, 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, anomalie  On constate une anomalie  Due à un défaut (on dit aussi une faute (!) ) du logiciel  Dé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 validation

. et  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 = francisation en « Moyenne des Temps de Bon Fonctionnement » est donc fausse). Voir aussi MTBE . MTTF + MTTR (La 

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 Oracle de test : prédiction du résultat Scénario de test : séquence d ’actions

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 Besoin réel    Code source Assemblage, ….

Besoin perçu Besoin modélisé Perte d’informations, introduction d’erreurs, etc.

Difficultés du test

 Difficultés d’ordre psychologique ou culturel  Activité tendant à montrer les erreurs des programmeurs !

 Manque d’intérêt pour ce domaine du génie logiciel

Difficultés du test

 Difficultés formelles  Ré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 ajouter writeln (‘ a := 1; ’); writeln (‘ b := 2; ’); Mais comme ces 2 instructions appartiennent aussi au code source, il faut ajouter : writeln(‘ writeln (‘ ‘ a := 1; ’’);); writeln (‘ writeln (‘ ‘ b := 2; ’’););

Difficultés du test

 Autres difficultés  Taille et complexité des programmes  Perturbation / modification du comportement normal du code par l’outillage de test    Distinction environnement de développement et environnement de production Le temps réel L’environnement extérieur

Types de tests vs Techniques de tests

« Tests » : deux axes

 Types de tests  Techniques 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  Testabilité = exigence clé facilité de test.

Stratégie de tests

 Etapes de conception des tests  Généralistes  détaillées  Une 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 efficace  Maximiser les chances de détecter les erreurs  Trouver le plus d’erreurs possibles  Le plus rapidement possible  Faciliter le diagnostique

Stratégie de tests

 Critères d’arrêt des tests   Une 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 test  Les é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 tests  Processus 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 tests  Né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