Technique de Test Logiciel ( TTL )
Université de Biskra
Département d’informatique
1er année Master
Option : GLSD
Présenté par
Dr. Ouaar Hanane
Année universitaire 2016/2017
1
Technique de Logiciel: Description
Intitulé du Master : Génie logiciel et systèmes distribués
Semestre : S1
Intitulé de l’UE : Outils de Spécification et de Test
Intitulé de la matière : Technique de Test Logiciel
Crédits : 4
Coefficients : 2
Mode d’évaluation :
67 % Examen +
33 % interrogations
2
Technique de Test Logiciel: Plan
Contenu de la matière :
Chapitre I : Introduction à l’activité de test
Chapitre II : Technique de Test Logiciel
Chapitre III : Outils de Test
Chapitre VI : Initiation au Techniques de vérification formelle
3
Introduction générale
L’erreur est humaine, presque tous les programmes contiennent des erreurs.
Les erreurs sont difficiles à identifier, car on trouve:
* Grande complexité des logiciels
* Invisibilité du système développé
* Pas de principe de continuité
L’activité de test est essentielle au développement de logiciels de qualité .
Lorsque les tests sont correctement réalisés et utilisés, ils permettent de découvrir des
erreurs.
Les tests mettent en avant des défaillances du logiciel, c’est-à-dire des fonctionnements
anormaux aux vues de ses spécifications. 4
“ Testing is the process of executing a
program with the intent of finding
errors.”
Glen Mye
5
Chapitre 1:
Introduction à
l’activité de test
6
Chapitre 1: Introduction à l’activité de test
Définition: Génie logiciel
Le génie logiciel est un domaine des sciences de l’ingénieur
dont l’objet d’étude est la conception, la fabrication et la
maintenance des systèmes informatiques complexes.
7
Chapitre 1: Introduction à l’activité de test
Définition: Système
Un système est un ensemble d’éléments interagissant entre eux
suivant un certains nombres de principes et de règles dans le
but de réaliser un objectif.
La frontière d’un système est le critère d’appartenance au
système.
L’environnement est la partie du monde extérieure au système.
Un système est souvent hiérarchisé à l’aide de sous-systèmes.
Un système complexe se caractérise par:
sa dimension, qui nécessite la collaboration de plusieurs
personnes;
son évolutivité. 8
Chapitre 1 : Introduction à l’activité de test
Définition : Logiciel
Un logiciel est un ensemble d’entités nécessaires au
fonctionnement d’un processus de traitement
automatique de l’information.
Parmi ces entités, on trouve par exemple:
Des programmes (en format code source ou exécutables);
Des diagrammes;
Des documentations d’utilisation;
Des informations de configuration.
9
Chapitre 1 : Introduction à l’activité de test
Un logiciel est en général un sous-système d’un système englobant.
Il peut interagir avec des clients, qui peuvent être :
des opérateurs humains (utilisateurs, administrateurs, . . . ) ;
d’autres logiciels ;
des contrôleurs matériels.
Il réalise une spécification : son comportement vérifie un ensemble
de critères qui régissent ses interactions avec son environnement.
10
Chapitre 1 : Introduction à l’activité de test
Le génie logiciel vise à garantir que :
1 la spécification répond aux besoins réels de ses clients ;
2 le logiciel respecte sa spécification ;
3 les coûts alloués pour sa réalisation sont respectés ;
4 les délais de réalisation sont respectés.
11
Chapitre 1 : Introduction à l’activité de test
Le développement logiciel comprend un ensemble d’activités :
La gestion des exigences (définition des objectifs)
L’analyse des besoins et de faisabilité
La spécification
La conception générale
La conception détaillée
L’implantation (programmation)
Le teste unitaire (vérification)
Le teste d’intégration
La validation
L’intégration
Le déploiement
La maintenance
Elles fournissent différents produits logiciels (documents, modèles,
12
code, …)
Chapitre 1 : Introduction à l’activité de test
Vérification & Validation Principes de V&V
Deux aspects de la notion de qualité :
– Correction d’une phase ou de l’ensemble : VERIFICATION
• Réponse à la question : faisons-nous le produit correctement ?
• Tests
• Erreurs par rapport aux définitions précises établies lors des
phases antérieures de développement
13
Chapitre 1 : Introduction à l’activité de test
Vérification & Validation Principes de V&V
– Conformité avec la définition : VALIDATION
• Réponse à la question : faisons-nous le bon produit ?
• Contrôle en cours de réalisation, le plus souvent avec le client
• Défauts par rapport aux besoins que le produit doit satisfaire
14
Chapitre 1 : Introduction à l’activité de test
V&V et cycle de vie
- Les spécifications fonctionnelles définissent les intentions
* Elles sont créées lors de la phase d’analyse des besoins
- La vérification du produit consiste à vérifier la conformité vis-à-
vis de ces spécifications fonctionnelles
A ce stade on trouve des termes similaires:
* Revues, inspections, analyses, tests fonctionnels et tests structurel
en boite blanche 15
Chapitre 1 : Introduction à l’activité de test
V&V et cycle de vie
- La validation du produit consiste à vérifier par le donneur
d’ordre la conformité vis-à-vis des besoins
* Le plus souvent, tests fonctionnels en boîte noire
* Théoriquement, la validation devrait être plutôt faite par les
utilisateurs, sans tenir compte du cahier des charges
* En pratique, la validation s’appuie sur le cahier des charges pour
créer des tests d’acceptation…
16
Chapitre 1 : Introduction à l’activité de test
Principe de forte cohésion et de faible couplage
Le couplage: ()اﻗﺘﺮانest une métrique indiquant le niveau d'interaction
entre deux ou plusieurs composants logiciels: fonctions, modules, objets
ou applications.
Deux composants sont dits couplés s'ils échangent de l'information. On
parle de couplage fort ou couplage serré si les composants échangent
beaucoup d'information.
On parle de couplage faible, couplage léger ou couplage lâche si les
composants échangent peu d'information et/ou de manière
17
désynchronisée.
Chapitre 1 : Introduction à l’activité de test
La cohésion ()ﺗﻤﺎﺳﻚest un principe de conception informatique
définissant un degré d'accord entre les différents éléments d'un module.
Selon Larman1, un module cohérent a ses éléments étroitement liés et
effectuant un nombre réduit d'opérations.
Des modules peu cohérents sont généralement difficiles à comprendre, à
réutiliser et à maintenir, et sont fragiles, puisqu'ils sont affectés par les
modifications apportées aux autres modules.
(Larman C., UML 2 et les design patterns. Troisième édition. Pearson Éducation. Chapitre 16, 2005) 18
Chapitre 1 : Introduction à l’activité de test
La cohésion peut être une métrique mesurant l'application des principes
d'encapsulation des données et de masquage de l'information. Elle
mesure également la cohésion sémantique des interfaces des modules et
des classes.
Application:
On peut symboliser 1es concepts de cohésion et, de couplage dans le
domaine des classes de la façon suivante : une classe a une forte
cohésion si tous ses attributs sont, employés par ses méthodes et deux
classes sont couplées si un changement dans l'une exige des
changements dans l'autre.
19
(Oduar Mejia Lopez 2011).
Chapitre 1 : Introduction à l’activité de test
La cohésion forte indique que les méthodes de la classe collaborent
pour accomplir une fonctionnalité, tandis que, le couplage faible indique
que la classe est plutôt indépendante. Ainsi, il serait nécessaire de créer
les applications en développant des composants avec:
forte cohésion et faible couplage.
En garantissant une forte cohésion et un faible couplage dans le
développement d'une application, on gagne en qualité tout en
diminuant la complexité.
Bien que ce principe soit, simple à énoncer et à imaginer, il est difficile
de le mettre en pratique.
20
Chapitre 1 : Introduction à l’activité de test
Facteurs de qualité d’un logiciel ()اﻟﻌﻮاﻣﻞ
Un facteur est une caractéristique du logiciel, du processus ou du service contribuant à sa qualité
telle qu'elle est ressentie par l'utilisateur.
Un critère est un attribut du logiciel par l'intermédiaire duquel un facteur peut être obtenu. C'est
également une caractéristique du logiciel sur laquelle le développeur peut agir. (par exemple, sa
simplicité)
Une métrique est la mesure d'une propriété d'un critère. (par exemple, la taille d’un
21
module pour le critère "Simplicité"). [calculer la Qualite logiciel]
Chapitre 1 : Introduction à l’activité de test
Facteurs de qualité d’un logiciel ()اﻟﻌﻮاﻣﻞ
1. Point de vue « fonctionnel » :
Pertinence : ( )ﻣﻼﺋﻤﺔC’est la capacité de répondre au problème de
l’entreprise.
Adéquation : ( )ﻛﻔﺎءةC’est l’adéquation du logiciel à l’organisation et
aux procédures de l’entreprise.
Généralité :C’est l’aptitude de la solution à résoudre des problèmes de
portée plus large que le contexte particulier du projet. 22
Chapitre 1 : Introduction à l’activité de test
2. Point de vue « utilisation » :
Maniabilité : ( )اﻟﻘﺪرة ﻋﻠﻰ اﻟﻤﻨﺎورةAptitude du logiciel à être convivial
( )ﺳﮭﻞ اﻻﺳﺘﺨﺪامet simple d’emploi.
Fiabilité : ()اﻟﻤﻮﺛﻮﻗﯿﺔAptitude du logiciel à accomplir sans défaillance
l’ensemble des fonctions spécifiés dans un document de référence pour
une durée d’utilisation donnée.
Efficience : ( )ﻛﻔﺎءةAptitude du logiciel à minimiser l’utilisation des
ressources disponibles.
Confidentialité : ( )ﺳﺮﯾﺔAptitude du logiciel à être protégé contre tout
accès par des personnes non autorisées, aussi bien en que hors
exploitation.
Couplabilité (ou interopérabilité) : Aptitude du logiciel à communiquer
23
ou interagir avec d’autres système.
Chapitre 1 : Introduction à l’activité de test
3. Point de vue « maintenance » :
Maintenabilité : Aptitude avec laquelle on peut corriger les erreurs
résiduelles et à évoluer facilement.
Portabilité : Aptitude à transférer le logiciel dans un autre environnement.
24
Chapitre 1 : Introduction à l’activité de test
Critères de qualité d’un logiciel
La maniabilité comporte trois critères :
La communicabilité est la capacité du logiciel de permettre un
dialogue aisé entre l’humain et la machine.
L’exploitabilité est la facilité à mettre en œuvre et à utiliser le logiciel
(sauvegardes, restauration, reprise en cas d’erreur, etc.).
La facilité d’apprentissage est la capacité du logiciel à être utilisé
rapidement par un utilisateur final.
25
Chapitre 1 : Introduction à l’activité de test
Critères de qualité d’un logiciel ()اﻟﻤﻌﺎﯾﯿﺮ
La fiabilité se décline aussi en trois critère:
La complexité du code.
La tolérance aux fautes ( )ﺗﺴﺎﻣﺢest la possibilité de limiter les effets
d’une perturbation interne ou externe, sur le logiciel.
L’auditabilité ( )اﻟﻘﺎﺑﻠﯿﺔ ﻟﻠﺘﺪوﯾﻦest la capacité du logiciel de permettre de
retrouver rapidement et aisément la trace d’une opération.
L’efficience :
La place mémoire.
La vitesse d’accès aux périphériques
Les temps de réponse, etc. 26
Chapitre 1 : Introduction à l’activité de test
La confidentialité :
La protection du code et des données est la limitation, en exploitation
ou non, des accès à des personnes autorisées.
La mémorisation des accès est l’historisation des accès au données et
aux fonctions.
La couplabilité (ou interopérabilité) :
La standardisation des données est la compatibilité des données avec
des standards de représentation.
La standardisation des interfaces.
27
Chapitre 1 : Introduction à l’activité de test
La maintenabilité :
La lisibilité est la capacité d’un logiciel et de sa documentation ade
pouvoir être lus par d’autres personnes que leur auteur.
La modularité représente l’indépendance des composants.
La traçabilité permet de retrouver l’origine des éléments.
L’adaptabilité est l’aptitude du logiciel à évoluer aisément.
28
Chapitre 1 : Introduction à l’activité de test
La portabilité :
La banalité d’emploi traduit l’indépendance de la fonction par
rapport à l’application
L’indépendance est le degré de liberté du logiciel par rapport à
l’environnement.
La qualité de la documentation sur le fond et la forme.
29
Chapitre 1 : Introduction à l’activité de test
Définitions de l’activité de test
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
IEEE (Standard Glossary of Software Engineering Terminology)
Le test est une technique de contrôle consistant à s'assurer, au
moyen de son exécution, que le comportement d'un programme est
conforme à des données préétablies.
AFCIQ : Association Française pour le Contrôle Industriel et la Qualité
Tester, c’est exécuter le programme dans l’intention d’y trouver
des anomalies ou des défauts
G. Myers (The Art of Software testing)
30
Chapitre 1 : Introduction à l’activité de test
Pourquoi tester?
- Une expérience d’exécution, pour mettre en évidence un défaut ou
une erreur, soit:
* Diagnostic : quel est le problème
* Besoin d’un oracle: (prédiction des résultats attendus lors de
l’exécution du programme), qui indique si le résultat de l’expérience est
conforme aux intentions
* Localisation (si possible) : où est la cause du problème ?
Les tests doivent mettre en évidence des erreurs !
On ne doit pas vouloir démontrer qu’un programme marche à l’aide
de tests !
Parfois négligé car :
- les chefs de projet n’investissent pas pour un résultat négatif
- les développeurs ne considèrent pas les tests comme un processus
destructeur 31
Chapitre 1 : Introduction à l’activité de test
Tester le document (test / manuel)
Minimisation des problèmes d’interprétation
– Point de vue indépendant du rédacteur
Vérification
– Forme : respect des normes, précision, non ambiguïté
– Fond : cohérence et complétude
– Testabilité et traçabilité
Validation
– Mauvaises interprétations des documents de référence
– Critères de qualité mal appliqués
– Hypothèses erronées
Quelle méthode pour examiner les documents ?
– Pouvoir de détection
– Coût • 5 à 10p (page)/h (heur) Cahier des charges
• 20 à 50 LOC (Ling Of Code)/h Code 32
Chapitre 1 : Introduction à l’activité de test
La chaîne de l’erreur
Faute ErreurDéfaillance
Faute: Une faute dans un logiciel ou un système peut être vu comme
un élément ou un évènement ayant entraîné une erreur dans celui-ci.
Par exemple, une faute dans un logiciel est le plus souvent d’origine
humaine : erreur d'interprétation d’une exigence, oubli d’une condition
dans une expression booléenne, etc.
Cependant, une faute peut exister sans pour autant perturber le
fonctionnement du logiciel, dans ce cas elle est dite dormante ou
passive.
Dans le cas contraire, si son activation produit une erreur, elle est dite
active. 33
Chapitre 1 : Introduction à l’activité de test
La chaîne de l’erreur
Erreur. Une erreur dans un système est un état non spécifié, atteint
par celui-ci. Elle pourrait par exemple être une “mauvaise” valeur
d’un paramètre d’une fonction, mauvaise initialisation d’une variable
due à une faute, etc. Une erreur qui se propage dans le logiciel peut
entraîner une défaillance de celui-ci.
Défaillance. Une défaillance d’un système est un état dans lequel le
service délivré par celui-ci n’est pas conforme au service attendu. En
d’autres termes, une différence est observée entre le comportement
fourni par le système et le comportement attendu (vis à vis des
spécifications).
Une défaillance peut avoir des conséquences plus ou moins graves
dépendant de sa criticité. En général, on les classe en fonction de leur
niveau de criticité. Par exemple, dans le cas de l’automobile, les
défaillances sont souvent classées selon les quatre niveaux de
criticité suivants : mineure, majeure, sérieuse et fatale. 34
Chapitre 1 : Introduction à l’activité de test
La chaîne de l’erreur: Application
Supposons que le programmeur au lieu d'écrire
l’instruction “x = a + b;” ait écrit l’instruction “x = a
- b;”. Cette dernière instruction est une faute. Si
lors des différentes évaluations de la condition “(a
== b)”, a et b ne sont pas égaux, alors il n’y aura
peut-être pas d'erreur malgré la présence de la
faute. Sinon si a et b sont égaux et que la valeur de
k n’est pas égale à la valeur 1, il n’y aura pas de
défaillance malgré la présence de l’erreur
(activation de la faute “x = a - b”). Par contre si la
valeur de k vaut 1, dans ce cas on a une division par
35
0 et il y a défaillance.
Chapitre 1 : Introduction à l’activité de test
Constituants d’un test
Domaine : Nom, objectif, commentaires, auteur
Données : jeu de test
Code qui appelle des routines : cas de test
Oracles (pré-condition+post-condition+outils de
comparaison avec les résultats réels).
Traces, des résultats observables
Stockage de résultats : étalon
Compte-rendu, une synthèse…
Coût moyen : autant que le programme 36
Chapitre 1 : Introduction à l’activité de test
Tester vs Déboguer
Tester et déboguer, ce n’est pas la même activité et
les responsables sont différents:
Les testeurs testent
Les développeurs déboguent (Déboguer est
une activité de développement permettant
d’analyser, trouver et supprimer les causes de la
défaillances) 37
Chapitre 1 : Introduction à l’activité de test
Test vs. Essai vs. Débogage
On converse les données de test
- Le coût du test est amorti
- Car un test doit être reproductible
Le test est différent d’un essai de mise au point
Le débogage est une enquête
- Difficilement reproductible
- Qui cherche à expliquer un problème. 38
Chapitre 1 : Introduction à l’activité de test
Définitions de quelques termes selon le CFTL (Comité Français des Tests Logiciel)
Exigence (requirement) :Une condition ou capacité requise par un
utilisateur pour résoudre un problème ou atteindre un objectif, qui doit
être tenu ou possédé par un système ou composant pour satisfaire à un
contrat, standard, spécification ou autre document imposé formellement.
Spécification (specification) :Un document qui spécifie, idéalement de
façon complète, précise et vérifiable, les exigences, conceptions,
comportements et autres caractéristiques d’un composant ou système, et
souvent, les procédures pour déterminer si ces stipulations ont été
satisfaites. 39
Chapitre 1 : Introduction à l’activité de test
Définitions de quelques termes selon le CFTL (Comité Français des Tests Logiciel)
Entrées de test (test input) : Données reçues d’une source externe par
l’objet de test pendant son exécution. Les sources externes peuvent être
matérielles, logicielles ou humaines.
Donnée de test (test data) : Donnée existante (par exemple, dans une
base de données) avant qu’un test ne soit exécuté et qui affecte ou est
affectée par le composant ou système en test.
40
Chapitre 1 : Introduction à l’activité de test
Définitions de quelques termes selon le CFTL (Comité Français des Tests Logiciel)
Cas de test (test case) : Un ensemble de valeurs d’entrée, de pré-
conditions d’exécution, de résultats attendus et de post-conditions
d’exécution, développées pour un objectif ou une condition de test
particulier, tel qu’exécuter un chemin particulier d’un programme ou
vérifier le respect d’une exigence spécifique.
un cas de test est un ensemble composé de trois objets:
Un état (ou contexte) de départ;
Un état (ou contexte) d'arrivée;
Un oracle, c'est à dire un outil qui va prédire ( )ﺗﻜﮭﻦl'état d'arrivée en
fonction de l'état de départ et comparer le résultat théorique et le résultat
pratique.
Un cas de test peut donc s'appliquer à plusieurs méthodes, par exemple
41
plusieurs classes implémentant la même interface.
Chapitre 1 : Introduction à l’activité de test
Définitions de quelques termes selon le CFTL (Comité Français des Tests Logiciel)
Test (test) : Un ensemble d’un ou plusieurs cas de tests.
Suite de test (test suite) : Ensemble de plusieurs cas de tests pour un
composant ou système à tester, dont les postconditions d’un test sont
souvent utilisées comme préconditions du test.
Stratégie de test: Document de haut niveau définissant, pour un
programme, les niveaux de tests a exécuter et les tests dans chacun de
ces niveaux (pour un ou plusieurs projets).
42
Chapitre 1 : Introduction à l’activité de test
Processus de Test
43
Chapitre 1 : Introduction à l’activité de test
Processus de Test
Analyse des exigences. Dans cette étape les différentes exigences sont
analysées afin d’évaluer leur testabilité et d’apporter si nécessaire des
clarifications et des modifications.
Organisation des tests. Cette étape comprend la définition de la
stratégie de test et la planification des activités de test. Par exemple, les
différentes approches à utiliser, le temps à allouer aux activités de test,
les outils à utiliser, les livrables, sont spécifiés dans cette partie.
44
Chapitre 1 : Introduction à l’activité de test
Processus de Test
Développement ou conception des tests. Cette étape consiste au
développement des différents types de tests en tenant compte de l’étape
précédente. Dans un premier temps, les tests sont définis de façon
générique avec des résultats attendus (cas de test). Ensuite ces tests
abstraits seront utilisés pour produire des données de test.
Cette étape est cruciale dans le processus de test car celle-ci joue un rôle
très important dans la qualité des tests finaux. C’est dans cette étape que
les différents tests sont conçus pour vérifier et valider les différentes
parties du logiciel 45
Chapitre 1 : Introduction à l’activité de test
Processus de Test
Exécution des tests. Dans cette étape, les différentes données de test
sont exécutées pour produire des résultats d’exécution.
Rapport de test. Dans cette étape les différents résultats d’exécution
des tests sont analysés afin d’établir un rapport de test. Ainsi, les
différentes anomalies (différence entre le résultat d’exécution du test
avec le résultat attendu) liées à l’exécution des tests, la qualité des tests et
bien d’autres informations seront reportées dans cette partie.
46