Professional Documents
Culture Documents
Fabrice Bouquet
JDEV 2013
5 septembre 2013
INRIA / CNRS
Universit de Franche-Comt
Fabrice Bouquet
Test
1 / 59
Plan
Test
Test Structurel
Test fonctionnel
Synthse
Fabrice Bouquet
Test
2 / 59
Plan
Test
Introduction
Dans les faits
Dans le cycle de vie
Bilan
Test Structurel
Principe
Couverture
Bilan
Fabrice Bouquet
Test fonctionnel
Exemple
Comment ?
Calcul de donnes de tests
Principe
Analyse partitionnelle et
test aux limites
Approche combinatoire
Test alatoire/statistique
Synthse
Test
3 / 59
correct
I Vrification symbolique : Run-time checking, Excution symbolique
I Vrification formelle : Preuve ou model-checking dun modle formel,
Fabrice Bouquet
Test
4 / 59
Pourquoi tester
Motivation
I Ariane 5, Carte puce en Allemagne, Rseau Orange...
I
Test
5 / 59
Test ?
IEEE (Standard Glossary of Software Engineering Terminology)
"Le test est lexcution ou lvaluation dun systme ou dun composant par des
moyens automatiques ou manuels, pour vrifier quil rpond ses spcifications
ou identifier les diffrences entre les rsultats attendus et les rsultats obtenus".
G. Myers (The Art of Software testing)
"Tester, cest excuter le programme dans lintention dy trouver des anomalies
ou des dfauts".
Edsgar W. Dijkstra. Notes on structured programming. Academic Press, 1972
"Tester peut rvler la prsence dune anomalie mais jamais son absence".
Fabrice Bouquet
Test
6 / 59
Plan
Test
Introduction
Dans les faits
Dans le cycle de vie
Bilan
Test Structurel
Principe
Couverture
Bilan
Fabrice Bouquet
Test fonctionnel
Exemple
Comment ?
Calcul de donnes de tests
Principe
Analyse partitionnelle et
test aux limites
Approche combinatoire
Test alatoire/statistique
Synthse
Test
7 / 59
Ralit du test
Le test est une activit de validation du logiciel
Est-ce que le logiciel a t dvelopp correctement en fonction des diffrentes
exigences ?
Test est une activit pas trs populaire
Difficults dordre psychologique ou culturel :
I Le dveloppement est constructif car on cherche tablir des rsultats
corrects
I Le test est destructif car un bon test est un test qui trouve une anomalie
Test
8 / 59
agile/composant.
I Fournir une couverture automatise de test automatique pour permettre
(traditionnel ou cloud).
1.
Source IDC European Services, Enterprise Application Testing Survey, March 2011
Fabrice Bouquet
Test
9 / 59
Plan
Test
Introduction
Dans les faits
Dans le cycle de vie
Bilan
Test Structurel
Principe
Couverture
Bilan
Fabrice Bouquet
Test fonctionnel
Exemple
Comment ?
Calcul de donnes de tests
Principe
Analyse partitionnelle et
test aux limites
Approche combinatoire
Test alatoire/statistique
Synthse
Test
10 / 59
Besoin%client%
Test%daccepta)on%
Exigences%
Test%Systme%
Concep)on%
Test%dintgra)on%
Code%
Test%unitaire%
Fabrice Bouquet
Test
11 / 59
Cycle de dveloppement en V
Fabrice Bouquet
Test
12 / 59
Mthode Scrum
Fabrice Bouquet
Test
13 / 59
Cot
Etape(du(projet(
Fabrice Bouquet
Mise(en( Mise(en(
Prod.(2( Prod.(3(
Mise(en(
Prod.(n(
Test(
Cot(
Mise(en(
Prod.(1(
Concep'on(
Dveloppement(
Maintenance(
Test(
Dveloppement(
Concep'on(
Cot(
Mise(en(
produc'on(
Etape(du(projet(
Test
14 / 59
Dbut&
Ajout&(test)&
Refactoring&
Excu/on&
Excu/on&
Fabrice Bouquet
Codage&
Test
15 / 59
Plan
Test
Introduction
Dans les faits
Dans le cycle de vie
Bilan
Test Structurel
Principe
Couverture
Bilan
Fabrice Bouquet
Test fonctionnel
Exemple
Comment ?
Calcul de donnes de tests
Principe
Analyse partitionnelle et
test aux limites
Approche combinatoire
Test alatoire/statistique
Synthse
Test
16 / 59
Acteurs du test
Deux situations :
1. Je teste un programme que jai crit
2. Je teste un programme que quelquun dautre a crit
Trois questions :
1. Comment choisir la technique de test ?
boite blanche ou boite noire ?
2. Comment obtenir le rsultat attendu ?
problme de loracle du test
3. Comment savoir quand arrter la phase de test ?
problme de larrt
Fabrice Bouquet
Test
17 / 59
Test dynamique
Cas(de(
tests(
Concep'on(
des(tests(
Donnes(
de(tests(
Prpara'on(
des(donnes(
de(tests(
Rsultats(
de(tests(
Excu'on(du(
programme(
avec(tests(
Fabrice Bouquet
Test
Rapport(
de(tests(
Comparaison(
rsultats(
18 / 59
Boite
blanche
Boite
noire
Niveau
daccessibilit
ergonomie
sret
scurit
Fabrice Bouquet
Test
19 / 59
Plan
Test
Introduction
Dans les faits
Dans le cycle de vie
Bilan
Test Structurel
Principe
Couverture
Bilan
Fabrice Bouquet
Test fonctionnel
Exemple
Comment ?
Calcul de donnes de tests
Principe
Analyse partitionnelle et
test aux limites
Approche combinatoire
Test alatoire/statistique
Synthse
Test
20 / 59
j=1
Input : short i
short j, r ;
j = 1;
while ( i> 0 ) do
j = j * i;
i = i - 1;
i
i>0
C
j = i*j
i = i -1
j>1
if ( j > 1 ) then
r = j;
else if ( i < 0 ) then
r = 0;
else
r = 1;
return r;
R=j
i<0
r=0
r=1
return r
Fabrice Bouquet
Test
21 / 59
j=1
i
i>0
C
j = i*j
i = i -1
j>1
I Donnes de tests :
F
R=j
i<0
r=0
r=1
return r
Fabrice Bouquet
Test
22 / 59
j=1
i
i>0
C
j = i*j
i = i -1
j>1
I Donnes de tests :
I DT1 : [i=1] A B C B D F H I
E
R=j
i<0
r=0
r=1
return r
Fabrice Bouquet
Test
22 / 59
j=1
i
i>0
C
j = i*j
i = i -1
I Donnes de tests :
j>1
I DT1 : [i=1] A B C B D F H I
I DT2 : [i=-1] A B D F G I
E
R=j
i<0
r=0
r=1
return r
Fabrice Bouquet
Test
22 / 59
j=1
i
i>0
I Donnes de tests :
j = i*j
i = i -1
j>1
I DT1 : [i=1] A B C B D F H I
I DT2 : [i=-1] A B D F G I
I DT3 : [i=2] A B C B C B D E I
R=j
i<0
r=0
r=1
return r
Fabrice Bouquet
Test
22 / 59
j=1
i
i>0
I Donnes de tests :
j = i*j
i = i -1
j>1
I DT1 : [i=1] A B C B D F H I
I DT2 : [i=-1] A B D F G I
I DT3 : [i=2] A B C B C B D E I
R=j
i<0
r=0
r=1
return r
Fabrice Bouquet
Test
23 / 59
j=1
I Nombre de McCabe (G ) :
i>0
j = i*j
i = i -1
I (G ) = 11 - 9 + 2 = 4
j>1
I DT1 : [i=1] A B C B D F H I
I DT2 : [i=-1] A B D F G I
E
R=j
i<0
I DT3 : [i=2] A B C B C B D E I
i
I DT4 : [i=0] A B D F H I
r=0
r=1
return r
Fabrice Bouquet
Test
24 / 59
Fabrice Bouquet
Test
25 / 59
Plan
Test
Introduction
Dans les faits
Dans le cycle de vie
Bilan
Test Structurel
Principe
Couverture
Bilan
Fabrice Bouquet
Test fonctionnel
Exemple
Comment ?
Calcul de donnes de tests
Principe
Analyse partitionnelle et
test aux limites
Approche combinatoire
Test alatoire/statistique
Synthse
Test
26 / 59
Bilan
Bonne Pratique
I Une classe de code / Une classe de tests
I Test et classe dans le mme "package"
I Les cas nominaux
I Les cas tordus / catastrophes
Mauvaise Pratique
I Rpertoire(s) mlangeant les sources et les tests
I Tests triviaux
I Effets de bord (ordre des tests, tats dgrads)
Fabrice Bouquet
Test
27 / 59
Bilan
En rsum, crire des tests permet :
I Analyse fine ;
I Rduction des bogues ;
I Non-rgression du code (refactoring) ;
I Documentation de votre code ;
I Dveloppement plus serein ;
I Efficacit.
Fabrice Bouquet
Test
28 / 59
Jenkins / Cobertura
Fabrice Bouquet
Test
29 / 59
Plan
Test
Introduction
Dans les faits
Dans le cycle de vie
Bilan
Test Structurel
Principe
Couverture
Bilan
Fabrice Bouquet
Test fonctionnel
Exemple
Comment ?
Calcul de donnes de tests
Principe
Analyse partitionnelle et
test aux limites
Approche combinatoire
Test alatoire/statistique
Synthse
Test
30 / 59
Fabrice Bouquet
Test
31 / 59
Cancel'
5 Cases : 10 tests
I Login (non) vide (2)
I Login (n) existe (pas) (2)
I Password (non) vide (2)
I Password et Verification (password rcrit) (ne) sont (pas) les mmes (2)
I Protocole http(s) (2)
Fabrice Bouquet
Test
31 / 59
Verica7on:' ******'
Register'
Cancel'
6 Cases : 13 tests
I Login (non) vide (2)
I Login (n) existe (pas) (2)
I Password (non) vide (2)
I Password et Verification (password rcrit) (ne) sont (pas) les mmes (2)
I Protocole http(s) (2)
I Vrifier qualit / Rsistance du password (1 par niveau) : poor, average,
good
Fabrice Bouquet
Test
31 / 59
Type'the'word:'
Quality(
Verica7on:' ******'
Register'
Cancel'
7 Cases : 15 tests
I Login (non) vide (2)
I Login (n) existe (pas) (2)
I Password (non) vide (2)
I Password et Verification (password rcrit) (ne) sont (pas) les mmes (2)
I Protocole http(s) (2)
I Vrifier qualit / Rsistance du password (3)
I Vrifier si enregistrement (non) humain (2)
Fabrice Bouquet
Test
31 / 59
Test fonctionnel
Dfinition
Le test fonctionnel vise examiner le comportement fonctionnel dun logiciel et
sa conformit avec la spcification ou les exigences du logiciel.
Trois questions sous-jacentes
I Comment slectionner des donnes de test (DT) ?
I Comment construire des cas de tests (CT) ?
I Comment savoir si le test russit ou choue ? (problme de loracle)
Fabrice Bouquet
Test
32 / 59
Test fonctionnel
Dfinition
Le test fonctionnel vise examiner le comportement fonctionnel dun logiciel et
sa conformit avec la spcification ou les exigences du logiciel.
Techniques de calcul des donnes de test
I Analyse partitionnelle des domaines des donnes dentre et test aux
limites
I Test combinatoire
I Gnration alatoire
Fabrice Bouquet
Test
32 / 59
Test fonctionnel
Dfinition
Le test fonctionnel vise examiner le comportement fonctionnel dun logiciel et
sa conformit avec la spcification ou les exigences du logiciel.
Techniques de gnration de cas de test
I Test partir de modles :
I
I
I
I Couverture (exigence)
I Test combinatoire
I Gnration alatoire
Fabrice Bouquet
Test
32 / 59
Plan
Test
Introduction
Dans les faits
Dans le cycle de vie
Bilan
Test Structurel
Principe
Couverture
Bilan
Fabrice Bouquet
Test fonctionnel
Exemple
Comment ?
Calcul de donnes de tests
Principe
Analyse partitionnelle et
test aux limites
Approche combinatoire
Test alatoire/statistique
Synthse
Test
33 / 59
Fabrice Bouquet
Test
34 / 59
Plan
Test
Introduction
Dans les faits
Dans le cycle de vie
Bilan
Test Structurel
Principe
Couverture
Bilan
Fabrice Bouquet
Test fonctionnel
Exemple
Comment ?
Calcul de donnes de tests
Principe
Analyse partitionnelle et
test aux limites
Approche combinatoire
Test alatoire/statistique
Synthse
Test
35 / 59
Analyse partitionnelle
Principe de lanalyse partitionnelle
Lanalyse partitionnelle est une technique mathmatique issue de lalgbre
linaire qui vise limiter le nombre de cas de tests.
Pour lanalyse partitionnelle, on ne considre plus lensemble des valeurs possibles, mais lensemble des classes de valeurs possibles (classes dquivalence).
Postulats de lanalyse partitionnelle
I le domaine des donnes dentre dune fonction se distinguent en classes
Ci , Cj .Ci 6= Cj Ci Cj =
I lunion des classes de valeurs recouvre lensemble du domaine des valeurs
S
( Ci = E )
Fabrice Bouquet
Test
36 / 59
Fabrice Bouquet
Test
37 / 59
Partitionnement
On considrera les comportements :
I o ltage est 0 (rez-de-chausse)
I o ltage est N (le dernier tage)
I o ltage est entre les 2 (intervalle de valeurs 1..(N 1))
Fabrice Bouquet
Test
37 / 59
Fabrice Bouquet
Test
38 / 59
et les 4 valeurs correspondant aux valeurs des limites le plus petit delta
possible
n 3..15 v1 = 3, v2 = 15, v3 = 2, v4 = 4, v5 = 14, v6 = 16
I si la variable appartient un ensemble ordonns de valeurs, on choisit le
Test
39 / 59
Fabrice Bouquet
Test
39 / 59
Test
40 / 59
Type'the'word:'
Quality(
Verica7on:' ******'
Register'
Cancel'
Variables du formulaire
I Login : vide, trs longue chaine (+256c), login existant, invalide login
I Password : vide, trs longue chaine, mme login, poor, average, good
I Password verification : diffrent du Password, identique
I Captcha : la bonne chaine, pas la bonne
Fabrice Bouquet
Test
41 / 59
Fabrice Bouquet
Test
42 / 59
Pour une variable xi , on considre les donnes de test DTxi = {di1 , . . . , din }.
Fabrice Bouquet
Test
43 / 59
Pour une variable xi , on considre les donnes de test DTxi = {di1 , . . . , din }.
Quen est-il lorsquil y a plusieurs variables en entre aux systmes ?
Fabrice Bouquet
Test
43 / 59
Pour une variable xi , on considre les donnes de test DTxi = {di1 , . . . , din }.
Quen est-il lorsquil y a plusieurs variables en entre aux systmes ?
Si on veut effectuer la mme approche pour n variables,
I on va construire le produit cartsien des donnes de test :
Pour viter cela, il faut travailler sur des classes dquivalence portant sur
lensemble des donnes dentre.
Fabrice Bouquet
Test
43 / 59
insuffisamment examin.
I Couvre lensemble des phases de test (unitaires, dintgration, de
conformit et de rgression).
Inconvnient
I Caractre parfois intuitif ou subjectif de la notion de limite
Fabrice Bouquet
Test
44 / 59
Plan
Test
Introduction
Dans les faits
Dans le cycle de vie
Bilan
Test Structurel
Principe
Couverture
Bilan
Fabrice Bouquet
Test fonctionnel
Exemple
Comment ?
Calcul de donnes de tests
Principe
Analyse partitionnelle et
test aux limites
Approche combinatoire
Test alatoire/statistique
Synthse
Test
45 / 59
Approche combinatoire
Avec 3 valeurs pour la liste droulante, ceci fait 212 3 = 12288 valeurs possibles.
Fabrice Bouquet
Test
46 / 59
Approche PairWise
Fabrice Bouquet
Test
47 / 59
Approche PairWise
Approche PairWise
Soient 4 variables reprsentant respectivement un systme dexploitation, un
type de rseau, une imprimante et un type dapplication bureautique. Chacune
possde 3 valeurs possibles. Ceci, nous donne :
I OS = {XP, Linux, MAC OSX}
I Rseau = {ATM, Wifi, Bluetooth}
I Imprimante = {HP35, Canon900, CanonEX}
I Application = {Word, Excel, Pwpoint}
Fabrice Bouquet
Test
48 / 59
Approche PairWise
Approche PairWise
Lensemble des combinaisons donne 81 possibilits alors que seulement 9 cas
suffisent pour couvrir toutes les paires. Ceci donne :
# Cas
Cas
Cas
Cas
Cas
Cas
Cas
Cas
Cas
Cas
1
2
3
4
5
6
7
8
9
OS
Rseau
Imprimante
Application
XP
XP
XP
Linux
Linux
Linux
Mac OS X
Mac OS X
Mac OS X
ATM
Bluetooth
Wifi
ATM
Bluetooth
Wifi
ATM
Bluetooth
Wifi
Canon-EX
Canon900
HP35
HP35
Canon-EX
Canon900
Canon900
HP35
Canon-EX
Pwpoint
Word
Excel
Word
Excel
Pwpoint
Excel
Pwpoint
Word
Fabrice Bouquet
Test
49 / 59
Avantage du PairWise :
I Permet la rduction du nombre de cas possibles (matrise de lexplosion
combinatoire)
Problme du Pairwise :
I Le choix de la combinaison de valeurs nest peut-tre pas celle qui dtecte
le bogue . . .
Rfrence
http://www.pairwise.org
Fabrice Bouquet
Test
50 / 59
Plan
Test
Introduction
Dans les faits
Dans le cycle de vie
Bilan
Test Structurel
Principe
Couverture
Bilan
Fabrice Bouquet
Test fonctionnel
Exemple
Comment ?
Calcul de donnes de tests
Principe
Analyse partitionnelle et
test aux limites
Approche combinatoire
Test alatoire/statistique
Synthse
Test
51 / 59
Le test alatoire
Principe
Il sagit dune approche base sur la gnration des tests dune manire probabiliste. Ainsi, on va utiliser une fonction (alatoire) de calcul, qui va slectionner
une valeur alatoire dans le domaine de la donne dentre.
Uniformit ou pas ?
Il faut ainsi faire et vrifier des hypothses duniformit sur les valeurs des
domaines, sinon il faut pouvoir tablir des lois statistiques sur le domaine, bases
sur les frquences dapparitions de certaines valeurs, vis--vis de la smantique
de la donne.
Exemple : utilisation dune loi de Gauss pour une donne reprsentant la
taille des individus.
Fabrice Bouquet
Test
52 / 59
Avantages :
I Processus peu coteux qui permet de gnrer les tests.
I Retire laspect subjectif du choix des DT par le valideur
Inconvnient :
I Leur qualit dpend du niveau des tests : plus le test est pouss, plus on
Fabrice Bouquet
Test
53 / 59
Fabrice Bouquet
Test
54 / 59
% couverture
objectif
Test dterministe
Test alatoire
Effort
Tendance :
I Evolution dans la dtection / leffort (le nombre de test produit).
I Les tudes montrent que le test statistique permet datteindre rapidement
Test
55 / 59
Plan
Test
Test Structurel
Test fonctionnel
Synthse
Fabrice Bouquet
Test
56 / 59
Plan de test
Questions pour le testeur :
I Comment construire des cas de tests ?
I Comment slectionner des donnes de test ?
I Comment savoir si le test russit ou choue ?
dobservation) ?
I Comment maintenir la stabilit des interfaces ?
I Livraison est-elle fonctionnelle ?
Fabrice Bouquet
Test
57 / 59
Outils
Conformiq,)SmartesGng,)
Test)opGmal,)BenderRBT),)
Praspel,)JML)
Tableur,)Doors,))
HP)ALM,)IBM)Rat.)
Requier.)Composer)
Artfacts)
de)Tests)
Exigences)
HP,)IBM,)salomeFTM))
Squash)TM,)Testlink)
Rfren3el)
de)Tests)
Tableur,)Sonar,))
Cobertura,)jenkins)
)
) Rapports)
Scripts)
de)Tests)
Anomalies)
Bugzlla,)Jira,)ManGs,)
)Tableur,)Redmine)
IBM)RFT,)Selenium,)
HP)QuickTestPro,)Sahi,)
XxUnit)
Fabrice Bouquet
Test
58 / 59
Questions
Source - http://model-based-testing.info
Fabrice Bouquet
Test
59 / 59