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

Tests Et Validation Du Logiciel COURS 1

Embed Size (px)

Citation preview

Page 1: Tests Et Validation Du Logiciel COURS 1

Tests et Validation du logiciel

02/2007 – 06/2007

Willy ANDRZEJAK

Page 2: Tests Et Validation Du Logiciel COURS 1

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…

Page 3: Tests Et Validation Du Logiciel COURS 1

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.

Page 4: Tests Et Validation Du Logiciel COURS 1

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

Page 5: Tests Et Validation Du Logiciel COURS 1

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

Page 6: Tests Et Validation Du Logiciel COURS 1

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

Page 7: Tests Et Validation Du Logiciel COURS 1

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

Page 8: Tests Et Validation Du Logiciel COURS 1

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

Page 9: Tests Et Validation Du Logiciel COURS 1

Le test ..

D’après vous…

Page 10: Tests Et Validation Du Logiciel COURS 1

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!

Page 11: Tests Et Validation Du Logiciel COURS 1

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…

Page 12: Tests Et Validation Du Logiciel COURS 1

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)

Page 13: Tests Et Validation Du Logiciel COURS 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

Page 14: Tests Et Validation Du Logiciel COURS 1

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

Page 15: Tests Et Validation Du Logiciel COURS 1

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 »

Page 16: Tests Et Validation Du Logiciel COURS 1

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. »

Page 17: Tests Et Validation Du Logiciel COURS 1

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 »

Page 18: Tests Et Validation Du Logiciel COURS 1

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 ».

Page 19: Tests Et Validation Du Logiciel COURS 1

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

Page 20: Tests Et Validation Du Logiciel COURS 1

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

Page 21: Tests Et Validation Du Logiciel COURS 1

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 »

Page 22: Tests Et Validation Du Logiciel COURS 1

Définition du test

Le Bug

Tests et débuggage

Page 23: Tests Et Validation Du Logiciel COURS 1

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

Page 24: Tests Et Validation Du Logiciel COURS 1

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

Page 25: Tests Et Validation Du Logiciel COURS 1

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

Page 26: Tests Et Validation Du Logiciel COURS 1

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

Page 27: Tests Et Validation Du Logiciel COURS 1

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é

Page 28: Tests Et Validation Du Logiciel COURS 1

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

Page 29: Tests Et Validation Du Logiciel COURS 1

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.

Page 30: Tests Et Validation Du Logiciel COURS 1

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

Page 31: Tests Et Validation Du Logiciel COURS 1

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;  ’’););

Page 32: Tests Et Validation Du Logiciel COURS 1

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

Page 33: Tests Et Validation Du Logiciel COURS 1

Types de tests vs Techniques de tests

« Tests » : deux axesTypes de testsTechniques de tests

Page 34: Tests Et Validation Du Logiciel COURS 1

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, …

Page 35: Tests Et Validation Du Logiciel COURS 1

Tests Fonctionnels – black box

Page 36: Tests Et Validation Du Logiciel COURS 1

Tests Structurels – white box

Page 37: Tests Et Validation Du Logiciel COURS 1

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

Page 38: Tests Et Validation Du Logiciel COURS 1

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é

Page 39: Tests Et Validation Du Logiciel COURS 1

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.

Page 40: Tests Et Validation Du Logiciel COURS 1

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.

Page 41: Tests Et Validation Du Logiciel COURS 1

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

Page 42: Tests Et Validation Du Logiciel COURS 1

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)

Page 43: Tests Et Validation Du Logiciel COURS 1

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.

Page 44: Tests Et Validation Du Logiciel COURS 1

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.

Page 45: Tests Et Validation Du Logiciel COURS 1

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

Page 46: Tests Et Validation Du Logiciel COURS 1

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

Page 47: Tests Et Validation Du Logiciel COURS 1

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

Page 48: Tests Et Validation Du Logiciel COURS 1

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.

Page 49: Tests Et Validation Du Logiciel COURS 1

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