0% ont trouvé ce document utile (0 vote)
5 vues54 pages

Assurance qualité et tests logiciels

Le document traite des tests de logiciel, en abordant des concepts clés tels que la vérification, la validation, et les missions de l'assurance qualité. Il souligne les problèmes fréquents dans le développement logiciel, notamment les retards et la qualité insatisfaisante, ainsi que les conséquences financières des défauts logiciels. Enfin, il présente les différentes approches de test, y compris les tests boîte noire et les stratégies de conception pour maximiser l'efficacité des tests.

Transféré par

karimhamad80
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues54 pages

Assurance qualité et tests logiciels

Le document traite des tests de logiciel, en abordant des concepts clés tels que la vérification, la validation, et les missions de l'assurance qualité. Il souligne les problèmes fréquents dans le développement logiciel, notamment les retards et la qualité insatisfaisante, ainsi que les conséquences financières des défauts logiciels. Enfin, il présente les différentes approches de test, y compris les tests boîte noire et les stratégies de conception pour maximiser l'efficacité des tests.

Transféré par

karimhamad80
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Tests de logiciel

Introduction
Généralités, Problèmes, Contexte

Matériel Principal: LOG240 (Alain April, Roger Champagne)


Ré-utilise du matériel du
•cours LOG3430, Ecole Polytechnique de Montréal
(Auteur Principal: Giulio Antoniol ,Co-Auteur: Sègla Kpodjedo) 1
Définitions de base

 Logiciel: Un ensemble de programmes, de procédures,


de documentation associée et les données qui concernent
le fonctionnement d’un système informatique (ISO 24765)
 Ensemble de programmes: code source ayant fait l’objet de
spécifications, conception, revues, essais, ...;
 Données: inventoriées, modélisées, normalisées, créées lors de
la production du logiciel;
 Processus: processus d’affaires des utilisateurs, décrits, étudiés
et optimisés;
 Règles: règles d’affaires décrites, validées, implantées et testées;
 Documentation: véhicule de communication, réalisée à toutes
les étapes clé du cycle de vie.

2
Assurance Qualité –
Vérification vs. Validation (IEEE Std 829)
 Groupe d'assurance-qualité logicielle
 Équipe de personnes avec les compétences et la formation nécessaires
pour s'assurer que toutes les actions nécessaires sont prises durant le
processus de développement afin que le logiciel résultant soit conforme
aux exigences techniques établies.
 Vérification
 Évaluation d'un système ou composant logiciel pour déterminer si les
produits d'une phase donnée du développement sont conformes aux
conditions imposées au début de cette phase. Activités: inspections et
revues par les pairs de divers livrables associés au logiciel, etc.
 Validation
 Évaluation d'un système ou composant logiciel durant ou à la fin d'un
cycle de développement, dans le but de déterminer si les exigences
spécifiées sont satisfaites. La validation est habituellement associée à
des tests traditionnels basés sur l'exécution, c'est-à-dire en sollicitant le
logiciel avec des cas de test.
Missions de l’Assurance Qualité
 Découvrir les fautes dans les documents où elles sont introduites,
d’une manière systématique, afin d’éviter les effets de
propagation. Les études structurées et systématiques de
documentation logicielle sont appelées inspections.
 Dériver, d’une manière systématique, des cas de test efficaces
pour découvrir les anomalies.
 Automatiser et étendre les activités de test et d’inspection à leur
maximum possible.
 Surveiller et contrôler la qualité, e.g., fiabilité, facilité de
maintenance, sécurité, à travers toutes les phases et les activités
du projet.
 Tout ceci implique de mesurer par une métrique appropriée le
produit logiciel et ses processus de même qu’une évaluation
empirique du test et des technologies d’inspection.
© G. Antoniol 2006 LOG2430 - Intro Vérification et validation 4
Défaillances logicielles: Histoires « drôles »

 Hounslow, West London (2009). Un distributeur automatique


Tesco donne deux fois le retrait demandé après une “erreur
opérationnelle”, un “computer glitch”
 “It makes a change for us to have the joke on the banks for once.”
 Bank: "If the people using the ATM see it as a bit of fun, so be it."
 Des événements similaires en 2008, 2011, Europe, Amérique du Nord
5
Défaillances logicielles: Histoires « d’horreur »
Ariane 5, Vol 501 (1996)
 4000 m et 40 s 
