PART 1 - Chap II - Introduction Au Test de Logiciels
PART 1 - Chap II - Introduction Au Test de Logiciels
PART 1 - Chap II - Introduction Au Test de Logiciels
logiciels
1.2. Satisfaction
Un programme satisfait sa spécification lorsqu’il est en tout point conforme aux exigences de celle-ci.
1.4.Tester un logiciel
Processus d’exécution d’un programme avec l’intention de détecter des anomalies dans le but de le
valider.
1
Autre définitions
1. 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 des
différences entre les résultats attendus et les résultats obtenus.
2. Dans “G. 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.
3. Selon l’AFCIQ :
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.
Quelques remarques
1. Il s’agit en réalité d’un ensemble d’activités réparties dans le cycle de vie,
2. Une grande partie des activités de test se situe en fin de cycle de développement,
3. Il est difficile d’évaluer l’effort nécessaire. Il est admis que le test représente de 30 à 40% des
coûts de développement d’un logiciel suivant son niveau de criticité. Il représente
généralement 1/3 du planning.
4. Une mauvaise manière de voir le test est de le considérer comme une activité intervenant
uniquement dans la phase « codage et test » du cycle de vie.
Activités de test
1. Planification : Plans de test, choix de méthodes, budget
2. Conception : Choix des jeux de test
3. Implémentation : Réalisation nécessaire à l’exécution des jeux de tests
4. Exécution : Monitoring, analyse des résultats
Comme nous l’avons présenté dans le cycle de vie en « V » d’un logiciel, les tests sont réalisés dans
l’ordre suivant :
2.1.Test unitaires
But
Consiste à tester les composants (procédures et modules) logiciels de manière isolés dans le but de
s'assurer qu’il ne comporte pas d'erreur d'analyse ou de programmation et par rapport à sa
spécification détaillée.
Quand
Dès qu’un composant à été codée et compilée correctement
Qui
Pour les logiciels de faible criticité, elle peut être réalisée par l’équipe de développement (mais pas
par le développeur ayant codé le composant).
2
2.2.Test d’intégration
« Une progression ordonnée de tests dans laquelle des éléments logiciels et matériels sont
assemblés et testés jusqu'à ce que l’ensemble du système soit testé. » (IEEE 729)
But
Validation des sous-systèmes logiciels entre eux. Consiste ainsi à tester le bon comportement lors de
la composition de procédures et modules
Quand
Dès qu’un sous-système fonctionnel (module, objet) est entièrement testé unitairement
Qui
Toujours par une équipe de tests indépendante de l’équipe de développement.
But
Vérifier la conformité du logiciel à la spécification du logiciel. Consiste ainsi à tester les spécifications
externes et doit permettre de répondre à la question : A-t-on bien fait le logiciel ?
Quand
Dès que l’ensemble des sous-systèmes fonctionnels ont été testé et intégré
Qui
Ces tests sont toujours réalisés par une équipe de tests indépendante de l’équipe de développement.
Remarque : Encore une fois, comme nous l’avons précisé précédemment, les activités liées à ces
trois niveaux de tests se déroulent tout au long du cycle de vie du développement d’un logiciel et
commencent donc dès les phases d’étude des besoins. Ainsi les activités de planification et de
conception des tests peuvent commencer en parallèle avec les premières phases du cycle de vie (cf
schéma du cycle de vie en « V »)
a
S1
b Spécification
c S2
3
Tests Statiques :
Sans exécuter le programme
Tests Dynamiques
Avec exécution du programme
Une approche fonctionnelle détectera difficilement le défaut alors qu’une approche par analyse de
code pourra produire le test : x = 600, y = 500 qui permet de trouver l’anomalie.
Conclusion :
En examinant ce qui à été réalisé, on ne prend pas forcément en compte ce qui aurait du être fait :
⇒ Les approches structurelles détectent plus facilement les erreurs commises
⇒Les approches fonctionnelles détectent plus facilement les erreurs d’omission et de
spécification.
Principe 1 : Un programmeur ne doit pas tester ses propres programmes. Tout simplement
pour ne pas être juge et partie.
Principe 2 : Ne pas effectuer des tests avec l’hypothèse de base qu’aucune erreur ne va être
trouvée.
4
Principe 3 : La définition des sortie ou résultats attendus doit être effectuée avant
l’exécution d’un test. Ceci est une erreur fréquente du test. Ce n’est pas lorsque l’on effectue
le test d’une procédure qu’il faut se poser la question de la validité des résultats, car il y a des
chances non négligeables de prendre un résultat erroné mais semblant cohérent pour un
résultat correct.
Principe 4 : Inspecter minutieusement les résultats (trace) de chaque test. Pour une raison
similaire au principe 2, il faut séparer l’exécution (action) et l’analyse des résultats.
Principe 5 : Les jeux de tests doivent être écrits pour des entrées invalides ou incohérentes
aussi bien que pour des entrées valides. Simplement afin de découvrir les anomalies.
Principe 6 : Vérifier un logiciel pour détecter qu’il ne réalise pas ce qu’il est supposé faire
n’est que la moitié du travail. Il faut aussi vérifier ce que fait le programme lorsqu’il n’est pas
supposé le faire. Afin d’´evaluer la robustesse du logiciel.
5
7. COURS N°3 (11 Mars 2008)
8. Suite
9. Chap2.1 Généralités
– Sommets :
Blocs élémentaires du programme, ou prédicats des conditionnelles/boucles, ou nœuds de jonction
“vide” associé à un nœud prédicat
– Arcs :
Enchaînement d’exécution possible entre deux sommets
2.1.n+1. Chemins de contrôle : suite d’arcs rencontrés dans le graphe, en partant du noued
d’entrée E et finissant sur le nœud de sortie S. Un chemin de contrôle représente une exécution
possible d’un programme à partir d’une DT donnée .