You are on page 1of 71

Test et cycle logiciel

Fabrice Bouquet
JDEV 2013
5 septembre 2013
INRIA / CNRS
Universit de Franche-Comt

Fabrice Bouquet

Test

1 / 59

Plan

Test

Test Structurel

Test fonctionnel

Calcul de donnes de tests

Synthse

Fabrice Bouquet

Test

2 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Introduction

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Introduction

Validation & Vrification


Qui/Pourquoi ?
I Validation : Est-ce que le logiciel ralise les fonctions attendues ?
I Vrification : Est-ce que le logiciel fonctionne correctement ?

Exemple de mthodes de V & V


I Test statique : Revue de code, de spcifications, de documents de design
I Test dynamique : Excuter le code pour sassurer dun fonctionnement

correct
I Vrification symbolique : Run-time checking, Excution symbolique
I Vrification formelle : Preuve ou model-checking dun modle formel,

raffinement et gnration de code

Fabrice Bouquet

Test

4 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Introduction

Pourquoi tester
Motivation
I Ariane 5, Carte puce en Allemagne, Rseau Orange...
I

Complexit des comportements

Erreur dans les spcifications, la conception, ou le programme

Dfaut (faute) dans le logiciel

Dfaillance (anomalie de fonctionnement) du programme


Quelques chiffres
I

Cot des bogues informatiques : 60 Milliards e/ an

22 Milliards conomiss si processus tests


Fabrice Bouquet

Test

5 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Introduction

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Dans les faits

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Dans les faits

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

Cependant, le test est une activit centrale :


I Cest un lment principal damlioration de la qualit logiciel
I Il peut reprsenter jusqu 60% du cot complet du logiciel :
I
I

1/3 durant le dveloppement du logiciel


2/3 durant la maintenance du logiciel
Fabrice Bouquet

Test

8 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Dans les faits

Test dans les technologies de linformation


Maturit fonction QA/Test : passer d ?une approche ad hoc vers une approche
rflchie et cohrente 1 :
Top 4 des points damlioration Europe de louest
I Choisir une mthodologie sintgrant dans un dveloppement

agile/composant.
I Fournir une couverture automatise de test automatique pour permettre

lagilit dans le test


I Plus se concentrer sur les aspects non-fonctionnels comme la

performance, la disponibilit, la scurit, etc


I Avoir une stratgie de test qui optimise lusage de services de tests

(traditionnel ou cloud).

1.

Source IDC European Services, Enterprise Application Testing Survey, March 2011
Fabrice Bouquet
Test

9 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Dans le cycle de vie

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Dans le cycle de vie

Dveloppement logiciel et Niveau de test

Besoin%client%

Test%daccepta)on%

Exigences%

Test%Systme%

Concep)on%

Test%dintgra)on%

Code%

Test%unitaire%

Fabrice Bouquet

Test

11 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Dans le cycle de vie

Cycle de dveloppement en V

Fabrice Bouquet

Test

12 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Dans le cycle de vie

Mthode Scrum

Fabrice Bouquet

Test

13 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Dans le cycle de vie

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Dans le cycle de vie

Dveloppement Guid par les Tests (TDD)


Dveloppement Dirig par les Tests
I Mthode de dveloppement dans les mthodes agiles
I Prconise lcriture des tests avant le dveloppement du code

Dbut&
Ajout&(test)&

Refactoring&

Excu/on&

Excu/on&

Fabrice Bouquet

Codage&

Test

15 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Bilan

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Bilan

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 Test Structurel Test fonctionnel Donnes Synthse


x . . . Bilan

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Bilan

Type de tests [J. Tretmans]


Niveau de dtail (situation dans le cycle de vie)
Bout en bout
systme
intgration
module
unitaire
fonctionnel
robustesse
performance

Boite
blanche

Boite
noire

Niveau
daccessibilit

ergonomie
sret
scurit

Caractristiques (ce que lon veut tester)

Fabrice Bouquet

Test

19 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Principe

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Couverture

Test structurel - Exemple


A

j=1

Algorithme 1: short prog3(i)


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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Couverture

Test structurel - Tous-les-nuds


A

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Couverture

Test structurel - Tous-les-nuds


A

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Couverture

Test structurel - Tous-les-nuds


A

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Couverture

Test structurel - Tous-les-nuds


A

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Couverture

Test structurel - Tous-les-arcs


A

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Couverture

Test structurel - Ts-chemins-indpendants


A

j=1

I Nombre de McCabe (G ) :

i>0

nbre darcs - nbre de nuds + 2


C

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Couverture

Test structurel hirarchie


Tous les chemins

Tous les DU-chemins


Tous les chemins indpendants

Tous les i-chemins


Toutes les utilisations

Toutes les dfinitions

Toutes les P-Utilisations

Tous les arcs (TER2)

Tous les nuds (TER1)

Fabrice Bouquet

Test

25 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Bilan

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Bilan

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Bilan

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.

= Si les tests sont crits au fur et mesure

Fabrice Bouquet

Test

28 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Bilan

Jenkins / Cobertura

Fabrice Bouquet

