Académique Documents
Professionnel Documents
Culture Documents
ISTQB
Laroussi Merhbene
Plan
• Présentation du formateur
• Objectifs de la formation
• Le plan de formation
• Public concerné
• Connaissances requises
• Documents utiles
04/02/2023 2
Plan de la formation
1) Introduction au test logiciel
2) Stratégie & plan de tests
3) Automatisation des test unitaires
4) xUnit
5) Apache ANT
6) Automatisation des tests d'intégration
7) Tests de validation
8) Recette
9) Maturité des processus de tests
10) Maturité des tests avec TMMI/CMMI
04/02/2023 3
Let’s begin
04/02/2023 4
Introduction au test
logiciel
04/02/2023 5
Plan
• Rôle du test dans le processus de développement
• DSIs & tests
• Couts des tests
• Validation & Vérification
• Définition des tests
• Concept des tests
• Tests dans TIC
• Cycle en V
• Test Diven Development (TDD)
• Différentes méthodes de test
• Oracle & verdict
• Niveaux et stratégie des tests
Rôle du test dans le processus de développement (1/2)
04/02/2023 7
Rôle du test dans le processus de développement (2/2)
04/02/2023 8
DSIs et tests
Source: « World Quality Report 2016-2017, Sogeti »
44% 42%
65% 42%
Augmenter la Améliorer
Améliorer la Optimiser les
sécurité Qualité des l’Expérience coûts
Solutions Utilisateur
04/02/2023 9
Couts des tests
Une place très importante dans l’IT
04/02/2023 10
Validation & Vérification
Qui/Pourquoi ?
► Validation : Est-ce que le logiciel réalise les fonctions attendues ?
► Vérification : Est-ce que le logiciel fonctionne correctement ?
04/02/2023 11
Pourquoi tester
Motivation
► Ariane 5, Carte à puce en Allemagne, Réseau Orange...
Quelques chiffres
► Coût des bogues informatiques : 60 Milliards e/ an
► 22 Milliards économisés si processus tests
04/02/2023 12
Définition des tests
04/02/2023 13
Concept des tests
Le test est une activité de validation du logiciel
Est-ce que le logiciel a été développé correctement en fonction des différentes
exigences ?
04/02/2023 14
Tests dans TIC
04/02/2023 15
Cycle de développement en V
04/02/2023 16
Principe de la méthode SCRUM
04/02/2023 17
Coûts du projet
Mise en Mise en Mise en Mise en Mise en Prod. 2
product i o n Prod. 1 Prod. 3 Prod. n
Test
Développement
Concep'on
Maintenance
Concep'on
Développement
Coût
Coût
Test
Etape du projet Etape du projet
04/02/2023 18
Développement Guidé par les Tests (TDD)
Développement Dirigé par les Tests
► Méthode de développement dans les méthodes agiles
► Préconise l’écriture des tests avant le développement du code
Début
Ajout (test)
Refactoring Exécu/on
Exécu/on Codage
04/02/2023 19
Les différentes méthodes de test
Test statique
Test dynamique
04/02/2023 20
Test statique (1/4)
Définitions
Compilateur
• Outil logiciel qui traduit un programme exprimé dans un langage de
haut niveau dans son équivalent en langage machine [IEEE 610]
Complexité
• Degré par lequel un composant ou système a une conception et/ou
une structure interne difficile à comprendre, maintenir et vérifier
04/02/2023 21
Test statique (2/4)
04/02/2023 22
Test statique (3/4)
Exemples :
• Lectures croisées / inspections
Vérification collégiale d’un document (programme ou spécification du logiciel)
• Analyse d’anomalies
Corriger de manière statique les erreurs (typage impropre, code mort, …)
Avantages :
• Méthodes efficaces et peu coûteuses
• 60% à 95% des erreurs sont détectées lors de contrôles statiques
Inconvénients :
• Ne permet pas de valider le comportement d’un programme au cours de son exécution
04/02/2023 23
Test statique (4/4)
Exemple de rapport Sonar
04/02/2023 24
Niveaux des tests dynamiques
• 4 niveaux complémentaires
• Test de composants (unitaire)
• Test d’intégration des composants
• Test du système global
• Test d’acceptation (recette)
04/02/2023 25
Techniques des tests dynamiques
Deux techniques :
• Test structurel
Jeu de test sélectionné en s’appuyant sur une analyse du code source du logiciel
(test boite blanche / boite de verre)
• Test fonctionnel
Jeu de test sélectionné en s’appuyant sur les spécifications (test boite noire)
04/02/2023 26
Test structurel (white box)
Critères de test :
20 fois
• tous les chemins,
• toutes les instructions,
• etc…
B
Fig. 1 : Flot de contrôle d’un petit programme
04/02/2023 27
Test fonctionnel (black-box)
Oracle
Programme
Résultats
de test Résultats d’exécution
04/02/2023 28
Récapitulation des boites de test
04/02/2023 29
Techniques et échelle
04/02/2023 30
Oracle et verdict (1/2)
04/02/2023 31
Oracle et verdict (2/2)
04/02/2023 32
Le verdict
04/02/2023 33
Quelques principes de testing
04/02/2023 34
Complémentarité test
fonctionnel / structurel (1/2)
• Les 2 approches sont utilisées de façon complémentaire
04/02/2023 35
Complémentarité test
fonctionnel / structurel (2/2)
• En examinant ce qui a é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 dans le programme
• Les approches fonctionnelles détectent plus facilement les erreurs d’omission et de spécification
04/02/2023 36
Tests de (non) régression
• Tests de régression : à chaque fois que le logiciel est modifié, s’assurer que “ce qui fonctionnait
avant fonctionne toujours”
• correction de défaut
• ajout de fonctionnalités
• Quand ?
• en phase de maintenance / évolution ou durant le
développement
04/02/2023 37
Catégories de tests
système
integration
module
unitaire
Techniques
(comment on teste)
fonctionnel
non fonctionnel white box black box
performance
ergonomie
robustesse
sécurité
type (ce que l’on veut tester)
04/02/2023 38
Niveaux de tests
Tests d’intégration
Test de bon comportement lors de la composition des procédures, modules ou composants
(coût d’un bug dans cette phase : 10 fois celui d’un bug unitaire)
04/02/2023 39
Processus de test et
stratégie de test
Test et cycle de vie du processus de test
04/02/2023 40
Difficultés du test
• En test fonctionnel, l’ensemble des données d’entrée est en général infini ou très grande taille
Exemple : un logiciel avec 5 entrées analogiques sur 8 bits admet 240 valeurs différentes en
entrée
04/02/2023 41
Stratégie de test
Objectifs de test
Plan de
Test
et de Techniques de test
Validation
04/02/2023 42
Acteurs du test
• Deux situations :
- Je teste un programme que j’ai écrit
- Je teste un programme que quelqu’un d’autre a écrit
• Trois questions :
- Comment choisir la technique de test ?
=> boite blanche ou boite noire ?
- Comment obtenir le résultat attendu ?
=> problème de l’oracle du test
- Comment savoir quand arrêter la phase de test ?
=> problème de l’arrêt
04/02/2023 43
Outils et Méthodes
intervenants à différentes
étapes
Build et Distribution: Utile pour tout le quadrant de test
Automatique & Choix métier
Manuel
Manuel
Critique du Produit
Prototypes Test d'acceptance
Simulations Intégration continue Alpha / Bêta
Q2 Q3
Q1 Q4
Automatique Outils
Choix technologique
04/02/2023 44
Outils et Méthodes
intervenants à différentes
étapes
Intégration continue : Tableau de contrôle
04/02/2023 45
Ce qu’on a couvert
• Principe et importance des tests.
• Choix des jeux de données.
• Choix des tests.
04/02/2023 46
STRATÉGIE & PLAN DE
TESTS
Plan
• Introduction
• Stratégie des tests
• Typologie des tests
• Tests à réaliser
Introduction
Périmètre
Moyens
des À valider avec le client Planning
tests
Stratégie de tests
La stratégie de tests
(1/3)
Définir le périmètre applicatif
Définir les exclusions du périmètre
Objectifs
Définir les phases et types de tests à effectuer
✓ Tests unitaires, d’intégration, de validation, de
non régression, de performance , …
➢ Parmi les fonctions testées, lesquelles sont testées dans leur globalité,
partiellement, par quoi commence-t-on?
✓ On va tester
• Que l’électricité est bien au compteur
• Que les lumières s’allument
• La lumière de l’entrée, des salles principales
✓ On ne va pas tester
• Que la centrale nucléaire fournit bien l’électricité
• Si la lumière de la cave ne marche pas, cela n’est pas trop grave,
celle-ci n’est pas encore aménagée
Typologie des tests (1/6)
Les Tests Unitaires
Rappel définition : Un test unitaire -qu'on pourrait aussi appeler élémentaire-
porte sur un élément fin et précis dont on veut vérifier le fonctionnement
correct sur tel ou tel aspect. Cet élément peut être technique (fonction,
méthode, comportement face à une situation donnée,…) ou fonctionnel (règles
de gestion, règle de saisie,...).
Objectif des TU : Vérifier que le composant répond aux exigences de bas niveau
décrites dans la conception, ou découlant de sa fonction
Exemple :
➢ Toutes les prises de courant sont bien montées (Aucun fil nu qui subsiste ?)
➢ Le compteur électrique est connecté physiquement au réseau électrique
Typologie des tests (2/6)
Exemple :
Vérifier que le courant est présent en sortie du tableau électrique (liaison réseau +
compteur + câblage + disjoncteur + tableau électrique + prise).
Typologie des tests (3/6)
Les Tests de validation interne
Exemple :
On vérifie par l’utilisation de la machine à laver que le système électrique fonctionne.
Typologie des tests
(4/6)
Les Tests de non régression
Rappel définition : Tests ayant pour objectif de vérifier que les modifications
induites par la correction d’un ou plusieurs défauts (ou l'apport d'évolutions)
n’ont pas eu pour effet d'introduire de nouvelles erreurs sur des
fonctionnalités non modifiées. Les tests préexistants (unitaires, d’intégration
ou de validation) qui s’exécutaient sans lever de défaut, doivent toujours
faire de même après les modifications.
En cas d’ajout ou de modification de composant(s) il faut vérifier que tout ce qui a pu être
impacté de près ou de loin continue de fonctionner.
On va aussi se poser la question (dès la stratégie de test) :
➢ Doit-on tout vérifier ?
➢ Ne doit-on vérifier que les composants en relation avec le composant modifié ?
Exemple :
Après toute intervention, on choisit de tester une prise par pièce de la maison, un seul
radiateur, l’alimentation du congélateur.
Typologie des tests
(5/6)
Dans certains cas, il va être nécessaire de vérifier que le nouveau système répond à des
contraintes de temps de réponse, différentes opérations par minute, durée du
traitement ou de charge réseau (exigences client).
Les tests de performance sont déclenchés au moyen de :
- Montées en charge (augmentation du nombre d’utilisateurs)
- Montées en stress (augmentation du volume des données)
Exemple :
Faire un test aux limites avec le maximum d’appareils électriques branchés et en
fonctionnement.
Typologie des tests (6/6)
Les Tests opérationnels
ou « de bout en bout »
+ L'exécution des cas de tests permet de détecter des écarts par rapport
aux spécifications (vérification), objectif initial (validation).
Ce qu’on a couvert
• Type des tests à réaliser.
• Stratégie de mise en œuvre des tests.
Automatisation des
tests unitaires
04/02/2023 62
Plan
• Processus des tests
• Tests unitaires
• Graphe de contrôle
• Couverture structurelle
• Flot de données
• Rejeux des tests
Processus
04/02/2023 64
Test unitaire
Quoi ? • Qui ?
65
04/02/2023
Test structurel
Basés sur le graphe de contrôle (toutes les instructions, toutes les branches,
tous les chemins, …)
Basés sur la couverture du flot de données (toutes les définitions de variables,
toutes les utilisations, …)
04/02/2023 66
Graphe de contrôle
Définition
• Une seule entrée (nœud à partir duquel on peut visiter tous les autres) et une
seule sortie
04/02/2023 67
Graphe de contrôle
Production
i := 1; i:=1
found := false; a found:=false
while (not found) do
begin
if (a[i] = E) then b found
begin f
not found
found := true;
s := i; c
end; a[i] = E
i := i + 1;
found:=true
end; a[i] E d s := i
e i=i+1
04/02/2023 68
Chemins de contrôles
b x = abs(x)+4 c
• Chemin dans le graphe de contrôle x = 2x-15
• Débute au nœud d’entrée du graphe d
x = -1 x -1
• Termine au nœud de sortie du graphe
e f
• Peut être activable ou non
g
• abdeg : un chemin de contrôle bdfg : non • 4 chemins de contrôles
• abdeg
• abdfg
• acdeg
• acdfg 69
04/02/2023
Couverture structurelle
04/02/2023 70
Critères de couverture structurelle
Couverture de tous-les-nœuds,
Couverture de tous-les-arcs,
04/02/2023 71
Couverture de tous-les-nœuds
04/02/2023 72
Couverture de tous-les-nœuds
Cas favorable
end ;
d
04/02/2023 73
Couverture de tous-les-nœuds
04/02/2023 74
Couverture de tous-les-arcs
• Chaque arc est couvert par au moins l’un des chemins parmi les
chemins qui constituent le jeu de test
• La valeur de vérité de chaque nœud de décision a été au moins
une fois vraie et une fois fausse
04/02/2023 75
Couverture de tous-les-arcs
Limite du critère
04/02/2023 76
Couverture des boucles
a a
Chemin limite : [abc]
chemin intérieur : [ababc]
b b
04/02/2023 77
Couverture de tous les i-chemins
04/02/2023 78
Couverture de tous les chemins indépendants
04/02/2023 79
Couverture de tous les chemins indépendants
Conditions élémentaires
a x≥0
a x ≥ 0 && x ≤ 9 true
false
true false
e x≤9
b c true false
b c
d
d
2 conditions élémentaires
3 chemins linéairement indépendants
04/02/2023 80
Couverture de tous les chemins
04/02/2023 81
Hiérarchie des critères basés sur
le graphe de contrôle
tous-les-chemins
tous-les-i-chemins tous-les-chemins-indépendants
tous-les-arcs
(TER2)
tous-les-nœuds
est plus fort que
(TER1)
04/02/2023 82
Le flot de données
• Le flot de données est représenté en annotant le graphe de contrôle par certaines
informations sur les manipulations de variables par le programme :
• Si une variable est utilisée dans le prédicat d’une instruction de décision (if,
while, etc…), il s’agit d’une p-utilisation
• Dans les autres cas (par exemple dans un calcul), il s’agit d ’une c-utilisation.
04/02/2023 83
Rejeux des tests
• Une fois écrits, les tests unitaires ont vocation à être rejoués
• chaque fois que la fonctionnalité est impactée
• avant chaque commit du développeur
• Il faut donc veiller à ce que :
• leur nombre ne devienne pas trop important
• leur temps de passage soit acceptable
• Il faut organiser les tests de sorte à ne pas exécuter systématiquement tous les
tests unitaires
04/02/2023
Ce qu’on a couvert
04/02/2023 85
xUnit
04/02/2023 86
Plan
• Principe des xUnit
• Concept du framework JUnit
• Les cas de test
• Aspects méthodologiques
• Du XP au TDD
Principe des xUnit
• Tests unitaires réalisés au niveau des langages informatiques.
• jUnit
• PHPunit
• Cunit
• CPPunit
Concept du framework JUnit
• La référence des tests unitaires en Java
• Trois des avantages de l’eXtreme Programming appliqués aux tests :
– Comme les tests unitaires utilisent l’interface de l’unité à tester, ils
amènent le développeur à réfléchir à l’utilisation de cette interface
tôt dans l’implémentation
– Ils permettent aux développeurs de détecter tôt des cas aberrants
– En fournissant un degré de correction documenté, ils permettent
au développeur de modifier l’architecture du code en confiance
04/02/2023 89
Exemple de JUnit
class Money {
• Une classeint
private Money
fAmount;
private String fCurrency;
public Money(int amount, String currency) {
fAmount= amount;
fCurrency= currency;
}
04/02/2023 90
Premier Test avant d’implémenter simpleAdd
04/02/2023 91
Les cas de test
• Ecrire des classes quelconques
• Définir à l’intérieur un nombre quelconque de méthodes annotés @Test
• Pour vérifier les résultats attendus (écrire des oracles !), il faut appeler
une des nombreuses variantes de méthodes assertXXX() fournies
– assertTrue(String message, boolean test), assertFalse(…)
– assertEquals(…) : test d’égalité avec equals
– assertSame(…), assertNotSame(…) : tests d’égalité de référence
– assertNull(…), assertNotNull(…)
– Fail(…) : pour lever directement une AssertionFailedError
– Surcharge sur certaines méthodes pour les différentes types de base
assertTrue(!m12CHF.equals(null));
assertEquals(m12CHF, m12CHF);
assertEquals(m12CHF, new Money(12, "CHF"));
assertTrue(!m12CHF.equals(m14CHF));
}
04/02/2023 93
Fixture : contexte commun
• Code de mise en place dupliqué !
Money m12CHF= new Money(12, "CHF");
Money m14CHF= new Money(14, "CHF");
04/02/2023 95
Fixture au niveau de la classe
• @BeforeClass
– 1 seule annotation par classe
– Evaluée une seule fois pour la classe de test, avant tout autre
initialisation @Before
– Finalement équivalent à un constructeur…
• @AfterClass
– 1 seule annotation par classe aussi
– Evaluée une seule fois une fois tous les tests passés, après le dernier
@After
– Utile pour effectivement nettoyer un environnement (fermeture
de fichier, effet de bord de manière générale)
04/02/2023 96
Aspects méthodologiques
• Coder/tester, coder/tester…
• lancer les tests aussi souvent que possible
– aussi souvent que le compilateur !
• Commencer par écrire les tests sur les parties les plus critiques
– Ecrire les tests qui ont le meilleur retour sur investissement !
– Approche Extreme Programming
• Quand on ajoute des fonctionnalités, on écrit d’abord les tests
– Test-‐Driven Development…
• Si on se retrouve à déboguer à coup de System.out.println(), il vaut mieux écrire
un test à la place
• Quand on trouve un bug, écrire un test qui le caractérise
04/02/2023 97
De l’eXtreme Programming au Test-‐Driven
Development
• Qu’est-‐ce vraiment ?
– Livrer les fonctionnalités dont le logiciel a réellement besoin, pas celles que le
programmeur croît devoir fournir !
– Une évidence a priori
• Comment ?
– Ecrire du code client comme si le code à développer existait déjà et avait été
conçu en tout point pour nous faciliter la vie !
– Le code client, ce sont les tests !
– Modifier le code pour compiler les tests
– Implémenter le code au fur et à mesure
– Refactorer le tout pour rendre les choses toujours plus simples pour soi
– Ecrire un test, ecrire du code, refactorer…
• + Principe d’intégration continue
– pendant le développement, le programme marche toujours, peut être ne fait-‐il pas
tout ce qui est requis, mais ce qu’il fait, il le fait bien !
04/02/2023 98
TP : Tests unitaires avec JUnit
04/02/2023 99
Apache Ant
04/02/2023 100
Plan
• Concept de ANT
• Avantages & inconvénients
• Fichier de configuration : Build.xml
Concept de ANT
■ Séquenceur de travaux
■ Graphe de dépendance de « cibles »
■ Remplaçant de make
04/02/2023 102
Avantages & inconvénients
■ Avantages
■ Portable (path, séparateurs, commandes Unix et Win32)
■ Inconvénients
■ Verbeux (XML oblige)
■ Pas de DTD !
04/02/2023 103
Build.xml
■ Définit l’enchainement à suivre pour la construction d’un
projet
■ Un projet comporte des cibles (target)
■ Correspondant à des activités telles que la compilation,
l’installation, l’exécution, …
■ Chaque cible est composée de tâches (task)
■ exécutées en séquence (voir en //) quand la cible est exécutée
■ dépendance avec d’autres cibles
■ Ces cibles sont exécutées au préalable
■ Tâche ANT
■ Correspondent à des commandes usuelles (javac, jar, copy, …)
■ Ecrites en Java et portable quelque soit le SE
■ Built-in (fournis avec la distribution ANT) / Proprietaire
04/02/2023 104
Structure
build.xml:<project>
</project>
04/02/2023 105
Structure build.xml:
<property>
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="compile" name=" Typical ANT Build ">
<!-- [définitions de property ] -->
<property name="src.dir" value="./src"/>
<property name="build.dir" value="./build"/>
<property name="doc.dir" value="./doc"/>
<property name="apidoc.dir" value="${doc.dir}/api"/>
<property file="project.properties"/>
<property environment="env"/>
<property name="lib.dir" value="${env.LIBDIR}"/>
<!-- [définitions de path et patternset ] -->
<!-- [définitions de target ] -->
</project>
04/02/2023 106
Structure build.xml:
<path>
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="compile" name=" Typical ANT Build ">
<!-- [définitions de property ] -->
<!-- [définitions de path et patternset ] -->
<path id="project.classpath">
<pathelement path="${build.dir}"/>
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
04/02/2023 107
Structure build.xml:
<target>
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="compile" name=" Typical ANT Build ">
<!-- [définitions de property ] -->
<!-- [définitions de path et patternset ] -->
<!-- [définitions de target ] -->
<target name="init">
<mkdir dir="${build.dir}"/>
</target>
04/02/2023 108
Lancement de Ant
■ ant [options] [target [target2 [target3] ...]]
■ Options:
-help print this message
-projecthelp print project help information
-buildfile <file> use given build file (-file, -f)
-find [<file>] search for build.xml, or file, towards the root of the filesystem
-D<property>=<value> use value for given property
-propertyfile <file> load all properties from file (with -D taking precedence)
-version print the version information and exit
-quiet be extra quiet (-q)
-verbose be extra verbose
-debug print debugging information
-emacs produce logging information without adornments
-logfile <file> write logging output to given file (-l)
-logger <classname> the class that is to perform logging
-listener <classname> add an instance of classname as a project listener
-inputhandler <class> the class that will handle input requests
04/02/2023 109
Exemples de lancement
■ ant
■ ant clean
■ ant –f build4jonas322.xml
■ ant –Dpassword=toto
■ ant -listener org.apache.tools.ant.XmlLogger
04/02/2023 110
Exemple de sortie
Z:\dev\proj1>ant compile
Buildfile: build.xml
init:
[mkdir] Created dir: Z:\dev\proj1\build
compile:
[javac] Compiling 2 source files to Z:\dev\proj1\build
[javac] Z:\dev\proj1\src\hello\Hello.java:44: cannot resolve symbol
[javac] symbol : method length ()
[javac] location: class java.lang.String[]
[javac] int len = argv.length();
[javac] ^
[javac] 1 error
BUILD FAILED
file:Z:/dev/proj1/build.xml:49: Compile failed;
see the compiler error output for details.
Total time: 6 seconds
04/02/2023 111
Ordre d’exécution des cibles
04/02/2023 112
Les tâches
■ Built-in
■ Optional
■ Requière des bibliothèques Java supplémentaires ou des
outils externes (csc, vss, …)
■ Peuvent être disponibles que sur une plate-forme
particulière
■ Propriétaire
■ Ajoute pour les besoins du projet (jcrmic, apdutool …)
04/02/2023 113
Quelques tâches supplémentaires
■ Chargement de propriétés
■ LoadFile, LoadProperties, XmlProperty, EchoProperties
■ Interaction utilisateur
■ Echo, Input, Sound, Splash
■ Structures de contrôle
■ Condition, Available, Parallel, Sequential, Waitfor, Sleep, Fail, Ant,
Antcall, MacroDef, Script (JavaScript, PerlScript, VBScript, Jython ,
…)
■ Pas de boucle !
■ Compilation/Génération
■ Javac, Javah, Rmic, Style, EjbJar, Jspc, ANTLR, JavaCC, …
■ .NET (csc, vbc, jsharp,Ilasm, Ildasm, WsdlToDotnet,), …
■ Patch
■ Source code management
■ CVS, VSS, ClearCase, Perforce
04/02/2023 114
Quelques tâches supplémentaires
■ Test
■ Junit, Cactus (formally J2EEUnit)
■ Documentation
■ Javadoc, JUnit reporting, Mail / MimeMail, Stylebook,
■ Package (Emballage)
■ Jar, Manifest, SignJar, GenKey, War, Ear, …
■ Zip, BZip2, War, Tar, Cab, Rpm …
■ Exécution
■ Java, Exec, SQL
■ Déploiement
■ Copy, Move, Chmod, Mkdir, Attrib
■ Unwar, unzip, unjar, untar, …
■ Checksum
■ FTP, Telnet, Get, Scp, Sshexec
04/02/2023 115
Ce qu’on a couvert
• Implémentation de ANT
• Séquencement et automatisation des instructions.
04/02/2023 116
Automatisation des
tests d'intégration
04/02/2023 117
Plan
04/02/2023 118
Stratégies pour le test d’intégration
Tests d’intégration
• tests effectués pour montrer des défauts dans les interfaces et interactions
de composants ou systèmes intégrés.
04/02/2023 119
Stratégies pour le test d’intégration
Particularités
• Plus précisément, les tests d’intégration testent
• Les interfaces entre les composants (tests 2 à 2)
• Les interactions entre différentes parties d’un système (par exemple
le système d’exploitation)
• La communication technique entre applications
• Le comportement sur incident
• Quelques éléments d’exploitabilité, de sécurité
EAI Synapse
Information system
04/02/2023 120
Stratégies pour le test d’intégration
Système 1 Système 2
Composant A
Composant 1
Composant B
Composant 2
Composant C
04/02/2023 121
Stratégies pour le test d’intégration
Particularités
• Le test d’intégration est souvent mené après livraison d’un ou plusieurs composants ou
systèmes par un sous-traitant ou fournisseur
04/02/2023 122
Stratégies pour le test d’intégration
Composant D Composant H
04/02/2023 123
Stratégies pour le test d’intégration
Composant A Composant B
Composant D Composant H
04/02/2023 124
Stratégies pour le test d’intégration
Composant E
Composant A Composant B
Composant D Composant H
04/02/2023 125
Ascendant contre descendant
• Avantages du descendant
• Les composants testés de plus haut niveau constituent
une maquette de l'application
• Désavantages du descendant
• Le composant utilisateur peut ne pas traiter tous les cas
du composant utilisé
• Dans le test d'un module de bas niveau il peut être
difficile
• D'imaginer les entrées de haut niveau
• De récupérer les résultats
04/02/2023 126
Intégration continue
www.ranorex.com
04/02/2023 127
Intégration continue
Prérequis
• Le code source doit être partagé (en utilisant des logiciels de gestion de versions tels que
CVS, Subversion, git, Mercurial, etc)
• Les développeurs intègrent (commit) quotidiennement (au moins) leurs modifications
• Des tests d'intégration sont développés pour valider l'application (avec JUnit par exemple)
• Il faut un outil d'intégration continue tel que CruiseControl ou Jenkins (anciennement
Hudson) pour le langage Java par exemple
04/02/2023 128
Intégration continue
Avantages
• les problèmes d'intégration sont détectés et réparés de façon continue, évitant les
problèmes de dernière minute
• une version est toujours disponible pour un test, une démonstration ou une
distribution
04/02/2023 129
Intégration continue
Pratiques
04/02/2023 130
Étape 1 : mise à jour des sources
Étape 2 : détection de la mise à jour
Étape 3 : récupération des sources
Étape 4 : construction et tests release
Étape 5 : livraison de la release
Étape 6 : publication du rapport
Outils
TP – Intégration continue
04/02/2023 138
Ce qu’on a couvert
04/02/2023 139
Tests de validation
Plan
• Introduction
• Typologie des tests de validation
04/02/2023 141
Introduction
• Rechercher les erreurs de réalisation par rapport a la spécification
• Test boite blanche
• Graphe causes/effets ou partitions en classes d’équivalence
• + Analyse aux bornes
• + La méthode intuitive
• Taux de couverture = % couvert des spécifications
04/02/2023 142
Tests de validation
• Test du volume : tester les capacités du logiciel a gérer le
maximum du volume d'informations prévu,
• Test du "stress" : tester les capacités du logiciel a gérer les
pointes d'occupance ou les cadences maximales prévues,
04/02/2023 143
Tests de validation
• Test de l'ergonomie : l'utilisation du logiciel est-elle :
• Adaptée aux connaissances de l'utilisateur final ?
• Les sorties sont-elles compréhensibles ?
• Les messages d'erreurs sont-ils compréhensibles ?
• Les conventions, syntaxes, abréviations, styles sont-ils
uniformes dans tous les dialogues ?
• La quantité d'options est-elle excessive ?
• Toutes les entrées sont-elles acquittées aussitôt ?
• Le système est-il humainement facilement utilisable ?
04/02/2023 144
Tests de validation
• Test de sécurité
• Test de performance : test des performances spécifiées
• Test de stockage : test des débordements possibles de la
mémoire de masse,
• Test de configuration : lorsque le logiciel doit pouvoir s’exécuter
sur différents types de matériels, chaque configuration doit être
testée,
• Test de la compatibilité : lors d'une réutilisation, test des
portages,
04/02/2023 145
Tests de validation
• Test d'installation : test des procédures d'installation,
• Test de fiabilité : test des performances spécifiées en matière de
fiabilité,
• Test des fonctions de correction d'erreur,
• Test de la qualité des fonctions de maintenance,
• Test de la documentation qui peut être operée par inspection,
• Test des procédures manuelles ou automatiques de test.
04/02/2023 146
Ce qu’on a couvert
• Concept des tests de validation
• Différents aspects des test de validation.
04/02/2023 147
Recette
Plan
• Principe de la recette
• Cycle de vie du logiciel
• cahier de recette
• Cycle de vie d'une anomalie
• Suivi des anomalies
• Modèle de fiche d'anomalie
• Evaluation de la recette
• Acteurs de la recette
• Contrôles & normes
• Critères utilisés
• Indicateurs de la recette
La Recette
Définition : La recette est une suite d'opérations permettant de montrer qu'un
produit, réalisé suivant un processus industriel défini et approuvé, est conforme
aux spécifications détaillées validées par le client (vision Contrat) et répond aux
exigences d'acceptation des utilisateurs (vision Métier).
• Cette étape est de la responsabilité du client et s’effectue généralement chez lui
• Elle est en principe bornée contractuellement (délais et critères)
• Le client peut mettre à disposition du développeur un cahier de test de recette
pour détecter de manière anticipée les anomalies de recette
• Démarre à la livraison du produit.
• Se concrétise par la signature du Procès Verbal de fin de Recette
• Garantie (ou passage en TMA) : est en général déclenchée à partir de la
signature du Procès Verbal de fin de Recette
04/02/2023 151
Le cycle de vie du logiciel
Spécification
Conception
Paramétrage
Développement
Recette
04/02/2023 152
Trois phases s’enchaînent
• La préparation des jeux d’essais
Conception générale des jeux d’essais
Conception détaillée des jeux d’essais
Valorisation des jeux d’essais
• La recevabilité
Contrôle de la livraison
• La qualification
Tests fonctionnels
Tests techniques
Procès verbal de recette
Période de garantie
04/02/2023 153
La conception générale
des jeux d’essais
• Identification des cas fonctionnels
• Constitution d’une matrice de découverte
• Recherche des critères de variance
• Choix de cas significatifs à retenir pour les tests
04/02/2023 154
La conception détaillée
des jeux d’essais
• Analyse fine des cas fonctionnels
• Constitution de scènes
• Détermination de l’ensemble des traitements à effectuer
• Choix des données à utiliser
• Assemblage des scènes : les scénarios
• Production des plans de tests formalisés
04/02/2023 155
La qualification fonctionnelle
• Vérification du bon et correct fonctionnement du système livré
relativement aux exigences fonctionnelles prédéfinies
• Des utilisateurs exécutent les essais dans l’ordre des plans de
tests
04/02/2023 156
La qualification technique
• Vérification, sur l’environnement technique cible, du futur
système et des performances atteintes
• Des experts d’exploitation et du réseau effectuent des contrôles
relativement aux exigences techniques prédéfinies
04/02/2023 157
-tests
• Contrôle de recevabilité
• Contrôles de conformité
• recette par lot
• recette par logiciel
• recette du système
• Contrôle d’intégration
• recette d’intégration
procès verbal provisoire (de recette)
04/02/2023 158
-tests
• Contrôle de recevabilité
• Vérifications dans l’environnement réel :
• restreint, mono-établissement
• complet, mono-établissement
• complet, multi-établissement
procès verbal définitif (de recette)
04/02/2023 159
Le cahier de recette
1 Conditions de déroulement
Environnement
Moyens
2 Procédures de contrôle
Définition des standards de référence
Plans de tests
Confection des jeux d’essais
Traitement des résultats
3 Traitement des anomalies et incidents
Procédure incident
Fiche d’anomalie
04/02/2023 160
Cycle de vie d’une anomalie
04/02/2023 161
Suivi des anomalies
• Caractéristiques d’une anomalie
• Référence du projet
• Référence anomalie
• Environnement
• Description
• Information et suivi
04/02/2023 162
Modèle de fiche d’anomalie
04/02/2023 164
Intérêt de la recette
• Pourquoi faire une recette alors que le fournisseur (la
maîtrise d’œuvre) a déjà réalisé des campagnes d'essais au
niveau unitaire et au niveau intégration?
• En fait les essais réalisés jusque-là ont été des tests que
l'on peut qualifier de « techniques ». Il importe maintenant
de réceptionner tous les livrables du projet (logiciel,
documentation et prestations associées).
• Pour cela il va falloir procéder à des tests « métiers »
réalisés par les utilisateurs du futur système afin de vérifier
que les exigences formulées par le client (la maîtrise
d'ouvrage) sont bien satisfaites avec le niveau de qualité
requis.
Accord de réceptabilité
• Les processus
• Concevoir et réaliser un produit logiciel représente une
partie importante des activités d'ingénierie. Toutefois,
lorsque le nombre de sites à installer est important, il ne
faut pas négliger de maîtriser l'installation puis la diffusion
d'un produit logiciel. La mise sous assurance qualité de ces
activités doit alors s'exercer dans le temps et dans l'espace.
Les impacts ne seront pas de la même nature pour gérer
cinq, dix ou cent sites ou plus. Par ailleurs, les activités
d'installation et de diffusion concernent non seulement la
première mise en place du système logiciel, mais elles
devront être intégralement reprises et supportées dans le
processus de maintenance
Test du déploiement de la solution
• L'installation
• Tout d'abord une installation ne peut intervenir que sur un produit
logiciel qui a fait l'objet d'une recette satisfaisante, c'est-à-dire pour
lequel il ne reste plus aucune anomalie bloquante pour les
utilisateurs. Sinon la mise en production doit être
systématiquement refusée.
• Ensuite, l'identification des éléments composant la configuration
(logiciels, données, procédures, documentation) sera réalisée. Pour
les tâches d'identification des composants on se reportera a La
gestion de configuration.
• Toutes les opérations d'une installation doivent être effectuées
sans risque d’erreurs. Une installation comporte des travaux
entièrement automatiques et des travaux manuels .
Test du déploiement de la solution
• Les livrables
• Dossier d’installation
Il regroupe toutes les informations
nécessaire a l’installation du logiciel, La
liste des tâches ainsi que l’ordre
d’exécution , les ressources …
La Maintenance
• Les processus
04/02/2023 189
Evaluation de la recette (suite)
• Est-ce que les corrections font apparaître de nouvelles anomalies ?
• Les tests de non régression ont-ils été faits ?
• Les documents de conception sont-ils à jour ?
• Les documents de développement et de paramétrage sont-ils à
jour ?
• Les tests techniques ont-ils satisfait les exigences techniques ?
• Reste-il des essais complémentaires à effectuer ?
• Le procès-verbal de recette a-t-il été établi sans réserves ?
04/02/2023 190
Normes
Contrôles et essais ISO 9001 § 4.10
Maîtrise des équipements de contrôle et d’essai ISO 9001 § 4.11
Tests et validation ISO 9000-3 § 5.7
Mesures ISO 9000-4 § 6.4
Fourniture et achèvement ISO 12207 § 5.2.7
Essais de qualification du logiciel ISO 12207 § 5.3.9
Essais de qualification du système ISO 12207 § 5.3.11
Assistance à l’acceptation du logiciel ISO 12207 § 5.3.13
Processus de vérification ISO 12207 § 6.4
Vérification de l’intégration ISO 12207 § 6.4.2.6
Vérification de la documentation ISO 12207 § 6.4.2.7
Processus de validation ISO 12207 § 6.5
Processus de revue conjointe ISO 12207 § 6.6
04/02/2023 193
Pilotage de la recette par des KPIs
• La recette doit être pilotée et suivie par différents indicateurs.
• KPI: Key Performance Indicators
• Ces indicateurs permettent de suivre la qualité et efficacité des
tests réalisés.
04/02/2023 195
Pilotage de la recette par des KPIs
KPI Type Objectif
Nombre d’écarts détectés Volume <0, 1 anomalie par journée
par niveau de criticité, opérationnelle (conception,
urgence, type construction)
Nombre d’écarts détectés Efficacité des tests <10 anomalies par journée
par journée de test de tests
>3 anomalies par journée
de test
% de cas de tests exécutés Taux de couverture des 90% des cas de test choisis
% des exigences vérifiées / tests réalisés
validées 80% des exigences vérifiées
et validées.
Qualité des corrections Nombre d’écarts reouverts 0 écart réouvert après
après clôture correction
Vitesse de résolution Durée de vie moyenne des N/A
écarts par niveau de
criticité, urgence, type
04/02/2023 196
Ce qu’on a couvert
• Principe des tests de recette.
• Cycle de vie des anomalies.
• Indicateurs de pilotage des recettes.
04/02/2023 197
Maturité des processus
de tests
plan
• Introduction
• Principe du TPI
• REX de mise en œuvre d'une étude de maturité
Introduction
• ENJEUX :
Améliorer la qualité des pratiques et
des livrables des activités de test
• OBJECTIFS :
04/02/2023 200
Qu’est-ce que TPI Next ® ?
• Historique :
– Créé par Sogeti NL en 1998
04/02/2023 201
Les principes
16 secteurs clés
Ils couvrent les activités du test selon plusieurs axes :
✓ Organisation ✓ Mise en œuvre
✓ Outils et méthodologie ✓ RH
3 niveaux de maturité
Contrôlé → « Doing the right things »
Efficient → « Doing things the right way »
Optimisé → « Continuously adapting to ever-changing circumstances »
04/02/2023 202
Les 16 secteurs clés
Catégorie # Secteur clé
3 Stratégie de test
5 Communication
6 Reporting
7 Gestion du processus de test
Mise 8 Estimations et planification
en 9 Métriques
œuvre 10 Gestion des anomalies
11 Gestion du patrimoine de test
14 Conception des cas de test
12 Méthodologie
Outils et
15 Outils de test
méthodo
16 Environnement de test
1 Implication des acteurs projet dans les processus de test
Degré de participation de l'équipe de test dans la
Organisation 2
gestion globale du projet
4 Fonctionnement des activités de tests (équipes et
procédures)
RH 13 Compétence de l'équipe de test
04/02/2023 203
Exemple de restitution TPI® Next
# Secteurclé Init. Contrôlé Efficient Optimisé
Implication des acteurs projet dans les
1
processus de test
Degré de participation de l'équipe de test dans
2
la gestion globale du projet
3 Stratégie de test
Fonctionnement des activités de tests (équipes
4
et procédures)
5 Communication
6 Reporting
8 Estimations et planification
9 Métriques
12 Sommaire
15 Outils de test
16 Environnement de test
REX de mise en œuvre
d’une étude de maturité
04/02/2023 205
Enjeux et objectifs de l’étude de
maturité
• La direction YYY d’un grand groupe de l’assurance engage une réflexion
sur la professionnalisation du métier de l’homologation.
04/02/2023 206
Déroulement de l’étude
SI Historique
Projet de Qualif.
Réglementaire Contrats & refonte produit
Internet
/ Transverses Prestations
• Calendrier :
Déc. 2019 Jan. 2020 Fév. 2020
04/02/2023 208
Présentation du rapport de l’étude de maturité
➢ Démarche
➢ Déroulement de l’étude
ÉTAT DES LIEUX
➢ Préconisations détaillés
PLAN DE MISE EN ŒUVRE
04/02/2023 209
Exemple : bilan de la maturité des process
04/02/2023 210
REX : points forts et limites de TPI® Next
• POINTS FORTS :
• Une couverture exhaustive des process de qualification (selon TMAP)
• Un cadre d’interview structuré
• Des questions pouvant s’adapter à un large panel de profils Un
questionnaire aux vertus didactiques
• LIMITES & POINTS DE VIGILANCE :
• Modèle très riche, orienté TMAP → Adapter le questionnaire au contexte
(ex: terminologie, profils) et au cadre de référence
• Questionnaire pénible (~150 questions) → Alléger le
questionnaire ou réaliser l’interview en plusieurs fois
• Un côté intrusif → Expliquer la démarche / rassurer
• Non adapté aux projets agiles
• Ne couvre pas la qualité des livrables / la mise en œuvre
04/02/2023 211
Ce qu’on a couvert
04/02/2023 215
Le CMMI et les tests
• Le modèle CMMI couvre les tests avec 3 domaines :
• PI (Product Integration)
• VER (Verification)
• VAL (Validation)
• Le CMM formule des exigences bien compréhensibles :
1. Se préparer à la vérification/intégration/validation
• Choisir les produits à vérifier-valider
• Définir la séquence d’intégration
• Assurer la compatibilité des interfaces
• Etablir l’environnement
• Établir les procédures et critères
2. Vérifier / assembler / valider le produit ou les composants de produit
• Etablir les plans de tests
• Réaliser la vérification / intégration / validation
• Analyser les résultats
04/02/2023 216
Principe du TMMi
• Test Maturity Model integration
• un modèle pour rentabiliser une organisation de test et afficher
son niveau.
• 5 niveaux de maturité.
04/02/2023 217
Pourquoi choisir TMMi?
04/02/2023 219
Car il fait partie de l’« état de l’art »
04/02/2023 220
Car il se distingue des autres modèles
• Il est disponible pour tous, ainsi que ses composants et ses résultats
04/02/2023 221
En quoi consiste le
TMMi?
04/02/2023 222
3 éléments principaux
04/02/2023 223
des parties prenantes et des résultats
La Fondation publie la liste des organismes accrédités, des
évaluateurs et des organisations certifiées
04/02/2023 224
Les 5 niveaux de TMMi
04/02/2023 225
Les 5 niveaux TMMi
•Tests conçus et réalisés après les phases de codage, Prévention des défauts
tests, (
•Création d’une phase spécifique aux tests,
(3) Défini
documentée et structurée, Test non-fonctionnel
(1)
Initial
04/02/2023 228
Les 5 niveaux TMMi
Niveau 3 : Intégration
•Intégration de la phase de tests dans le processus de
production logicielle, (5) En Optimisation
enregistrés,
•Les anomalies et corrections associées sont
(2) Géré
priorisées. Politique et Stratégie de
test Gestion
(1)
Initial
04/02/2023 229
Les 5 niveaux TMMi
Niveau 5 : Optimisation
•Les coûts de tests sont identifiés, leur efficacité y est
associée, (5) En Optimisation
•Des outils de tests sont utilisés, ils sont régulièrement Prévention des défauts
évalués et maintenus,
•Les processus de tests sont audités, leur optimisation (4) Mesuré
est constante, Mesure du test
(2) Géré
Politique et Stratégie de
test Gestion
(1)
Initial
04/02/2023 230
Comment évaluer son
niveau de TMMi?
04/02/2023 231
Méthode informelle
Sans méthode ni évaluateur agréé
04/02/2023 232
Méthode informelle
Avec une méthode et un évaluateur agréés
3.4-Non-functional Testing
3.1-Test Organisation
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Fully Achieved Largely Achieved Partially/Not Achieved Not Applicable/Not Rateable
04/02/2023 233
Méthode informelle
Des résultats précis et exploitables pour une amélioration
4.3-Advanced Reviews
4.2-Product Quality Evaluation
96% de réalisation du 4.1-Test Measurement
3.5-Peer Reviews
niveau 2 3.4-Non-functional Testing
3.3-Test Life Cycle and Integration
92% de réalisation du 3.2-Test Training Programme
niveau 3 (à l’exclustion du 3.1-Test Organisation
2.5-Test Environments
domaine de processus Test 2.4-Test Design and Execution
Non-Fonctionnel) 2.3-Test Monitoring and Control
2.2-Test Planning
2.1-Test Policy and Strategy
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
04/02/2023 234
Méthode formelle
Avec une méthode, un évaluateur et un évaluateur directeur
agréés
04/02/2023 235
La valeur ajoutée du TMMI selon votre profil
Différents intérêts
04/02/2023 236
Maturité des processus de tests des
organisations
TMMi : Un modèle pour rentabiliser et optimiser votre organisation de
test. Il permet d’afficher et comparer votre maturité en test avec des
organisations semblables à la vôtre, ici et ailleurs.
TPI-Next : Modèle de Sogeti (grande firme de consultation) qui consiste
en 16 domaines clés et 4 niveaux de maturité.
CTP : Est principalement un modèle léger de référence de contenu basé
sur 12 processus de tests critiques.
STEP : Est aussi un modèle de référence de contenu découpant les
phases de tests en 3 niveaux principaux (planification, acquisition,
mesure).
04/02/2023 238
Ce qu’on a couvert
• Principe de maturité des tests d’un organisme.
• Modèles et référentiels à suivre.
• Une bonne organisation et déploiement des tests permet de
fournir un point de référence et un annuaire de confiance aux
clients.
04/02/2023 239
Conclusion
Objectifs de la formation
▪ Découvrir les enjeux du test et les référentiels en vigueur
▪ Cadrer et mettre en oeuvre une démarche de test
▪ Comprendre le principe des tests unitaires et la notion de couverture
structurelle
▪ Découvrir le processus de tests d'intégration
▪ Organiser la validation fonctionnelle et faire un reporting des résultats
04/02/2023 241
Plan de la formation
1) Introduction au test logiciel
2) Stratégie & plan de tests
3) Automatisation des test unitaires
4) xUnit
5) Apache ANT
6) Automatisation des tests d'intégration
7) Tests de validation
8) Recette
9) Maturité des processus de tests
10) Maturité des tests avec TMMI/CMMI
04/02/2023 242