Tests fonctionnels et génération automatique
Tests fonctionnels et génération automatique
Inconvénients :
– fonctionnement en aveugle,
– difficultés de produire des comportements très spécifiques.
Productivité du test aléatoire ou statistique
% de Test déterministe
satisfaction
d ’un
objectif
Test aléatoire
Effort
Stratégies de génération
Etudes de cas
odel-Based Testing
Analyse de besoins
Déploiement
-
Génération
Spécifications automatique
de tests Test Fonctionnel
Modèle
fonctionnel
Modélisation Test Système
Architecture
Implementati Modules
on test
Model-Based Testing
Modélisation Spécifications
Techniques
de Besoins
Modèle formel
StateCharts,B,UML,
…
Génération de Développement
Test
Cas de test
générés
Génération de
scripts
Scripts de Validatio
Implémentation
tests n
exécutables
Model-Based Testing
Modèle formel
Ensemble de
Générate Cas de tests
ur de
Directives
tests • séquence de stimuli
de
• résultats attendus
génératio
n
Modélisation
Diagramme
d’activités
Diagramme
Spécifications d’états
fonctionnelles
Modèle fonctionnel
Modéliser pour tester
Model-Driven Development
Modéliser pour tester
Génération
des tests
Génération
des scripts
Modèle fonctionnel Banc de test
Modéliser pour tester
Notations de modélisation
De nombreux paradigmes
– Systèmes de transitions (Etats / Transitions / Evénements)
» Flow Charts
» Data Flow Diagrams
» Diagramme d’état
– Diagrammes objet & association (Entité-Relation, héritage, …)
» Diagramme de classe (UML)
» Entité-Relation
– Représentation Pré-Post conditions
» OCL (UML)
» Machine Abstraite B
Représentation :
» Graphique (plus « intuitive » )
» Textuelle (plus précise)
Modéliser pour tester
Choix de notations
Evalutation pour quelques notations
SETS
FILES = {mf,df_gsm,ef_iccid,ef_lp,ef_imsi,ef_ad};
PERMISSION = {always,chv,never,adm};
VALUE = {true, false};
BLOCKED_STATUS = {blocked, unblocked};
CODE = {a_1,a_2,a_3,a_4};
DATA = {d_1,d_2,d_3,d_4}
CONSTANTS
FILES_CHILDREN,
PERMISSION_READ,
MAX_CHV,
MAX_UNBLOCK,
PUK
DEFINITIONS
MF == {mf};
DF == {df_gsm};
EF == {ef_iccid,ef_lp,ef_imsi,ef_ad};
COUNTER_CHV == 0..MAX_CHV;
COUNTER_UNBLOCK_CHV == 0..MAX_UNBLOCK
Modèle en B de la norme GSM 11-11 (fragment) – 2/4
PROPERTIES
FILES_CHILDREN : FILES <-> FILES &
FILES_CHILDREN = {(mf|->df_gsm), (mf|->ef_iccid),(df_gsm|->ef_lp),
(df_gsm|->ef_imsi),(df_gsm|->ef_ad)} &
PERMISSION_READ : EF --> PERMISSION &
PERMISSION_READ = {(ef_imsi|->never),(ef_lp|->always),
(ef_iccid|->chv),(ef_ad|->adm)} &
MAX_CHV = 3 &
MAX_UNBLOCK = 10 &
PUK : CODE &
PUK = a_3
VARIABLES
current_file,
current_directory,
counter_chv,
counter_unblock_chv,
blocked_chv_status,
blocked_status,
permission_session,
pin,
data
Modèle en B de la norme GSM 11-11 (fragment) – 3/4
INVARIANT
…
((blocked_chv_status = blocked) => ((chv|->false) : permission_session)) &
((counter_chv = 0) <=> (blocked_chv_status = blocked)) &
((counter_unblock_chv = 0) <=> (blocked_status = blocked))
INITIALISATION
current_file := {} ||
current_directory := mf ||
counter_chv := MAX_CHV ||
counter_unblock_chv := MAX_UNBLOCK ||
blocked_chv_status := unblocked ||
blocked_status := unblocked ||
permission_session := {(always|->true),(chv|->false),(adm|->false),(never|->false)} ||
pin := a_1 ||
data := {(ef_iccid|->d_1),(ef_lp|->d_2),(ef_imsi|->d_3),(ef_ad|->d_4)}
Modèle en B de la norme GSM 11-11 (fragment) – 4/4
sw <-- VERIFY_CHV(code) =
PRE
code : CODE
THEN
IF (blocked_chv_status = blocked)
THEN
sw := 9840
ELSE
IF (pin = code)
THEN
counter_chv := MAX_CHV || permission_session(chv) := true || sw := 9000
ELSE
IF (counter_chv = 1)
THEN
counter_chv := 0 || blocked_chv_status := blocked ||
permission_session(chv) := false || sw := 9840
ELSE
counter_chv := counter_chv - 1 || sw := 9804
END
END
END
END;
Test Generation Process
sw CHANGE_Pin(old_code, new_code) =
PRE
Niveau Machine old_code Nat new_code Nat
THEN
Abstraite (sans IF counter_pin = 0
THEN
raffinement, mono- sw := 9840
machine) ELSE
IF code_pin = old_code
Permet une bonne THEN
code_pin := new_code ||
prise en compte counter_pin := 3
|
des données et des | permission_session := true
traitements || sw := 9000
ELSE IF counter_pin =1
Bon niveau d’ab- THEN
counter_pin := 0 ||
straction permission_session := false ||
sw := 9840
ELSE
counter_pin := counter_pin – 1 ||
sw :=
9804
END END END END END ;
Modéliser pour tester
Distributeur de boisson :
Diagramme états/transitions (2)
Modéliser pour tester
Distributeur de boisson :
Diagramme états/transitions
(3)
Modéliser pour tester
Stratégie de modélisation
Adaptation Ingénieur
validation
Spécifications Développement
fonctionnelles
Modélisation
Ingénieur
validation
Génération Cas de test
Pilotage des tests
Génération automatique de tests à partir de
spécifications
Test à partir de modèles (Model-Based Testing)
Modéliser pour tester
Stratégies de génération
Classes d’équivalence et test aux bornes
Maîtriser la combinatoire
Sélection des tests – Critères de couverture
LEIRIOS Test Generator
Etudes de cas
ratégies de génération
Inférieur à De 4 à Supérieur à
4 10 10
2,64 Milliards de
MagIC 500
combinaisons de données
Schlumberger device
possibles
1570 Classes de
comportements comportements du
système
Critères de couverture
Conditions multiples
Sélection des tests
Critères de couverture
Critères de couverture
Transition
Sélection des tests
Critères de sélection
Evolution du modèle
Test de tous les comportements ajoutés ou modifiés
Test des comportements inchangés
Caractéristiques de la technologie :
– Génération automatique des tests et du résultat attendu
– Traduction des séquences de tests abstraits en
scripts exécutables concrets
– Génération des tests nominaux (cas de test positifs)
et des tests de robustesse (cas de tests négatifs)
– Génération de la matrice de traçabilité Exigences /
cas de tests
eirios Test Generator
Spécifications
Techniques de
Besoins
Critères
de Génération
LTG génération des cas de
Générateur tests
de tests
LTG
Cas de test
Automate
Simulator Générateur
De scripts
Pattern de
scripts
Environnement
Génération
d’exécution des tests
des scripts de
test
Leirios Test Generator
Traducteur
Conditions
P
Calcul des multiples Valeurs I
Prédicats de
comportements L
comportement
aux bornes Couv. O
T
A
des transitions
G
E
IHM
Etats limites et Evolution du
Génération de tests
modèle
Critères de
Scénarii de tests
couverture
Contrôleur de vitesse
Variables : 12
Vitesse, régime moteur, état du contrôleur…
– Observable : 6
– Interne : 2
Stimuli : 6
– Information persistante : Vitesse, moteur…
– Information non-persistante : activation/désactivation
du contrôleur, freinage…
Activité : 1
Etat : 9
Transitions : 18 hiérarchiques
udes de cas
Contrôleur de vitesse
Méthode de génération
Operation counter_pin=1
counter_pin’=0
Change_Pin permission_session’=false
code_pin ≠ sw=9840
old_code
counter_pin ≠ 0
counter_pin’≠1
counter_pin=counter_pin-1 sw=9804
code_pin=old_code code_pin’=new_code
permission_session’=true counter_pin’=3 sw=9000
counter_pin = 0 sw = 9840
Prédicat de comportement == counter_pin ≠ 0 code_pin ≠ old_code counter_pin=1
Etudes de cas
sw <-- VERIFY_CHV(code) =
PRE
code : CODE
THEN
IF (blocked_chv_status = blocked)
THEN
sw := 9840
ELSE
IF (pin = code)
THEN
counter_chv := MAX_CHV || permission_session(chv) := true || sw := 9000
ELSE
IF (counter_chv = 1)
THEN
counter_chv := 0 || blocked_chv_status := blocked ||
permission_session(chv) := false || sw := 9840
ELSE
counter_chv := counter_chv - 1 || sw := 9804
END
END
END
END;
Etudes de cas
Préambule :
1. InsertMoney(3) AmountRegistered = 3
2. SelectDrink(s1)
giveDrink NumberOfAvailableDrink – 1
returnMoney(1) AmountRegistered = 0
SumOfAmounts = SumOfAmounts
+ AmountRegistered
Problématique
Environnement d’automatisation
de l’exécution
Modélisation
fonctionnelle
LTG
Animateur
des
spécifications
Spécifications
fonctionnelles
Banc de test
LTG LTG
Générateur Générateur
de tests de scripts
Modèle Cas de
des test
spécifications
corres
ponda
Pattern de test nce
et table de
Génération des scripts et exécution
de tests
Pilotage banc de tests
Génération Format
Spécification de test
de test
Pattern
Table Réification
de test
Script
de test
Pilotage banc de tests
Exécutabilité :
Table
– Appel concret
– Reconstruire les éléments (@)
– Gestion spécifique au langage destination
Table d’exécutabilité et
d’observabilité
Pilotage banc de tests
Editeur de patterns
Editeur de
Tag : pattern
– Information sur le test
– Préambule
– Postambule
Pattern
de test
Editeur de patterns
Pilotage banc de tests
Script
Optimisation sur les scripts : de test
– Regrouper des séquences dans le même script
– Activation d’observation en dehors de l’identification
– Associer une séquence à différents patterns
Problèmes
1- Nature du modèle
Spécification formelle du système sous test
– Comportements attendus du système dans son environnement
» Ex.: LTG
Modèle du système + Modèle de l’environnement
– Le modèle d’environnement permet de restreindre l’espace
de calcul
» Ex. : GATEL (CEA)
Modèle des exécutions attendues (Observateur)
– Définition des traces à tester
» Ex. : Conformiq
Classification des techniques de génération
2- Notation de modélisation
Systèmes de transitions :
– IOLTS (STG – IRISA, TORX – Univ. Nijmegen)
– Statecharts (AGATHA – CEA)
Langages synchrones
– Lustre (GATEL – CEA)
assification des techniques de génération
A partir des
spécifications
fonctionnelles
g
G1 Writeln(x)
Chemins dans le graphe de contrôle
Le graphe G1 est un graphe de contrôle qui admet
une entrée - le nœud a - , une sortie - le nœud g.
– le chemin [a, c, d, e, g] est un chemin de contrôle,
– le chemin [b, d, f, g] n ’est pas un chemin de contrôle.
a b
Forme séquentielle : ab a d
Forme alternative :
a b c d
a (b + c) d
G3 a
n <= 0
n>0
n := 1 - n b
G3 = a (1 + b) c (e + d) f
2 div n
c not 2 div n
d n := n / 2
e n := 3*n + 1
f write(n)
Expressions de chemins - Exercice
Soit le programme P4 suivant :
read(i);
s := 0;
while (i <= 3) do
begin
if a[i] > 0 then s := s + a[i];
i := i + 1;
end
end;
G4 a read(i);
s := 0
i>3
b f
i<= 3
c G4 = ab [c (1 + d) eb]* f
a[i] > 0
a[i] <= 0
d s := s + a[i]
e
i := i +1
Problème des chemins non exécutables
a
b<c
d := 2 * b; y := x; • L ’arc g-h n’est
f := 3 * c; b d e := c; pas activable :
x >= 0 2b < 2c donc d < a
y=0 • Le problème de la
b >= c c e
détection de chemin non
f a := f - e; exécutable est un problème
x<0 difficile, indécidable dans le
y cas général
g
0
d<a
d >= a
h i writeln(a);
Méthodes de test structurel : couverture de
tous-les-nœuds
Taux de couverture :
nb de nœuds couverts
nb total de nœuds
a a >= 2
a< Données de test :
2
c • DT1 = {a=b=1}
b
a b=a • DT2 = {a=1, b=0}
b • DT3 = {a=3, b=2}
b=a b • DT4 = {a=b=3}
a e x := a - 2;
x := 2 - a; d
f
Critère de couverture de condition-décision
multiple
Le critère de condition-décision multiple est satisfait si :
– Le critère tous-les-arcs est satisfait
– En plus, chaque sous-expression dans les conditions prend
toutes les combinaisons de valeurs possibles
e
Limites des critères tous-les-arcs et condition-
décision multiple
Il n ’y a pas détection d ’erreurs en cas de non-
exécution d ’une boucle
Soit le programme P7 (avec erreur) :
read(inf, sup);
i := inf;
sum := 0;
read(inf, sup);
La donnée de test DT1 :
a i := inf; DT1= {a[1]=50, a[2]=60,
sum := 0;
a[3]=80, inf=1, sup=3}
i > sup c couvre le critère tous-les-arcs
b writeln (1/sum)
i <= sup
Problème non détecté par le critère
d sum := sum + a[i]; tous-les-arcs : si inf >sup erreur sur 1/sum
i := i + 1;
Méthodes de test structurel : couverture de
tous-les-chemins-indépendants
Le critère tous-les-chemins-indépendants vise à parcourir
tous les arcs dans chaque configuration possible (et non
pas au moins une fois comme dans le critère tous-les-
arcs)
Lorsque le critère tous-les-chemins-indépendants
est satisfait, cela implique :
– le critère tous-les-arcs est satisfait,
– le critère tous-les-nœuds est satisfait.
Sur le programme P7, l ’arc [c-e] est sensibilisé lorsque i
> sup à la fois dans le contexte sum = 0 (la boucle n ’est
pas activée) et sum 0 (la boucle est activée)
Procédure : tous-les-chemins-indépendants
1 - Evaluer le nombre de décisions par analyse
des conditionnelles
2 - Produire une DT couvrant le maximum de nœuds
de décisions du graphe
3 - Produire la DT qui modifie la valeur de vérité de
la première instruction de décision de la dernière DT
calculée.
Recommencer l ’étape 3 jusqu ’a la couverture de toutes
les décisions.
Critère tous-les-chemins-indépendants -
Exemple
Soit le programme P8 suivant :
chemin
b b intérieur : [abcbd]
chemin
intérieur : [ababc]
c d c
Couverture des chemins limites et intérieurs (2)
1 Chemins limites :
• [1,2,3,5,6]
• [1,2,4,5,6]
2
vrai faux
Chemins intérieurs :
3 4 • [1,2,3,5,2,3,5,6]
• [1,2,3,5,2,4,5,6]
5 • [1,2,4,5,2,3,5,6]
• [1,2,4,5,2,4,5,6]
If n 0 then n := 1-n
end;
If n pair
then n := n / 2
else n := 3*n + 1
end ;
Write(n); Calculer les DT suivant les critères :
– tous-les-nœuds,
– tous-les-arcs,
– tous-les-chemins-indépendants.
Méthodes de test structurel - Exercice
G3 Critères de test :
a
– tous-les-nœuds
n
0 » n = 0, n = -1
n>0 – tous-les-arcs
n := 1 - n b
» n = 2, n = -2
– tous-les-chemins-indépendants
n pair
c n impair » n = -1, n = -2, n = 1, n = 2
d n := n / 2
e n := 3*n + 1
f write(n)
Méthodes de test structurel - Exercice
Soit le programme P9 suivant :
while i <= 2 do
program p (input, output) ; begin
var a : array[1..2] of integer; if (a[i] = E) then found := true;
E, i : integer; else found := false;
begin i := i + 1;
read(i, E, a[1], a[2]); end;
found := false; writeln(found);
end;
Calculer les DT suivant les critères :
– tous-les-nœuds,
– tous-les-arcs,
– tous-les-chemins-indépendants.
Méthodes de test structurel - Exercice
read(i); DT1 = {i=3}
1 found := false;
DT2 = {i=1, E=10, a[1]=20, a[2]=10}
DT3 = {i=1, E=10, a[1]=10, a[2]=20}
DT4 = {i=1, E=10, a[1]=10, a[2]=10}
i>2 DT5 = {i=1, E=10, a[1]=20, a[2]=30}
2
i2 7
writeln(found);
3
a[i] E a[i] = E
found :=
false; 4 5
found := true;
6 i := i + 1;
Couverture du critère Portion Linéaire de
Code suivie d’un Saut - PLCS
Principes :
– On considère, dans le graphe de flot de contrôle, l’entrée, la
sortie et les nœuds qui constituent l’arrivée d’un branchement –
type (a)
– , et les autres nœuds – type (b).
– On appelle PLCS un chemin partant d’un nœud de type (a) et
aboutissant à nouveau à un nœud de type (a); l’avant dernier et
le dernier nœud doivent constituer le seul saut du chemin.
– On définit le critère TER3 :
PLCS couvertes
Total des PLCS
Couverture du critère PLCS – Exemple
INPUT A, C K5 K20 A=A+1
Soit le programme suivant : B=2*A
K30
005 INPUT A, C
A0
010 B = 2 * A
020 A = A + 1 A<0 K40 B = -A
PRINT A + B
030 IF A < 0 THEN GOTO 60
040 B = -A K60
050 PRINT A + B B
B = 2*C
060 IF B = 2 * C THEN GOTO 80 2*C K70 A
070 A = 1 : GOTO 90 =1
080 A = -2 : GOTO 20 K80 A = -2
090 PRINT A
100 END
K90 PRINT A
K5 Nœud type (a)
K30
1) [K5, K20, K30, K60]
A0
2) [K5, K20, K30, K40, K60, K80]
3) [K5, K20, K30, K40, K60, K70, K90] A<0 K40 B = -A
PRINT A + B
4) [K20, K30, K60]
5) [K20, K30, K40, K60, K80] K60
6) [K20, K30, K40, K60, K70, K90] B
B = 2*C
7) [K60, K80] 2*C K70 A
8) [K60, K70, K90] =1
9) [K80, K20] K80 A = -2
10) [K90, K100]
K90 PRINT A
K5
Nœud type (a)
tous-les-chemins
TERn
tous-les-chemins-indépendants
TER4
TER3
tous-les-arcs
(TER2)
Exemple :
Le chemin [1,2,3,4,5] est
(1) x := 7;
(2) a := x+2; un chemin dr-strict pour la
(3) b := a*a; variable x (mais pas pour
(4) a := a+1;
(5) y := x + a;
la variable a)
Critères toutes-les-définitions et tous-les-
utilisateurs
toutes-les-définitions : pour chaque définition, il y a
au moins un chemin dr-strict dans un test
tous-les-utilisateurs : pour chaque définition et pour
chaque référence accessible à partir de cette définition,
couverture de tous les utilisateurs (nœuds c-utilisateurs
ou arcs p-utilisateurs)
tous-les-utilisateurs toutes-les-définitions
Critères toutes-les-définitions et tous-les-
utilisateurs - exemple
Couverture du critère
x pair 1 read (x, y); toutes-les-définitions
:
x impair [1,3,5]
2
x := y+x/2 [1,2,3,5]
3
Couverture du critère
x0 x<0 tous-les-utilisateurs :
4 5 [1,3,4]
writeln (y); writeln (y+2)
[1,2,3,4]
[1,3,5]
[1,2,3,5]
Autrès critères basés sur le flot de données
Le critère tous-les-utilisateurs nécessite souvent la
sensibilisation d’un grand nombre de chemin, deux autres
critères, intermédiaires entre tous-les-utilisateurs et toutes-
les- définitions sont proposés :
– tous-les-p-utilisateurs/quelques-c-utilisateurs : pour chaque
définition, et pour chaque p-utilisation accessible à partir de cette
définition et pour chaque branche issue de la condition associée, il y a
un chemin dr-strict prolongé par le premier segment de cette branche ;
s’il n’y a aucune p-utilisation, il suffit d’avoir un chemin dr-strict
entre la définition et l’une des c-utilisation,
– tous-les-c-utilisateurs/quelques-p-utilisateurs : pour chaque
définition, et pour chaque c-utilisation accessible à partir de cette
définition, il y a un chemin dr-strict ; s’il n’y a aucune c-utilisation, il
suffit d’avoir un chemin dr-strict entre la définition et l’une des p-
utilisation.
Critère tous-les-p-utilisateurs/quelques-c-
utilisateurs - exemple
Couverture du critère
x pair 1 read (x, y); tous-les-p-utilisateurs/
quelques-c-utilisateurs
x impair :
2
x := y+x/2 [1,3,4]
3 [1,2,3,5]
x0 x<0
4 5
writeln (y); writeln (y+2)
Limite du critère tous-les-utilisateurs
read (x); Couverture du critère
1 tous-les-utilisateurs :
x<0 x0
2 [1,2,4,5,7]
y := 1; 3 [1,3,4,6,7]
y := 2;
4 Ces deux tests ne couvrent
x pair x impair pas tous les chemins
d’utilisation :
5 7 z := 3; 6
z := 1;
[1,2,4,5,7]
[1,3,4,6,7]
[1,2,4,6,7]
[1,3,4,5,7]
Hiérarchie des critères basés sur le flot de
données
tous-les-chemins
est plus fort que
tous-les-du-chemins
tous-les-utilisateurs
tous-les-c-utilisateurs/ tous-les-p-utilisateurs/
quelques-p-utilisateurs quelques-c-utilisateurs
toutes-les-définitions tous-les-arcs
tous-les-nœuds
Méthodes de test structurel basés sur la
couverture du flot de données - Exercice
read (x, y); Critères de test :
a
– toutes-les-définitions
x0
– tous-les-utilisateurs
x>0
y := y + x b
y pair
c y impair
d n := x / 2
e n := 3*y + 1
f write(n)
Méthodes de test structurel basés sur la
couverture du flot de données - Solution
read (x, y); Critères de test :
a
– toutes-les-définitions
x0
» [a,c,d,f] : x=1 & y=3
x>0 » [a,b,c,e,f] : x=-1 & y=3
y := y + x b
– tous-les-utilisateurs
» [a,c,d,f] : x=1 & y=3
y pair
c y impair » [a,c,e,f] : x=-1 & y=3
» [a,b,c,e,f] : x=0 & y=2
d n := x / 2
e n := 3*y + 1 » [a,b,c,d,f] : x=0 & y=3
f write(n)
3-3 Critères de couverture basés sur les fautes
– le test mutationnel
L’idée est de considéré des variantes du programme –
les mutants – ne diffèrent que par une instruction
Par exemple, pour l’instruction suivante dans
un programme p quelconque :
– if a > 8 then x := y
on peut considérer les mutants suivants :
– if a < 8 then x := y
– if a >= 8 then x := y
– if a >10then x := y La création des mutants est
– if a > 8 then x := y+1 basée sur des modèles de
– if a > 8 then x := x faute
– ……….
Le test mutationnel
Cette technique vise à évaluer les Données de Tests vis-à-vis de la
liste des fautes les plus probables qui ont été envisagées (modèles
de fautes).
Les mutations correspondent à des transformations
syntaxiques élémentaires de programme
Pour un programme P, soit M(P) l’ensemble de tous les mutants
obtenus par le modèle de faute. Certains mutants peuvent avoir le
même comportement que P, noter E(P). On fait exécuter la suite de
tests T à chacun des mutants de M(P) et on note DM(P) l’ensemble
de ceux qui ne fournissent pas le même résultat que P.
Le score de mutation MS(P,T) correspond à :
MS(P,T)= DM(P)
M(P) – E(P)
Le test mutationnel - Synthèse
Le test mutationnel est plus une approche pour évaluer
la qualité d’une suite de tests : combien de mutants
fonctionnellement distinguables sont « tués »,
Cette méthode est couteuse de mise en œuvre, en
particulier pour établir les mutants
fonctionnement distinguables des autres
=> test mutationnel faible : que sur des composants élémentaires
Règles de mutations d’opérateurs
(instructions)
operator set
1. expression deletion
2. boolean expression negation
3. term associativity shift
4. arithmetic operator by arithmetic operator
5. relational operator by relational operator
6. logical operator by logical operator
7. logical negation
8. variable by variable replacement
9. variable by constant replacement
10. constant by required constant replacement
Opérateurs de mutations (Statecharts)
Exemples de produits :
– Mercury Winrunner
– IBM Rational Robot
– Segue Silktest
Outils de gestion des campagnes de test
Principales fonctions :
– Définition d’une campagne de test
– Historisation des résultats
– Gestion des tests de non-regression
Exemples de produits :
– IBM Rational Test Manager (inclut dans la Suite TestStudio)
– Segue Silkplan Pro
Outils de test de performance
Principales fonctions :
– Test de montée en charge
– Simulation d’environnement
– Evolution aggressive de l’accès aux ressources
Exemples de produits :
– Empirix e-Load
– Mercury LoadRunner
– Segue Silkperformer
Outils de génération de tests fonctionnels
Principales fonctions :
– Génération des tests à partir d’un modèle des spécifications
– Animation des cas de tests
– Traçabilité des tests
Exemple de produits :
– Leirios Test Generator
– T-Vec
– Reactis
– Conformiq
Outils de génération de tests structurels
Principales fonctions :
– Critères de couvertures
– Evaluation du ratio de couverture
– Simulation d’environnement – Bouchonnage (Stubbing)
Exemples de produits :
– IPL Cantata ++
– Parasoft CodeWizard