• Pertes: 370 millions $ US
• Cause (entre autres):
Mauvaise gestion d’exceptions
PRE: -32768 <= x <= +32767
POST: y=int16(x)

Machine de radio-thérapie Therac-25 (85- Mars Climate Orbiter (1999)


87) • Écrasement du vaisseau sur Mars
• Sur-Radiations (jusqu’à 100 fois la dose) • Pertes: 300 millions $US
• Au moins 5 morts • Cause (entre autres):
• Cause: Aucun test sur les entrées non- Mélange des systémes impérial et
standard métrique 6
Problèmes dominants
Rappel: Nature du développement logiciel:
Pas une production. Utilisation intensive de l’effort humain.
Ingénierie, mais aussi processus social. Systèmes logiciels de
plus en plus complexes, impliquant diverses industries.
 Le logiciel est le plus souvent livré en retard, avec des
surcoûts et une qualité insatisfaisante.
 La validation et la vérification de logiciel sont rarement
systématiques et ne sont pas souvent basées sur des
techniques sûres et bien définies.
 Les processus de développement de logiciel sont
habituellement instables et incontrôlés.
 La qualité du logiciel est naïvement mesurée, surveillée et
contrôlée.
7
Conséquences chiffrées d’une qualité faible
 L’enquête du groupe Standish (1994)
• 350 compagnies, plus de 8000 projets.
• 31% des projets ont été annulés, seulement 9-16% ont été
livrés dans les coûts et budgets prévus
 Étude américaine (1995) :
81 milliards $US dépensés par année pour des projets de
développement de logiciel qui ont échoué.

 Étude NIST (2002) :


• les bugs coûtent 59.5 milliards $ par année.
• Une détection anticipée aurait pu sauver 22 milliards $.

8
Qualités des produits logiciels
 Exactitude  Facilité de réparation
 Fiabilité  Facilité d’évolution
 Robustesse  Facilité de réutilisation
 Performance  Portabilité
 Convivialité  Facilité de compréhension
 Facilité de vérification  Interopérabilité
 Facilité de maintenance

9
Exemple : feu de signalisation

Exactitude, fiabilité :
laisse le trafic passer
selon un modèle correct
et une programmation
centralisée.

Contrôle

Robustesse, sécurité :
fournit une fonction
minimale quand c’est
possible ; ne signale
jamais des verts en
conflit. (les rouges
clignottants)
10
Subtilités de la sûreté de fonctionnement du logiciel

 Un programme est correct s’il obéit à sa spécification. On


ne peut établir qu’un programme est correct mais on peut
en évaluer la fiabilité (approximation statistique)
 Un programme est robuste s’il agit raisonnablement sous
des conditions sévères, inhabituelles ou illégales.
 Spécification inadéquate ou partielle  correct mais pas
sécuritaire ou robuste.
 Défaillances Rares  Fiable mais pas correct
 Défaillances « gênantes »  Sécuritaire mais pas correct
 Défaillances catastrophiques  peut-être Robuste mais
pas sécuritaire
11
Les besoins de sûreté de fonctionnement varient
 Les applications à sécurité-critique :
 les systèmes de contrôle aérien ont des besoins stricts en matière
de sécurité;
 les systèmes de télécommunications ont des besoins stricts en
matière de robustesse.

 Les produits de masse :


 la fiabilité est moins importante que le délai de livraison au marché.

 Cela peut varier dans la même classe de produits :


 la fiabilité et la robustesse sont des aspects clés pour les systèmes
d’exploitation multi-utilisateurs (e.g., UNIX) mais moins importants
pour les systèmes d’exploitation mono-utilisateur(e.g., Windows or
MacOS)

12
Traitement des fautes logicielles
Traitement des
fautes

Évitement Détection Tolérance


de fautes De fautes aux fautes

Méthodologie de Transactions Redondance


Inspections
Conception, atomiques modulaire

Gestion des
Vérification
Configurations
Test Déboguage

Test des Test Test du Exactitude du Performance


composants d’intégration système déboguage du déboguage

13
Définitions & Objectifs du test

14
Erreurs, Défauts, Défaillances (1/3)

 Erreur (Error)
 Action humaine qui produit un résultat incorrect (ISO 24765).
 Défaut ou faute (Defect)
 Une erreur qui, si elle n'est pas corrigée, pourra causer une
