Cours 1 : Introduction au test du logiciel - spiral - LIP6

78 downloads 355 Views 122KB Size Report
1 févr. 2007 ... Cours 1 : Introduction au test du logiciel. Philippe Ayrault. 1 Présentation du cours. – 1 Cours sur l'organisation des tests. – Qu'est-ce que le test ...
Cours 1 : Introduction au test du logiciel Philippe Ayrault

1

Pr´esentation du cours – 1 Cours sur l’organisation des tests. – Qu’est-ce que le test d’un logiciel ? – Les diff´erentes e´ tapes du test des logiciels – Les diff´erents documents pour le test des logiciels et leurs contenus – 1 Cours / 2 ED sur les tests structurels – D´eterminer les jeux de tests pour les principaux types de couverture de tests structurels – 1 Cours / 1 ED sur les tests fonctionnels – D´eterminer les jeux de tests pour les principaux types de couverture de tests fonctionnels – 0,5 ED sur les autres types de tests – Mont´e-Carlo, injection de fautes, ... – Panorama des autres techniques de test des logiciels. – 0,5 Cours sur les dossiers de tests

Cours et TD donn´es conjointement par Val´erie Menissier Morain (LIP6) / Philippe Ayrault (exSurlog, Alcatel, Etersafe).

2

Introduction aux tests du logiciel

2.1

Qu’est-ce qu’un logiciel ?

– des documents de gestion de projet – une sp´ecification d´ecrivant : – la liste des fonctions a` remplir par le logiciel – les facteurs qualit´e du logiciel : sa portabilit´e, son e´ volutivit´e, sa robustesse, . . . – les contraintes : performances temporelles et spatiales, . . . – les interfaces avec son environnement – une conception d´ecrivant : – la d´ecoupe de la sp´ecification en modules (ou objets) – la description les interfaces entre ces modules (ou objets) – la description des algorithmes mis en place – un code source – un ex´ecutable 1

Module Test

2.2

page 2/4

Qu’est-ce que tester un logiciel ?

Question 1 : Qu’est-ce que c¸a veux dire que ”tester un logiciel” ? Je vous donne un logiciel. Testez le. Comment faites-vous ? V´erifier qu’il est conforme, par rapport a` quoi ? Suivant quels crit`eres ? Tentative de d´efinition « Processus d’ex´ecution d’un programme avec l’intention de d´etecter des anomalies dans le but de le valider. » Question 2 : Y a-t-il plusieurs types de tests ? Essentiellement deux types de tests : – tests fonctionnels : v´erifier que le logiciel respecte sa sp´ecification (correction, facteurs qualit´e sp´ecifi´es, les performances, interfaces avec les e´ quipements externes, . . .). – tests structurels : le but est de d´etecter les fautes d’impl´ementation. Par cons´equent, de v´erifier que le logiciel n’en fait pas plus que sa sp´ecification et qu’il n’existe pas de cas de plantage (overflow, non initialisation, . . .) En fait,

Fonctions spécifiées pour le logiciel

Fonctions codées dans le logiciel

Question 3 : Y a-t-il une alternative aux tests ? Malheureusement non, c’est la seule activit´e de v´erification dynamique du logiciel. – m´ethodes formelles : il reste le probl`eme de l’ad´equation entre le mod`ele formel et la r´ealit´e. – relecture de code : elle permet de d´etecter les principales erreurs statiques dans le code mais pas les erreurs dynamiques – analyses de s´ecurit´e : elles permettent de valider une architecture mais pas de la v´erifier. Question 4 : Quel est le coˆut du test d’un logiciel ? Le test repr´esente de 30 a` 40% des coˆuts de d´eveloppement d’un logiciel suivant son niveau de criticit´e. Il repr´esente g´en´eralement 1/3 dans le planning. Conclusions : Le test des logiciels est un m´etier a` part enti`ere. Dans l’industrie, c’est la seule activit´e dans le cycle de d´eveloppement o`u l’on peut voir toutes les fonctionnalit´es d’un produit logiciel. Contrairement au d´eveloppement, o`u les d´eveloppeurs sont tr`es compartiment´es (sp´ecialiste IHM, r´eseaux, algorithmie,. . .). Le test est une activit´e cr´eatrice : imaginer des sc´enarios plausibles pouvant mettre un logiciel en d´efaut imaginer et construire des bancs de tests permettant de v´erifier les fonctionnalit´es et les contraintes,. . . N´ecessit´e d’avoir plusieurs comp´etences : automatisme, e´ lectronique, r´eseau, . . . Exemple : Vous devez tester le logiciel d’acquisition de la vitesse d’un train utilisant un capteur odom´etrique, comment tester ce logiciel ? – prendre le v´eritable capteur tachym´etrique et le monter sur un moteur que l’on peut piloter a` plusieurs vitesse – simuler le ou les signaux du capteur avec une carte e´ lectronique ou un autre logiciel c

2005/2006 (by UPMC/LMD/UE Test)

1er f´evrier 2007

Module Test

page 3/4

