Test Logiciel 1 Le Prof… Le Cours… Les Outils…

Transcription

Test Logiciel 1 Le Prof… Le Cours… Les Outils…
Le Prof…
Test Logiciel 1
Le Cours…
EMN – GIPAD/GSI
2010-2011
Arnaud Gotlieb
Les Outils…
INRIA / CELTIQUE
2009
EMN - Test Logiciel
1
2009
http://www.irisa.fr/lande/gotlieb/
Code-based Testing
OO Testing, Model-based Testing
Constraint-based Testing
CUnit, JUnit
LTG, Simulink
Euclide, Pex
EMN - Test Logiciel
2
Aujourd’hui…
a Introduction au Test Logiciel
INTRODUCTION AU TEST
LOGICIEL
a Test unitaire avec Cunit
a Critères de couverture
a Techniques de génération de cas de test
2009
EMN - Test Logiciel
3
2009
EMN - Test Logiciel
4
9/9/1945
1980
t es
t=
Épo
q
Ép
oq
ue
ue
Ép
oq
ue
t
1960
2009
pré
ven
tion
tru
c
des
t es
t=
es
t=
e
toi
r
his
pré
1945
tion
mi
se
au
po
int
historique et problèmatique du test
1990
EMN - Test Logiciel
5
2009
1960-80 : Test = mise au point
« Testing is the process of executing a program
with the intent of finding errors »
erreur Æ faute Æ défaillance
En fait, 3 activités distinctes :
* détection de défaillances (rôle du test)
* localisation de fautes
(rôle de la mise au point)
* correction des erreurs
(rôle de la mise au point)
2009
EMN - Test Logiciel
6
1980-90 : Test = destruction
Qu’avons-nous compris depuis ?
Chaîne causale :
EMN - Test Logiciel
7
[G. Myers The Art of Software Testing 1979]
Conséquence immédiate :
le testeur ne doit pas être le programmeur
Position dogmatique progressivement abandonnée !
2009
EMN - Test Logiciel
8
Visual 1998
1990-.. : Test = prévention
« Se convaincre, par des techniques d’analyse ou
d’exécution, qu’un programme répond à ses
spécifications »
- Analyse Æ Contrôle : vérifier des propriétés
avant exécution
- Exécution Æ Test : évaluer un résultat
après exécution
2009
EMN - Test Logiciel
9
2009
EMN - Test Logiciel
10
Terminology
(IEEE Standard Glossary of SE, BCS’s standard for Softw. Testing)
a
Validation: « The process of evaluating software at the end
of software development to ensure compliance with intented
usage »
a Verification: « The process of determining whether the
products of a given phase of the software development
process fulfill the requirements established during the
previous phase »
a Testing: « Evaluating software by observing its execution »
2009
EMN - Test Logiciel
11
2009
EMN - Test Logiciel
12
Test de programme : notre définition
Correction de programme : limite fondamentale
- Tester = exécuter un programme P pour mettre
en évidence la présence de fautes, par rapport à
sa spécification F
- Recherche de contre-exemples :
∃X tq
P(X) ≠ F(X) ?
2009
EMN - Test Logiciel
13
Exécuter
Outputs
Verdict : pass☑ or fail☒
EMN - Test Logiciel
EMN - Test Logiciel
14
En théorie :
- par prédiction du résultat attendu
- à l’aide d’une formule issue de la spécification
- à l’aide d’un autre programme
En pratique :
- prédictions approximatives (à cause des calculs flottants,…)
- formules inconnues (car programme = formule)
- oracle contenant des fautes
Vérifier
2009
2009
Problème de l’oracle :
Comment vérifier les sorties calculées ?
Programme P
Oracle
«Program Testing can be used to prove the presence
of bugs, but never their absence » [Dijkstra 74]
PS : développeur expérimenté Æ 1 faute / 10 lignes de code
163 fautes / 1000 instructions
[B. Beizer Software Testing Techniques 1990]
Processus de test
Inputs
Impossible de démontrer la correction d’un
programme dans le cas général Å indécidabilité du
problème de l’arrêt d’une machine de Turing
15
2009
EMN - Test Logiciel
16
A. Test fonctionnel
Problème de la sélection des DT
A base d’un modèle du programme issu des
spécifications :
A. Test fonctionnel : basé sur les spécifications
Sorties
Données de test
- Informelles (test partitionnel, test aux limites, ...)
B. Test structurel : basé sur l’analyse du programme
Données de test
- Semi-formelles (cas d’utilisation, diagrammes de
séquence, UML/OCL, graphes causes/effets…)
Sorties
- Formelles (spéc. algébriques, machines B,
systèmes de transitions IOLTS, …)
2009
EMN - Test Logiciel
17
2009
A base d’un modèle du code source du programme
- modèle = représentation interne de la structure
- Utilisation importante de la Théorie des Graphes,
notamment des techniques de couverture
Spécifications :
renvoie le produit de
i par j
(i = 0, j = 0) --> 0
(i = 10, j = 100) -->1000
…
--> OK
EMN - Test Logiciel
18
Le test structurel est indispensable (1)
B. Test structurel
2009
EMN - Test Logiciel
19
2009
prod(int i,int j )
{
int k ;
if( i==2 )
k := i << 1 ;
else
(faire i fois l ’addition de j)
return k ;
}
EMN - Test Logiciel
20
Le test structurel est indispensable ! (2)
Spécifications :
renvoie le produit de
i par j
(i = 0, j = 0) --> 0
(i = 10, j = 100) -->1000
…
Faute non détectée par
du test fonctionnel
patch -> k := j << 1
2009
prod(int i,int j )
{
int k ;
if( i==2 )
k := i << 1 ;
else
(faire i fois l ’addition de j)
return k ;
}
EMN - Test Logiciel
Software testing in the software
developpement process
Usage &
acceptance testing
Requirements
Architecture & system
System testing
(performence, load, robustness, security testing)
Functional specifications
Unit & Integration testing
Coding design
21
Test natif / test croisé
2009
EMN - Test Logiciel
22
Exemple de montage en test croisé : plateforme Java Card
Test natif :
machine de test = machine de développement
Java Card
Card reader
USB port
.cmd
Card
Commands
processor
APDUs
Open
Plateform
loader
Test croisé :
machine de test ≠ machine de développement
.java
javac
.class
converter
.cap
verifier
Personal Computer
2009
EMN - Test Logiciel
23
2009
EMN - Test Logiciel
24
Bibliographie : quelques livres
Tests de non-regréssion
Jeu de Test 3
Jeu de Test 2
Jeu de Test 1
…
3ème version
2nde version
Tests de
non-régression
1ère version
2009
EMN - Test Logiciel
25
2009
Bibliographie : quelques revues
EMN - Test Logiciel
26
Et quelques sites intéressants...
Software Testing Online Resources www.mtsu.edu/~storm/
Software Testing Stuff
www.testdriven.com/
Model-based Software Testing
www.geocities.com/model_based_testing/
Opensource ST www.opensourcetesting.org/unit_java.php
Tao Xie’s homepage
www.cs.washington.edu/homes/taoxie
2009
EMN - Test Logiciel
27
2009
EMN - Test Logiciel
28
Units of language
a Functions in C
TEST UNITAIRE
AVEC CUNIT
a Task in ADA
a Methods or classes in C++ and Java
a Predicates in Prolog
a…
2009
EMN - Test Logiciel
29
2009
Unit testing frameworks
EMN - Test Logiciel
30
Unit testing: atomic operation
a Select test input variable values
- JUnit, Parasoft’s Jtest for Java
- CUnit, CTC++, IBM Rational Test Real Time for C
- Parasoft’s C++Test, Cantata++… for C++
…
a Define expected output values (a.k.a. oracle)
http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
a Code a test script and register it in a
database
a Run the test !
2009
EMN - Test Logiciel
31
2009
EMN - Test Logiciel
32
Cunit (http://cunit.sourceforge.net/) -- 1
Cunit (http://cunit.sourceforge.net/) -- 2
a Lightweight system for writing, managing
and running unit test for C programs
a Automated
Output to XML file, Non-interactive
a Basic
Flexible programming interface, Non-interactive
a Console
Console interface (ANSI C), Interactive
a Curses
Graphical interface (Unix only), Interactive
a Built as a static library which is linked with
the user’s test script
aprovides a rich set of assertions for testing
common data types.
2009
EMN - Test Logiciel
33
2009
EMN - Test Logiciel
34
Typical test script: test_gcd.c
Example
#include "Basic.h"
typedef unsigned short ush;
ush gcd(ush u, ush v)
{
while( u > 0 )
{
if ( v > u )
{
u = u + v;
v = u - v;
u = u * v;
}
u = u - v;
}
return v;
}
a
void test_gcd(void) {
CU_ASSERT(4 == gcd(24, 28));
CU_ASSERT(4 == gcd(28, 24)); }
main() {
CU_pSuite pSuite = NULL;
Select a test input: (28, 24)
a Define expected output: 4
if (CUE_SUCCESS != CU_initialize_registry())
return CU_get_error();
a Define another test input : (24,28)
a Expect output: 4
pSuite = CU_add_suite("Suite_1", 0, 0);
if (!pSuite) { CU_cleanup_registry();
return CU_get_error(); }
if ((!CU_add_test(pSuite, "test of fprintf()", test_gcd))
{ CU_cleanup_registry();
return CU_get_error(); }
a Script and run the test !
CU_basic_run_tests();
CU_cleanup_registry();
return CU_get_error(); }
2009
EMN - Test Logiciel
35
2009
EMN - Test Logiciel
36
Let’s play, now !
Makefile
CUnitHeaders=/c/CUnit-2.1-0/include/CUnit
CUnitLibs=/c/CUnit-2.1-0/lib
a Download and install Cunit (README)
requires Jam, MinGW on windows
http://cunit.sourceforge.net
test_gcd: gcd.o test_gcd.o
$(CC) $^ -L$(CUnitLibs) -lcunit -o $@
a Code gcd.c, test_gcd.c and Makefile
gcd.o: gcd.c
$(CC) -c -D static= gcd.c
a Run and explain…
test_gcd.o: test_gcd.c
$(CC) -c -I$(CUnitHeaders) test_gcd.c
clean:
2009
EMN - Test Logiciel
$(RM) gcd.o test_gcd.o
test_gcd.exe
37
2009
EMN - Test Logiciel
38
JUnit for Java
CRITERES DE TEST
http://www.irisa.fr/lande/gotlieb/resources/JUnit_Tutorial.mp4
2009
EMN - Test Logiciel
39
2009
EMN - Test Logiciel
40
Représentations internes
Graphe de flot de contrôle (GFC)
Abstractions de la structure d’un programme
Graphe orienté et connexe (N,A,e,s) où
- Graphe de Flot de Contrôle [GFC]
N : ens. de sommets =
bloc d’instructions exécutés en séquence
E : relation de N x N =
débranchement possible du flot de contrôle
- Graphe Def/Use [GDU]
[- Program Dependence Graph, ...]
e : sommet “d’entrée” du programme
s : sommet de sortie du programme
2009
EMN - Test Logiciel
41
Graphe de flot de contrôle (GFC) : exemple
double P(short x, short y) {
short w = abs(y) ;
double z = 1.0 ;
faux
d
y<0
a
b
c
d
vrai
if ( y<0 )
z = 1.0 / z ;
return(z) ;
}
2009
Déf: Un ensemble C de chemins du GFC
(N,A,e,s) satisfait tous_les_sommets
ssi ∀n ∈ N, ∃Ci ∈ C
tq n est un sommet de Ci
vrai
c
42
Motivation : couvrir toutes les instructions
du programme au moins une fois
w != 0
b
EMN - Test Logiciel
Critère : tous_les_sommets | toutes_les_instructions
a
while ( w != 0 )
{
z =z*x;
w=w-1;
}
2009
faux
Exemple : Ici un seul chemin suffit
a-b-c-b-d-e-f [6/6 sommets]
e
f
EMN - Test Logiciel
43
2009
EMN - Test Logiciel
e
f
44
Critère structurel : tous_les_arcs | toutes_les_décisions
Motivation : couvrir toutes les prises de
décision au moins une fois
Déf : Un ensemble C de chemins du GFC
(N,A,e,s) satisfait tous_les_arcs
ssi ∀a ∈ A, ∃Ci ∈ C
tq a est un arc de Ci
a
2009
c
d
e
f
EMN - Test Logiciel
45
d
e
f
EMN - Test Logiciel
Principe:
X sensibilise un unique chemin du GFC
a
b
Déf: séquence de sommets du GFC, non
nécessairement finie, empruntée lors de
l’exécution de P avec X comme entrée
c
46
e
f
c
a
P(short x,y)
short w= abs(y)
double z= 1.0
b
w != 0
z= z * x
w= w-1
d
d
tous_les_chemins plus fort que tous_les_arcs
tous_les_arcs plus fort que toutes_les_sommets
EMN - Test Logiciel
c
Chemin sensibilisé : exec(P,X)
Déf : Un ensemble C de chemins du GFC
(N,A,e,s) satisfait tous_les_chemins
ssi C contient tous les chemins de e à s
2009
b
Exemple : Ici 4 chemins complets
sont nécessaires
a-b-d-f
a-b-d-e-f
a-b-c-b-d-f
a-b-c-b-d-e-f
2009
Critère structurel : tous_les_chemins
Ici, impossible car ∞ chemins
et chemins non-exécutables !
a
Motivation : couvrir toutes les chemins
d’exécution, sans itérer plus d’une fois dans
les boucles
b
Exemple : Ici 2 chemins sont nécessaires
a-b-c-b-d-e-f [6/7 arcs]
a-b-d-f
[3/7 arcs]
Critère structurel : tous_les_chemins_simples
Exemples :
exec(P,(0,0)) = a-b-d-f
exec(P,(3,2)) = a-b-(c-b)²-d-f
z=1.0 / z
return(z)
47
2009
EMN - Test Logiciel
y<0
e
f
48
Problème des chemins non exécutables
Exercice
Soit c un chemin du GFC de P,
existence de X tq c=exec(P,X) ?
a
P(short x,y)
short w= abs(y)
double z= 1.0
Ici, a-b-d-e-f est non-exécutable !
b
w != 0
Weyuker 79
Déterminer si un sommet, un arc, ou
un chemin du GFC est exécutable est
indécidable dans le cas général
c
2009
EMN - Test Logiciel
P(short x)
a
z= z * x
w= w-1
d
y=x
x=0
v
c
d
v
e
49
x < 0 && y>= 0
f
g
2009
y= -x
x= -1
f
e
f
x>0
f
b
y<0
z=1.0 / z
Idée de la preuve: réduction au problème
de l’arrêt d’une Machine de Turing return(z)
Trouver tous les chemins non-exécutables de ce
programme
EMN - Test Logiciel
50
Condition / Décision dans un programme
Measuring code coverage
Condition (bool., expr. arith, ...)
a 3 distinct techniques
- Instrumenting source code
+ Easy to implement
+ Powerful as everything regarding executions can be
recorded
- Add untrusted code in trusted source code
if( A && (B || C))
- Instrumenting binary code
+ Do not modify source code
- Difficult to implement
Décision
- Use a debugger
+ Do not modify source code
- Specific to each compiler
2009
EMN - Test Logiciel
(bool., expr. logique dans une structure de contrôle, ...)
51
Notation :
Dec est la valeur de vérité de la décision
2009
EMN - Test Logiciel
52
Critères de test liés aux décisions
Modified Condition/Decision Criterion (1)
Objectif : Démontrer l’action de chaque condition sur
la valeur de vérité de la décision
if( A && (B || C))
1. Decision Criterion (DC) :
A=1,B=1,C=0 – Dec=1
A=0,B=0,C=0 – Dec=0
if( A && (B || C))
Principe : pour chaque condition, trouvez 2 cas de
test qui changent Dec lorsque toutes les autres
conditions sont fixées
2. Condition Criterion (CC) : A=1,B=1,C=0 – Dec=1
A=0,B=0,C=1 – Dec=0
3. Modified Condition/Decision Criterion (MC/DC)
Ex : pour A
4. Multiple Condition/Decision Criterion: 23=8 cas de test
2009
EMN - Test Logiciel
53
Modified Condition/Decision Criterion (2)
2009
A=0, B=1,C=1
A=1, B=1,C=1
-- Dec=0
-- Dec=1
EMN - Test Logiciel
54
Exercice : peut-on faire mieux ?
if( A && (B || C))
if( A && (B || C))
pour A
A=0, B=1,C=1
A=1, B=1,C=1
-- Dec=0
-- Dec=1
pour A
A= , B= ,C=
A= , B= ,C=
-- Dec=
-- Dec=
pour B
A=1, B=1,C=0
A=1, B=0,C=0
-- Dec=1
-- Dec=0
pour B
A= , B= ,C=
A= , B= ,C=
-- Dec=
-- Dec=
pour C
A=1, B=0,C=1
A=1, B=0,C=0
-- Dec=1
-- Dec=0
pour C
A= , B= ,C=
A= , B= ,C=
-- Dec=
-- Dec=
Ici, 5 cas de test suffisent pour MC/DC !
2009
EMN - Test Logiciel
55
2009
EMN - Test Logiciel
56
Modified Condition/Decision Criterion (3)
Lien avec la couverture du code objet
Propriété : Si n = #conditions alors
couvrir MC/DC requiert au moins n+1 DT et au plus 2n DT
Couvrir MC/DC ⇒ couvrir les décisions du code objet
mais
Couvrir MC/DC ⇐ couvrir les décisions du code objet
n+1 ≤ #données de test ≤ 2*n
Couvrir les chemins du code objet ⇒ couvrir MC/DC
mais
Conditions couplées : changer la valeur d’une condition
modifie la valeur d’une autre
Couvrir les chemins du code objet ⇐ couvrir MC/DC
En l’absence de conditions couplées, le minimum (n+1)
peut-être atteint
2009
EMN - Test Logiciel
57
2009
EMN - Test Logiciel
58
Représentations internes
From the Galileo development standard
Abstractions de la structure d’un programme
- Graphe de flot de contrôle [GFC]
Structural coverage
DAL A
DAL
B
DAL C
DAL
D
DAL
E
Statement coverage
(source code)
N/A
100%
100%
90%
N/A
Statement coverage
(object code)
100%
N/A
N/A
N/A
N/A
Decision coverage
(source code)
N/A
100%
N/A
N/A
N/A
Modified Condition &
Decision Coverage
(Source code)
100%
N/A
N/A
N/A
N/A
2009
EMN - Test Logiciel
- Graphe Def/Use [GDU]
GFC + décoration des sommets/arcs avec infos
définitions/utilisations sur les variables
[- Program Dependence Graph, …]
59
2009
EMN - Test Logiciel
60
Graphe Def/Use (GDU) –
[Rapps & Weyuker 85]
A chaque sommet j est associé
- def(j) :
{v ∈ Var(P) | v est définie en j }
- c-use(j) : {v ∈ Var(P) | v est utilisée en j dans un calcul
et ∃k ≠ j tel que v ∈ def(k)}
A chaque arc j-k issu d’une décision est associé
- p-use(j,k) : {v ∈ Var(P) | v est utilisée dans le prédicat j
et conditionne l’exécution de k}
Hypothèses : Toute variable utilisée possède une définition
et à chaque définition correspond au moins une utilisation
2009
EMN - Test Logiciel
61
Graphe Def/Use : exemple
double P(int x, int y) {
w = abs(y) ;
z = 1.0 ;
while ( w != 0 )
{
z = z*x ;
w = w-1 ;
}
if ( y<0 )
z = 1.0 / z ;
return(z) ;
}
2009
2
p-use(2,3) : w
c-use(3) : x,z,w
def(3) : z,w
3
p-use(2,4) : w
4
p-use(4,5) : y
p-use(4,6) : y
5
6
c-use(5) : z
def(5) : z
c-use(6) : z
EMN - Test Logiciel
62
dcu(x,1)= {3}, dpu(x,1)= ∅
dcu(y,1)= ∅,
dpu(y,1)= {4-5,4-6}
dcu(w,1)= {3}, dpu(w,1)= {2-3,2-4}
dcu(z,1)= {3,5,6}, dpu(z,1)= ∅
p-use(2,3) : w
i-n1-…-nm-j est un chemin sans déf. de x de i à j
ssi ∀k ∈ {1,..,m}, x ∉ def(nk)
Soient i un sommet d’un GDU (N,A,e,s) et x ∈ def(i)
c-use(3) : x,z,w
def(3) : z,w
dcu(x,i): {j ∈ N | x ∈ c-use(j) et
∃un chemin sans déf. de x de i à j}
dpu(x,i): {j-k ∈ A | x ∈ p-use(j,k) et
∃un chemin sans déf. de x de i à j}
EMN - Test Logiciel
c-use(1) : ∅
def(1) : x,y,w,z
dcu(x,j) et dpu(x,j) : exemples
Chemin sans définition (def-clear path)
2009
1
63
1
2
3
p-use(2,4) : w
4
dcu(z,3)= {3,5,6}, dpu(z,3)= ∅
dcu(w,3)= {3}, dpu(w,3)= {2-3,2-4} p-use(4,6) : y
dcu(z,5) = {6}, dpu(z,5) = ∅
2009
6
EMN - Test Logiciel
c-use(1) : ∅
def(1) : x,y,w,z
p-use(4,5) : y
5
c-use(5) : z
def(5) : z
c-use(6) : z
64
Critère structurel : toutes_les_définitions
Déf : Un ensemble C de chemins du
GDU (N,A,e,s) satisfait toutes_les_définitions ssi
∀n ∈ N et ∀x ∈ def(n),
∃Ci ∈ C tel que
Ci inclut un chemin sans déf. de x
de n à un élément de dcu(x,n) ou dpu(x,n)
Couverture de toutes_les_définitions
1
Ici, un seul chemin suffit !
1-2-3-2-4-5-6
2
p-use(2,3) : w
c-use(3) : x,z,w
def(3) : z,w
3
p-use(2,4) : w
4
EMN - Test Logiciel
65
Critère structurel : toutes_les_utilisations
Déf : C satisfait toutes_les_utilisations
ssi ∀n∈ N et ∀x∈ def(n), ∃Ci ∈ C
tq Ci inclut un chemin sans déf. de x de n à
tous les éléments de dcu(x,n) et dpu(x,n)
5
c-use(6) : z
EMN - Test Logiciel
66
Chemin définition/utilisation p.r.à. x (du-path w.r.t. x)
1. x ∈ def(i)
2a. soit x ∈ c-use(k) alors p est un chemin sans déf. de x
de i à k et p se trouve sur un chemin simple
2b. soit x ∈ p-use(j,k) alors p est un chemin sans déf.
de x de i à j et p se trouve sur un chemin simple
toutes_les_utilisations est plus fort que
toutes_les_définitions
EMN - Test Logiciel
2009
c-use(5) : z
def(5) : z
Déf: p = i-..-j-k est
un chemin définition/utilisation par rapport à x ssi :
Exemple : Ici, trois chemins sont nécessaires !
par exemple : 1-2-4-6, 1-2-3-2-4-6 et 1-2-(3-2)2-4-5-6
2009
p-use(4,5) : y
p-use(4,6) : y
6
2009
c-use(1) : ∅
def(1) : x,y,w,z
67
2009
EMN - Test Logiciel
68
Chemin définition/utilisation : exemples
du_path w.r.t. x : 1-2-3
du_paths w.r.t. y :
1
1-2-4-5, 1-2-4-6,
1-2-3-2-4-5,
1-2-3-2-4-6
du_paths w.r.t. z :
c-use(1) : ∅
def(1) : x,y,w,z
2
p-use(2,3) : w
c-use(3) : x,z,w
def(3) : z,w
3
def(3) : z,w
p-use(4,5) : y
p-use(4,6) : y
5
du_paths w.r.t. w :
1-2-3,1-2-4,3-2-3,3-2-4
Déf: C satisfait tous_les_chemins_du 1 c-use(1) : ∅
def(1) : x,y,w,z
ssi ∀n∈ N et ∀x∈ def(n),
C inclut tous les chemins
2
p-use(2,3) : w
définition/utilisation
par rapport à x
c-use(3) : x,z,w
p-use(2,4) : w
3
p-use(2,4) : w
4
1-2-3,1-2-4-5,1-2-4-6,
3-2-3,3-2-4-5,3-2-4-6,
5-6
2009
Critère structurel : tous_les_chemins_du
6
c-use(5) : z
def(5) : z
c-use(6) : z
EMN - Test Logiciel
69
Relation entre les critères (“est plus fort que”)
4
Les liens entre critères liés au GDU et au GFC
Critères liés au GDU
C1 subsume C2 (noté C1 ⇒ C2) ssi
∀GDU, ∀ensemble de chemins P qui satisfait C1,
P satisfait aussi C2
tous_les_chemins_du
toutes_les_utilisations
Propriétés :
- relation transitive ( C1 ⇒ C2 et C2 ⇒ C3 alors C1 ⇒ C3 )
- définit un ordre partiel entre les critères
toutes_les_définitions
Ex: tous_les_chemins_du subsume toutes_les_utilisations
2009
EMN - Test Logiciel
p-use(4,5) : y
p-use(4,6) : y
Ici, 5 chemins !
1-2-4-6, 1-2-4-5-6,
5 c-use(5) : z
def(5) : z
21-2-(3-2) 4-6,1-2-3-2-4-5-6
6 c-use(6) : z
1-2-3-2-4-6
2009
EMN - Test Logiciel
70
71
2009
EMN - Test Logiciel
Critères liés au GFC
tous_les_chemins
tous_les_arcs
tous_les_sommets
72
[Rapps & Weyuker 1985]
Et en plus…
Freeware:
- Gcov / gcc www.netadmintools.com/html/1gcov.man.html
- Hansel (Oregon University)
hansel.sourceforge.net
- Quilt / Junit
quilt.sourceforge.net
tous_les_chemins
tous_les_chemins_du
toutes_les_utilisations
toutes_les_c_use/
quelques_p_use
toutes_les_p_use/
quelques_c_use
toutes_les_définitions
Quelques outils disponibles...
toutes_les_p_use
tous_les_arcs
Outils commerciaux :
- IPL Cantata++ / ADATest
- IBM Rational Test Realtime
www.iplbath.com/products
www-306.ibm.com/software/awdtools/test/realtime
- LDRA Testbed
www.ldra.co.uk/pages/testbed.htm
tous_les_sommets
2009
EMN - Test Logiciel
73
Synthesis
a Nowadays, Software Testing
1. relies on solid theoretical foundations
2. is always tool-supported
a Code-based testing / Model-based testing are
complementary techniques
a Measuring code coverage is desirable to assess the test
quality
2009
EMN - Test Logiciel
75
2009
EMN - Test Logiciel
74

Documents pareils