défaillance (failure) ou produire des résultats incorrects (ISO
24765).
 Un défaut est introduit dans le logiciel comme conséquence
d'une erreur.
 Défaillance ou panne (Failure)
 Cessation de l'aptitude d'un produit à accomplir une fonction
requise ou de son incapacité à s’en acquitter à l’intérieur des
limites spécifiées précédemment (ISO 25000).
15
Erreurs, Défauts, Défaillances (2/3)

16
Erreurs, Défauts, Défaillances (3/3)

17
Tests vs. Debogage

 Test de logiciel : Exécuter le logiciel pour trouver les


fautes ou gagner en confiance dans le système.
 Cas de test: Item relié aux tests et qui contient
 Un ensemble de données d'entrée de test: reçues d’une source
externe (matérielle, logicielle, ou humaine) par le code testé.
 Des conditions d'exécution: requises pour exécuter le test, par
exemple une base de données qui se trouve dans un certain état,
ou une configuration particulière d'un dispositif matériel.
 Les sorties attendues. Il s'agit des résultats spécifiés que le code
testé doit produire.
 Jeu (Suite) de tests / Test : Ensemble de cas de test,
combiné ou non à un ensemble de procédure de test.
 Débogage (localisation de défauts)
18
 localiser le défaut; réparer le code; tester le code à nouveau.
Harnais de tests: Substituts (stubs) et Drivers
 Test Stub : implémentation partielle d’un
composant duquel dépend le
composant testé.

 Test Driver: implémentation partielle d’un


composant qui dépend du
composant testé.

 Test stubs et test drivers permettent aux composants


d’être isolés du reste du système pour être testés.

19
Sommaire des définitions

Suite de test

Exécute est révisé par


* * 1…n

cas de test Composant Correction

* *
*
Test stub
trouve
réparations
* Test driver

* *
Défaillance * * faute * * Erreur

est causée par est causée par

20
Buts du test
 Dijkstra, 1972 : “Le test de programme peut être utilisé
pour montrer la présence de bugs,
mais jamais pour montrer leur
absence.”

 Aucune certitude absolue ne peut être déduite du test.

 Le test devrait être intégré avec d’autres activités de


vérification, e.g., les inspections.

 But principal : démontrer que le logiciel a une sûreté de


fonctionnement suffisante.
21
Vue d’ensemble du processus du test

Représentation du
logiciel

Tests

Code du
Tests
logiciel

Résultats
Résultats
attendus
Oracle Comparaison

Oracle : n’importe quel moyen permettant de prédire le résultat.


22
Tests de haute qualité
 Un nombre suffisant (le plus petit possible) de cas
significatifs de test sont exécutés pour révéler des erreurs
ou augmenter la confiance qu’on a dans le système.
 Qualités recherchées
 Efficace pour découvrir des fautes
 Aide à localiser les fautes à débugger
 Répétable de telle façon qu’une compréhension précise de la
faute peut être déduite
 Automatisé afin d’abaisser le coût et la durée
 Systématique afin d’être prévisible
 Conséquences positives
 utilisation plus efficace des ressources de l'organisation
 probabilité plus élevée de pouvoir réutiliser des tests
 meilleur respect du budget et des échéances du projet
 possibilité de livrer un produit de meilleure qualité 23
Principes fondamentaux

24
Propriété de la continuité
 Tester la capacité d’un pont à soutenir un certain poids.

 Si un pont peut soutenir un poids égal à W1, alors il


soutiendra tout poids W2 <= W1.

 La même règle ne peut pas être appliquée au logiciel …

 La propriété de continuité, i.e., petites différences dans


les conditions d’exploitation ne résultera pas en un
comportement significativement différent -> totalement
faux dans le cas d’un logiciel.



25
Test exhaustif
 Le
test exhaustif, i.e., test d’un système logiciel utilisant toutes les
données possibles, est la plupart du temps impossible.
 Exemples :
 Un programme qui calcule la fonction factorielle (n!=n.(n-1).(n-2)…1).
 Test exhaustif = exécuter le programme avec 0, 1, 2, …, 100, … comme
entrée!
 Un compilateur (e.g., javac)
 Test exhaustif = exécuter le compilateur de Java avec tous les programmes