– ... Malheureusement, le test a mauvaise r´eputation, voici les principaux griefs : – les testeurs sont les derniers dans la chaˆıne de d´eveloppement du logiciel, il accumule donc tous les retards pris par les phases pr´ec´edentes – les testeurs d´ecouvrent des anomalies, par cons´equent c’est de leur faute si le projet est en retard – le complexe du d´eveloppeur : je suis un bon d´eveloppeur, donc mes logiciels sont sans bug (soit dit en passant,”les bugs n’existent pas, il y a seulement que des caract´eristiques non document´ees”) La n´ecessit´e de tester un logiciel de fac¸on syst´ematique n’est pas encore admise partout. Elle est admise pour les logiciels sˆurs de fonctionnement car les activit´es de v´erification et de validation (V&V) sont d´ecrites de fac¸on tr`es d´etaill´ee dans les r´ef´erentiels normatifs. De plus, un logiciel sˆur ne pourra pas eˆ tre mis en service si la d´emonstration de sa s´ecurit´e n’a pas e´ t´e effectu´ee g´en´eralement par une personne ou une soci´et´e ind´ependante du d´eveloppeur.

2.3

Quelques principes de base

Pr´esentation de quelques principes de base pour r´ealiser des tests. Principe 1 : Un programmeur ne doit pas tester ses propres programmes. Tout simplement pour ne pas eˆ tre juge et partie. Principe 2 : Ne pas effectuer des tests avec l’hypoth`ese de base qu’aucune erreur ne va eˆ tre trouv´ee. Principe 3 : La d´efinition des sortie ou r´esultats attendus doit eˆ tre effectu´ee avant l’ex´ecution d’un test. Ceci est une erreur fr´equente du test. Ce n’est pas lorsque l’on effectue le test d’une proc´edure qu’il faut se poser la question de la validit´e des r´esultats, car il y a des chances non n´egligeable de prendre un r´esultat erron´e mais semblant coh´erent pour un r´esultat correct. Principe 4 : Inspecter minutieusement les r´esultats (trace) de chaque test. Pour une raison similaire au principe 2, il faut s´eparer l’ex´ecution (action) et l’analyse des r´esultats. Principe 5 : Les jeux de tests doivent eˆ tre e´ crits pour des entr´ees invalides ou incoh´erentes aussi bien que pour des entr´ees valides. Simplement afin de d´ecouvrir les anomalies. Principe 6 : V´erifier un logiciel pour d´etecter qu’il ne r´ealise pas ce qu’il est suppos´e faire n’est que la moiti´e du travail. Il faut aussi v´erifier ce que fait le programme lorsqu’il n’est pas suppos´e le faire. Afin d’´evaluer la robustesse du logiciel.

3

Les diff´erentes e´ tapes du test des logiciels

Le test ne commence pas apr`es que le logiciel soit d´evelopp´e. Il commence d`es la phase de sp´ecification d’un logiciel et se d´eroule durant chaque phase du cycle de d´eveloppement. – Plan Qualit´e du Logiciel – l’organisation mise en place – les responsabilit´es et les interfaces des personnes intervenant dans le processus de test c

2005/2006 (by UPMC/LMD/UE Test)

1er f´evrier 2007

Module Test

page 4/4

– les objectifs de tests fixer pour chaque niveaux de tests du logiciel : z – Tests Unitaires (TU) – Tests d’Int´egration (TI) – Tests de Validation (TV). – Pour chaque phase de d´efinition du logiciel (sp´ecification, architecture, conception d´etaill´ee) : a` partir du document de d´efinition ; Dossier de Sp´ecification du Logiciel(DSL), Dossier de Conception Pr´eliminaire (DCP), Dossier de Conception D´etaill´ee (DCD), le testeur doit e´ crire dans les plans de tests correspondant (resp. Plan de Tests de Validation (PTV), Plan de Tests D’Int´egration (PTI), Plan de Tests Unitaires (PTU)). Ces plans doivent : zzz – D´efinir les moyens a` mettre en place pour tester le logiciel – D´ecrire la strat´egie de tests a` mettre en place pour tester la premi`ere version, tester les versions suivantes, crit`eres d’arrˆet des tests – D´ecrire les fiches de tests (d´etecter des incoh´erences et des incompl´etudes des documents). Une fiche de tests est constitu´ee : – des valeurs a` positionner a` l’entr´ee du test ou les actions a` effectuer – des valeurs de sortie attendues ou la description du comportement du logiciel – d´emontrer la couverture atteintes (trac¸abilit´e) – Pour chaque phase de test(TU, TI, TV), le testeur doit e´ laborer le rapport de tests : – ex´ecuter les fiches de tests sp´ecifi´ees (consiste a` positionner les valeur d’entr´ees ou a` effectuer les actions d´ecrites dans la fiche de tests) – analyser les r´esultats obtenus (comparer les r´esultats attendus avec les r´esultats obtenus et d´ecider du status du tests OK / KO) – e´ mettre des fiches de non conformit´e si n´ecessaire – Qualification – e´ mettre un avis sur le logiciel

c

2005/2006 (by UPMC/LMD/UE Test)

1er f´evrier 2007