Test

29 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Exemple

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Exemple

Test fonctionnel - Exemple

Spcification : "Formulaire denregistrement pour un site web."

Fabrice Bouquet

Test

31 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Exemple

Test fonctionnel - Exemple


Spcification : "Formulaire denregistrement pour un site web."
Login:' !ouquet'
Password:' ******'
Verica7on:' ******'
Register'

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Exemple

Test fonctionnel - Exemple


Spcification : "Formulaire denregistrement pour un site web."
Login:' !ouquet'
Password:' ******'
Quality(

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Exemple

Test fonctionnel - Exemple


Spcification : "Formulaire denregistrement pour un site web."
Login:' !ouquet'
Password:' ******'

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 Test Structurel Test fonctionnel Donnes Synthse


x . . . Comment ?

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 Test Structurel Test fonctionnel Donnes Synthse


x . . . Comment ?

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 Test Structurel Test fonctionnel Donnes Synthse


x . . . Comment ?

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

Formels : Automate, B, Z, UML/OCL, SysML..


Contrats : Acsl, Eiffel, JML, Praspel, Spec#...
Schma / scnario : Logique, Exp. rgulire, Diag. de Seq....

I Couverture (exigence)
I Test combinatoire
I Gnration alatoire

Fabrice Bouquet

Test

32 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Principe

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Principe

Produire des donnes pour le test


Donnes de test = entres du programme
I La production de donnes de test est essentielle, car elle permet de

fournir les entres utilises pour tester le programme.


I La couverture exhaustive des entres dun programme ou dun systme

tester est trop complexe pour permettre une couverture exhaustive.


Techniques possibles
Diverses techniques vont permettre de slectionner des donnes de test pertinentes (susceptibles de dtecter des erreurs) :
I donnes (semi-)relles (benerator, jailer)
I analyse partitionnelle
I approche combinatoire
I slection alatoire

Fabrice Bouquet

Test

34 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

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

dquivalence : classes de valeurs valides, et classes de valeurs invalides


I les classes dquivalence sont mutuellement exclusives

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

Les classes dquivalence

Illustration des classes dquivalence Test dun ascenceur


On souhaite tester un ascenceur. Les fonctionnalits sont les suivantes :
I Il est born par un tage minimum : le rez-de-chausse, il ne descend

donc pas plus bas


I Il est born par un tage maximum : N, il ne monte donc pas plus haut

Fabrice Bouquet

Test

37 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

Les classes dquivalence


Illustration des classes dquivalence Test dun ascenceur
On souhaite tester un ascenceur. Les fonctionnalits sont les suivantes :
I Il est born par un tage minimum : le rez-de-chausse, il ne descend

donc pas plus bas


I Il est born par un tage maximum : N, il ne monte donc pas plus haut

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

Les classes dquivalence


Dfinition dune classe dquivalence
Une classe dquivalence correspond un ensemble de donnes de tests supposs
tester le mme comportement, cest--dire activer le mme dfaut.

Pour effectuer lanalyse partitionnelle, on utilise trois phases :


1 Pour chaque donne dentre, calcul de classes dquivalence sur les
domaines de valeurs,
2 Choix dun reprsentant de chaque classe dquivalence,
3 Composition par produit cartsien sur lensemble des donnes dentre
pour tablir les DT.

Fabrice Bouquet

Test

38 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

Le test aux limites


Principes
Le test aux limites est une technique permettant de choisir une valeur prcise
parmi une classe dquivalence donne.
Principe
On sintresse aux bornes des intervalles partitionnant les domaines des variables
dentres :
I pour chaque intervalle, on garde les 2 valeurs correspondant aux 2 limites,

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

premier, le second, lavant dernier et le dernier


n {7, 2, 3, 157, 200} v1 = 7, v2 = 2, v3 = 157, v4 = 200
Fabrice Bouquet

Test

39 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

Le test aux limites


Principes
Le test aux limites est une technique permettant de choisir une valeur prcise
parmi une classe dquivalence donne.
Principe
On sintresse aux bornes des intervalles partitionnant les domaines des variables
dentres :
I si une condition dentre spcifie un nombre de valeurs, dfinir les cas de

test partir du nombre minimum et maximum de valeurs, et des tests


pour des nombres de valeurs hors limites invalides.
Un fichier dentre contient 1-255 records,
produire un cas de test pour 0, 1, 255 et 256

Fabrice Bouquet

Test

39 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

Types de donnes aux limites


Les donnes dentre ne sont pas seulement des valeurs numriques :
caractres, boolens, images, son, . . . des objets.
Ces catgories peuvent, en gnral, se prter une analyse partitionnelle et
lexamen des conditions aux limites :
I True / False
I Fichier plein / Fichier vide
I Trame pleine / Trame vide
I Nuances de couleurs
I Plus grand / plus petit
I null, this, type hrit
I ...

En gnral, on essaie dans la mesure du possible de jouer sur une caractristique


numrique des donnes (taille de fichiers, dimensions dune image, etc.) ou de
viser des valeurs spcifiques (caractres non affichables, etc.).
Fabrice Bouquet

Test

40 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

Valeur limite sur lexemple


Login:' !ouquet'
Password:' ******'

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

Synthse sur lanalyse partitionnelle


I Lanalyse partitionnelle est une mthode qui vise diminuer le nombre de

cas de tests par calcul de classes dquivalence. Il est important dans la


ralisation du choix de classes dquivalence car sinon on risque de ne pas
rvler un dfaut.
I Le choix de conditions dentre aux limites est une heuristique solide de

choix de donnes dentre au sein des classes dquivalence. Mais cette


heuristique nest utilisable quen prsence dune relation dordre sur la
donne dentre considre.
I Le test aux limites produit la fois des cas de test nominaux (dans

lintervalle) et de robustesse (hors intervalle).

Fabrice Bouquet

Test

42 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

Synthse sur lanalyse partitionnelle

Pour une variable xi , on considre les donnes de test DTxi = {di1 , . . . , din }.

Fabrice Bouquet

Test

43 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

Synthse sur lanalyse partitionnelle

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

Synthse sur lanalyse partitionnelle

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 :

DTx1 DTx2 DTxn


I Risque est davoir un nombre de cas de test qui explose.

Pour viter cela, il faut travailler sur des classes dquivalence portant sur
lensemble des donnes dentre.

Fabrice Bouquet

Test

43 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Partition / Limite

valuation du test aux limites

Mthode de test trs productive en particulier dans les approches fonctionnelles.


I Le comportement du programme aux valeurs limites nest souvent pas ou

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

rend difficile la caractrisation de la couverture de test.

Fabrice Bouquet

Test

44 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Approche combinatoire

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Approche combinatoire

Approche combinatoire

Comment faire lorsque lon a des combinaisons de valeurs de domaines dentre


qui donne lieu une explosion combinatoire ?
Options dune boite de dialogue MS Word
On a 12 cases cocher et un menu droulant pouvant prendre 3 valeurs.

Avec 3 valeurs pour la liste droulante, ceci fait 212 3 = 12288 valeurs possibles.

Fabrice Bouquet

Test

46 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Approche combinatoire

Approche PairWise

Pour rduire la combinatoire entre lensemble des paramtres, on va chercher


tester un fragment des combinaisons de valeurs. Le choix des valeurs va tre
guid pour garantir que chaque combinaison de 2 variables est test.
Lide sous-jacente est que dans la majorit des fautes, elles sont dtectes par
des combinaisons de 2 valeurs de variables.

Fabrice Bouquet

Test

47 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Approche combinatoire

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Approche combinatoire

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Approche combinatoire

Approche PairWise Bilan

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Test alatoire/statistique

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Test alatoire/statistique

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

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Test alatoire/statistique

Synthse test alatoire

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

a de chance davoir choisi au moins un reprsentant parmi toutes les


classes dquivalence fonctionnelle ou structurelle du programme.
I Cette automatisation doit tre complt par un oracle, qui nest pas

toujours facile a tablir et encore moins de faon automatique.

Fabrice Bouquet

Test

53 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Test alatoire/statistique

Limites du test alatoire


Dans le cas dapplication de grande taille, avec un grand nombre de variables, il
est quasi impossible de produire au hasard des combinaisons dentre qui
sensibilisent des comportements trs spcifiques.

Algorithme 2: public int methodeImprobable(int x, int y)


if (x == 600 && y == 500) then
thrown new Exception("Bonne chance pour me trouver");
return (x+y);
Limitation du test alatoire
Il est quasiment impossible quun gnrateur alatoire soit capable de sortir les
deux valeurs de x et y (type int 264 valeurs possibles, 1 chance sur 2128 (=
3.4e + 38)) permettant de dclencher lexception.

Fabrice Bouquet

Test

54 / 59

Test Test Structurel Test fonctionnel Donnes Synthse


x . . . Test alatoire/statistique

Bilan du test alatoire, en pratique


Intrts de lapproche alatoire :
I Permettre facilement lautomatisation pour la slection des cas de test.
I Rendre les DT plus objectives car non assujettis aux choix du testeur.

% 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

50% de lobjectif de test mais quil a tendance plafonner ensuite.


Fabrice Bouquet

Test

55 / 59

Test Test Structurel Test fonctionnel Donnes Synthse

Plan

Test

Test Structurel

Test fonctionnel

Calcul de donnes de tests

Synthse

Fabrice Bouquet

Test

56 / 59

Test Test Structurel Test fonctionnel Donnes Synthse

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 ?

Questions pour le dveloppeur :


I Quel est la testabilit de lapplication (points de contrle et

dobservation) ?
I Comment maintenir la stabilit des interfaces ?
I Livraison est-elle fonctionnelle ?

Fabrice Bouquet

Test

57 / 59

Test Test Structurel Test fonctionnel Donnes Synthse

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

Test Test Structurel Test fonctionnel Donnes Synthse

Questions

Source - http://model-based-testing.info

Est-ce que vous prfrez utiliser un systme prouv ou test ?


... cf. les artfacts utiliss.

Fabrice Bouquet

Test

59 / 59

You might also like