(Java) possibles (i.e., code source)!!!.

 Technique utilisée pour réduire le nombre de données :


 Le critère de test groupe les éléments d’entrée en classes
d’équivalence.
 Une entrée est sélectionnée dans chaque classe (notion de couverture des
entrées de test).

26
Test Intelligent

 Peu importe les moyens pour l'éviter, il reste des défauts


dans tout composant logiciel
 Responsabilité des testeurs: concevoir des tests qui
 révèlent des défauts
 peuvent être utilisés pour évaluer divers attributs de qualité du
logiciel (performance, fiabilité,...)
 Pour atteindre ces objectifs, le testeur doit
intelligemment choisir un sous-ensemble des
entrées de test possibles, ainsi que des combinaisons
de ces entrées, de telle sorte que la probabilité de
révéler des défauts soit maximisée, le tout en
respectant les contraintes (budget, temps, ressources) du
processus de test. 27
Stratégie de conception / Couverture des tests
Représentation du logiciel
(Modèle) Critère associé
Le jeu de test doit couvrir
toutes les éventualités
dans le modèle

Données
de test
Représentation de
• la spécification ⇒ Test Boîte noire
• l’implémentation ⇒ Test Boîte blanche

28
Tests Boite Noire

 Aussi nommés "test basés sur les spécifications" ou "tests


fonctionnels"
 le logiciel à tester est considéré comme une boite opaque
 le testeur sait ce que fait le logiciel, mais pas comment
 applicable à tous les niveaux (fonction, module, système
complet)
 sources d'information pour la conception des tests:
 spécifications (formelles ou non)
 ensemble bien défini de pré- et post-conditions
 particulièrement utile pour révéler des défauts au
niveau des spécifications
29
Tests Boite Noire - Exemple
 Spécification du calcul de la factorielle d’un nombre:
Si la valeur d’entrée n est < 0, alors un message d’erreur approprié
devrait être imprimé. Si 0 < n < 20, alors la valeur exacte de n! devrait
être imprimée. Si 20 < n < 200, alors une valeur approximative de n!
devrait être imprimée en format virgule flottante, e.g., utilisant une
méthode approximative de calcul numérique. L’erreur admissible est
0.1% de la valeur exacte. Finalement, si n>=200, l’entrée peut être
rejetée en imprimant le message d’erreur approximatif.

 À cause des variations attendues en comportement, il est naturel de


diviser le domaine d’entrée en classes {n<0}, {0< n <20}, {20 < n <
200}, {n >= 200}. Nous pouvons utiliser un ou plusieurs cas de test
de chacune des classes dans chaque jeu de test. Les résultats corrects
d’un tel jeu de test supportent l’assertion que le programme se
comportera correctement pour n’importe quelle autre valeur, mais il n’y
a pas de garantie!
30
Tests Boite Blanche

 aussi nommés "boite transparente" ou "boite de verre"


 concentrés sur la structure interne du code
 le code (ou un pseudo-code "fidèle") doit être disponible au
testeur
 cas de tests conçus pour exercer certaines structures
spécifiques
 plus longs à concevoir, coder, exécuter, et analyser les
résultats, donc typiquement appliqués à des "petits"
éléments logiciels
 utiles pour révéler des défauts reliés à la conception, ou
au code (contrôle, logique, séquences,
initialisation, flux de données)
31
Tests Boite Blanche - Exemple
if x > y then
Max := x;
else
Max := x ; // faute!
end if;

{x=3, y=2; x=2, y=3} peut détecter l’erreur, plus de “couverture”


{x=3, y=2; x=4, y=3; x=5, y=1} est plus étendu mais ne peut pas le détecter.

 Le critère de test groupe les domaines d’entrée en classes


d’équivalence (ici, les chemins dans le graphe de flot de
contrôle).
 La couverture complète essaie d’exécuter les cas de test
de chacune des classes.

32
Test boîte noire et test boite blanche

33
Test boîte noire vs test boite blanche

Système

Spécification
Implémentation

Fonctionnalité manquante : Fonctionnalité inattendue :


ne peut être révélée par les ne peut être révélée par les
techniques de la boîte blanche. techniques de la boîte noire.
34
Test boîte blanche vs test boîte noire
 Boîte noire  Boîte blanche
+ Vérifier la conformité avec + Il permet d’être certain au sujet de
les spécifications. la couverture du test.
+ Il s’adapte aux niveaux de + Il est basé sur la couverture du flot
granularité (différentes de contrôle ou de données.
techniques à différents – Il ne s’adapte pas aux niveaux de
niveaux de granularité). granularité (le plus souvent
– Il dépend de la notation des applicable à l’unité et aux niveaux
spécifications et de leur du test d’intégration).
degré de détail. – À la différence de la technique de
– On ne sait pas jusqu’à quel la boîte noire, il ne peut pas
point le système a été testé. révéler les fonctionnalités
– Quoi faire si le logiciel manquantes (partie de la
effectue des tâches non spécification qui n’est pas
spécifiées, indésirables? implémentée).

35
Aspects pratiques

36
Plusieurs causes de défaillances
 La spécification peut être incorrecte ou avoir un besoin
manquant.

 La spécification peut contenir un besoin qui est impossible


à implémenter étant donné le logiciel et le matériel
prescrits.

 La conception du système peut contenir une défaillance.

 Le code du programme peut être inexact.

37
Organisation de test
 Il peut y avoir différentes causes potentielles de
défaillance. Dans les gros systèmes, le test implique
plusieurs étapes :
 Module, composant ou unité de test
 Test d’intégration
 Test de fonction
 Test de performance
 Test d’acceptation
 Test d’installation

38
Code de composant
Organisation des tests logiciels
Unité
de test Descriptions Spécifications Spécifications Besoins du Environnement
de conception fonctionnelles d’autres client de l’utilisateur
du système logiciels
Unité
de test
Code de composant

Test Test de Test de Test d’ Test


. d’intégration Fonction performance acceptation d’Installation
.
. Modules Système Logiciel Système
integrés fonctionnel vérifié accepté
Code de composant

et validé

Unité
de test SYSTÈME
Pfleeger, 1998 Opérationel
39
Différences entre les activités de tests
Test d’unité Test d’intégration Test du système

A partir des spécifications A partir des spécifications A partir des


de module d’interface spécifications

Visibilité des Visibilité de la structure Pas de visibilité


détails de code d’intégration de code

Échafaudage Quelques Pas de «driver » ou


complexe échafaudages de « stubs »

Comportement de Interactions entre Fonctionnalités du


simples modules modules système

Pezze and Young, 1998


40
Test d’intégration
L’intégration de composants bien testés peut mener à une
défaillance due à :
 Mauvaise utilisation des interfaces (mauvaises spécifications
d’interface / implémentation) ;
 hypothèse incorrecte sur le comportement/état de modules
reliés (mauvaise spécification de fonctionnalité /
implémentation), e.g., supposition incorrecte concernant la
valeur de retour.
 utilisation de drivers / stubs faibles : un module peut se
comporter correctement avec des drivers/stubs (simples),
mais peut avoir des défaillances quand il est intégré avec des
modules réels (complexes).

41
Test de système vs. test d’acceptation
 Test de système
 Le logiciel est comparé avec les spécifications des besoins
(vérification).
 Toujours effectué par des développeurs qui connaissent le
système.

 Test d’acceptation
 Le logiciel est comparé avec les spécifications de l’utilisateur final
(validation).
 Toujours effectué par le client (acheteur) qui connaît
l’environnement où le système est utilisé.
 Parfois on distingue entre « α - β - testing » pour les produits à
usage général.

42
Test durant le cycle de vie
 Beaucoup d’artefacts de développement durant le cycle
de vie fournissent une source riche de données de test.

 L’identification anticipée des besoins de test et des cas de


tests aide à réduire la durée de développement.

 Ils peuvent aider à faire connaître les fautes.

 Cela peut aussi aider à identifier tôt la faible testabilité


des spécifications ou de la conception.

43
Organisation du cycle de vie
 besoins => Test d’acceptation

 Spécifications/Analyses => Test de système

 Conception => Test d’intégration

 Diagramme de classe, méthodes, pré- et post-conditions,


structure => test de classe.

44
Exemple : besoins du système
 Les erreurs à cette étape auront des effets dévastateurs
comme toutes les autres activités qui en sont dépendantes.
 Langage naturel : flexible mais ambigu, testabilité faible.
 Est-il possible développer un test pour vérifier si les besoins
ont été satisfaits ?
 E.g., non testable : le système devrait être convivial, le
temps de réponse devrait être raisonnable.
 Le développement anticipé des tests d’acceptation à partir
des besoins nous permet d’évaluer si ces tests sont
testables et de durée raccourcie.
 E.g., testable : le temps de réponse est moins de 1.5
seconde pour 95% du temps moyen du chargement du
système. 45
Exemple : besoins du système
 Le niveau le plus bas du test des besoins consiste à
générer les données de test pour chaque besoin au
moins une fois.

 Mais nous voulons utiliser des techniques qui sont un


peu plus exigeantes : limites et interactions des besoins.

 Les techniques de test fonctionnel (boîte noire) peuvent


être appliquées.

 Partitionnement d’équivalence, analyses des limites,


partition par catégorie, tables de décision, graphe de
cause à effet.

 Les besoins de test d’acceptation sont identifiés. 46


Activités de test
Établir les objectifs des tests
Concevoir les cas de tests (jeu de test)
Écrire les cas de tests
Tester des cas de tests
Exécuter les tests
Évaluer les résultats de tests
Comprendre la cause des défaillances
Faire des tests de régression

47
les activités de test AVANT codage
 Le test est une activité consommatrice du temps.
 Développer une stratégie de test et identifier les besoins
de test représentent une partie substantielle du test.
 Planifier est essentiel.
 Les activités de test font subir une énorme pression si elles
sont exécutées vers la fin du projet.
 Afin de raccourcir le délai de livraison (vers le marché) et
d’assurer un certain niveau de qualité, beaucoup d’activités
d’AQ (incluant le test) doivent être réalisées tôt dans le
cycle de vie du développement.

48
Modèle en V et activités de tests

Source: I. Burnstein, Practical Software Testing, Springer, 2003, figure 8.5. 49


Modèle en V et activités de tests

© G. Antoniol 2006 LOG2430 - Intro Vérification et validation 50


Rôle du testeur
 Le test est souvent perçu comme une activité destructrice:
 révéler des défauts
 trouver des points faibles ou des comportements incohérents
 trouver des circonstances où le logiciel ne fonctionne pas tel
qu'attendu
 Il faut être à l'aise avec ce rôle !!!
 Le testeur doit communiquer et collaborer avec plusieurs
intervenants.
 Les testeurs devraient être hiérarchiquement indépendants
des développeurs.
 Les testeurs sont des spécialistes (compétences et formation
spécifiques). Pas leur travail de déboguer !!!
 Les testeurs doivent être supportés par l'administration 51
Principes de tests

1. Le test est un processus consistant à solliciter un


composant logiciel en utilisant un ensemble choisi de cas
de tests avec l'intention de (i) révéler des défauts et (ii)
évaluer la qualité.
2. Quand l'objectif du test est de détecter des défauts, un
bon cas de test en est un qui a une probabilité élevée de
révéler un défaut encore non-détecté.
3. Les résultats de tests devraient être inspectés
méticuleusement.
4. Un cas de test doit spécifier la sortie ou le résultat
attendu.
5. Des cas de tests devraient être développés pour des
entrées valides, mais aussi pour des entrées invalides. 52
Principes de tests

6. La probabilité qu'il existe des défauts additionnels dans


un composant logiciel est proportionnelle au nombre de
défauts déjà détectés dans ce composant.
7. Les tests devraient être réalisés par un groupe qui est
indépendant du groupe de développement.
8. Les tests doivent être répétables et réutilisables.
9. Les tests devraient être planifiés.
10. Les activités associées aux tests devraient être intégrées
dans le cycle de vie du logiciel.
11. Les tests requièrent de la créativité et représentent une
tâche avec un haut niveau de défi.
53
Tester demande de la créativité
 Les tests sont souvent vus comme un travail ingrat (de
moins en moins).
 Pour développer un test efficace, on devrait avoir :
 une compréhension détaillée du système ;
 Une bonne connaissance des techniques de test ;
 les compétences nécessaires pour appliquer ces techniques d’une
manière efficace.
 Le test est mieux fait par des testeurs indépendants.
 Le programmeur reste souvent fidèle à l’ensemble des
données qui font fonctionner le programme.
 Souvent, un programme ne fonctionne pas quand il
est essayé par quelqu’un d’autre.
54

Vous aimerez peut-être aussi