Plan - PowerPoint PPT Presentation

1 / 82
About This Presentation
Title:

Plan

Description:

Mod lisation et algorithmes d ordonnancement Efficient Strategies for Integration and Regression Testing of OO Systems The Test Dependency Graph preliminary ... – PowerPoint PPT presentation

Number of Views:153
Avg rating:3.0/5.0
Slides: 83
Provided by: iri5
Category:

less

Transcript and Presenter's Notes

Title: Plan


1
Plan
  1. Problématique du test
  2. Rappels test de logiciel
  3. Test de composants unitaires OO
  4. Test d'intégration
  5. Test système
  6. Diagnostic

2
Test dintégration pour des systèmes à objets
  • Yves Le Traon
  • yletraon_at_irisa.fr
  • Yves.letraon_at_francetelecom.com

3
Plan
  1. Problématique du test
  2. Rappels test de logiciel
  3. Test de composants unitaires OO
  4. Test d'intégration
  5. Lintégration approches classiques
  6. Le test dintégration de classes par lexemple
  7. Lapproche à objets et lintégration
  8. Modélisation et stratégies dordonnancement
  9. Test système
  10. Diagnostic

4
Plan
  1. Problématique du test
  2. Rappels test de logiciel
  3. Test de composants unitaires OO
  4. Test d'intégration
  5. Lintégration approches classiques
  6. Le test dintégration de classes par lexemple
  7. Lapproche à objets et lintégration
  8. Modélisation et stratégies dordonnancement
  9. Test système
  10. Diagnostic

5
4.1. Lintégration approches classiques
6
Contexte
  • Réalisation dune  bonne  stratégie
  • pour planifier lintégration des systèmes à
    objets,
  • le plus tôt possible dans le cycle de vie,
  • en minimisant le coût du test.

7
Test dintégration
  • Objectif
  • Vérifier linteraction entre unités (méthode,
    classe ou package).
  • Difficultés principales de lintégration
  • Interfaces floues (ex. ordre des paramètres de
    même type).
  • Implantation non conforme à la spécification (ex.
    dépendances entre unités non spécifiées).
  • Réutilisation dunités (ex. risque dutilisation
    hors domaine).

8
Architecture de dépendances
9
Intégration Approches classiques
  • On obtient une architecture arborescente
  • SADT, SART, SAO (Aérospatiale)
  • Approches
  • Big-Bang non recommandé
  • De haut en bas (top-down)
  • De bas en haut (bottom-up)

10
Approche classique De haut en bas
11
Approche classique De bas en haut
12
Plan
  1. Problématique du test
  2. Rappels test de logiciel
  3. Test de composants unitaires OO
  4. Test d'intégration
  5. Lintégration approches classiques
  6. Le test dintégration de classes par lexemple
  7. Lapproche à objets et lintégration
  8. Modélisation et stratégies dordonnancement
  9. Test système
  10. Diagnostic

13
4.2. Le test dintégration de classes par
lexemple
14
Intégration
  • But tester les interactions entre classes
  • Lien entre test dintégration et unitaire
  • il faut ordonner les classes pour le test
  • Il faut identifier les dépendances entre classes
  • Problème dans le cas de cycles de dépendances

15
Cas simple un graphe acyclique
Ordre partiel pour le test F, (C, D), E, B, A
16
Étape 1
17
Étape 2
18
Étape 3
19
Étape 4
20
Étape 5
21
Cas moins simple présence de cycles
22
Intégration avec cycles
  • Il faut casser les cycles
  • développer des simulateurs de classes ( bouchon
    de test ou stub )
  • un simulateur a la même interface que la classe
    simulée, mais a un comportement contrôlé
  • Exemple

23
Exemples de stub
/ Creates an account for the person named
name If no client has this name, a new client
object is created and is added to the list of
clients, then the account is created If the
client exists the account is created, added to
the bank's and the client's list of accounts
/ public int addAccount(String name, float
amount, float overdraft) this.accountNumbers
Person p getClient(name) //if a client
named name already exists in the bank's set of
clients if (p!null) Account a new
Account(p, amount, overdraft, accountNumbers)
p.addAccounts(a) this.addAccounts(a) //
if the client does not exist, add it tp the
bank's list of clients and create
account else Person client new
Person(name) this.addClients(client) Accou
nt a new Account(client, amount, overdraft,
accountNumbers) client.addAccounts(a) this
.addAccounts(a) return
accountNumbers
24
Exemples de stub
Stub 1 / Creates an account for the
person named name If no client has this name,
a new client object is created and is added
to the list of clients, then the account is
created If the client exists the account is
created, added to the bank's and the client's
list of accounts / public int
addAccount(String name, float amount, float
overdraft) return 0
Stub 2 / Creates an account for the
person named name If no client has this name,
a new client object is created and is added
to the list of clients, then the account is
created If the client exists the account is
created, added to the bank's and the client's
list of accounts / public int
addAccount(String name, float amount, float
overdraft) return 1
25
Exemples de stub
/ Looks for a person named name in the set
of clients. Returns the Person object
corresponding to the client if it exists
Returns null if there is no client named name
/ public Person getClient(String name)
Iterator it this.clientsIterator() while
(it.hasNext()) Person p (Person)it.next()
if(p.getName()name) return
p return null
26
Exemples de stub
Stub 1 / Looks for a person named name
in the set of clients. Returns the Person
object corresponding to the client if it exists
Returns null if there is no client named name
/ public Person getClient(String name)
return null
Stub 2 / Looks for a person named name
in the set of clients. Returns the Person
object corresponding to the client if it exists
Returns null if there is no client named name
/ public Person getClient(String name)
return new Person(toto)
27
Exemple Banque
  • Exemple, pour tester en présence de ce cycle

Regarder quelles sont les méthodes de Person
utilisées par Account
public class Person / Initializes the
name of the person with the param n Creates
a new vector to intialize the acounts set
/ public Person(String n) name n
accounts new Vector() public String
getName()return name
Stub de la classe Person public class Person
/ Initializes the name of the person with
the param n Creates a new vector to
initialize the accounts set / public
Person(String n) public String
getName()return (toto)
28
Exemple Banque
  • Etape 1
  • Tester la classe Account avec le stub de Person
  • Etape 2
  • Tester la classe Person avec Account
  • Etape 3
  • Retester la classe Account avec la vraie classe
    Person

29
Plan
  1. Problématique du test
  2. Rappels test de logiciel
  3. Test de composants unitaires OO
  4. Test d'intégration
  5. Lintégration approches classiques
  6. Le test dintégration de classes par lexemple
  7. Lapproche à objets et lintégration
  8. Modélisation et stratégies dordonnancement
  9. Test système
  10. Diagnostic

30
4.3. Lapproche à objets et lintégration
31
() Cycle de vie en  spirale 
Synergie avec approche par objets
32
Test unitaire et dintégration
  • Classiquement
  • Étapes séparées
  • Dans un cycle en spirale
  • Un composant unitaire ne peut pas être testé hors
    de son contexte dexécution
  • gt conséquence test unitaire et test
    dintégration sont des activités inséparables

33
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • The problem domain Use OO modeling for early
    Test Planning
  • Integration
  • deduced from UML models
  • to master integration cost and duration
  • Regression
  • separation of reusable tests from implementation
  • the test model must be refinable with design
    refinement stages.

34
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • A OO test model must
  • be as simple as possible
  • easy to understand
  • limited to its purpose
  • catch all the information concerning test
  • test dependencies between components
  • from a rough to a precise level of detail
  • (class method)
  • determine design parts due to implementation
    choices
  • test cases reuse
  • test cases enhancement with system evolution

Integration
Regression
35
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • Integration plan - What we have to deal with...

Where to begin with ? How to organize test ?
problem interdependencies loops of
dependencies between components into an
architecture
36
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • A simple solution, with constraints on the design
  • no loops in an architecture
  • often possible
  • but local optimizations are not always optimal
    for the architecture
  • but designing interdependent components may also
    be relevant
  • The solution presented here
  • takes any model
  • optimizes the way to deal with loops of
    interdependent components

37
Interdépendance
  • Interdépendances
  • Cycle de dépendances
  • Composantes fortementconnexes (CFC)
  • Intégration
  • Big-Bang
  • Décomposer des CFCs Utilisation de bouchons

38
Décomposition des CFCs Bouchon
  • Bouchon une unité qui
  • simule le comportement dune unité
  • évite lutilisation des services dautres unités
    de la même CFC.

39
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • Integration Testing
  • Based on a TDG, how to order components ?
  • Minimizing the number of stubs
  • realistic stub gt dedicated simulator,  old
    component 

C stub simulates the behavior of C when A and B
are tested
40
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • Minimizing the number of stubs
  • specific stub gt deterministic component behavior

A stub for A and a stub for B
41
Plan
  1. Problématique du test
  2. Rappels test de logiciel
  3. Test de composants unitaires OO
  4. Test d'intégration
  5. Lintégration approches classiques
  6. Le test dintégration de classes par lexemple
  7. Lapproche à objets et lintégration
  8. Modélisation et stratégies dordonnancement
  9. Test système
  10. Diagnostic

42
4.4. Modélisation et stratégies dordonnancement
43
Problème de test dintégration
  • Modéliser la structure de dépendances
  • Décomposer des composantes fortement connexes en
    minimisant le coût de création des bouchons
  • Planifier le test.

44
  • Modélisation et algorithmes dordonnancement

45
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • The Test Dependency Graph
  • preliminary modeling
  • inheritance
  • Two basic types of test dependencies
  • client/provider
  • Contractual dependencies
  • specified in the public part of classes
  • included in the body of internal methods
  • Implementation dependencies not contractual ones

46
Efficient Strategies for Integration and
Regression Testing of OO Systems
The Test Dependency Graph preliminary modeling
  • 2 types of nodes
  • class node
  • method node

47
Efficient Strategies for Integration and
Regression Testing of OO Systems
The Test Dependency Graph preliminary modeling
  • 3 types of edges
  • class_to_class
  • method_to_class
  • method_to_method


48
Efficient Strategies for Integration and
Regression Testing of OO Systems
Method_to_class
A ... mA1(...v1 B...) mA2(v
A) ...
B
A
mA1
mA2
refinement
Method_to_method
A mA1(...v B...) v.mB1 mA2(...v
A...) v.mA1
B
A
mA1
mB1
mA2

an action language (ASL/OCL) code level
49
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • Class-to-class

A
A
B
B
aggregation
composition
50
Modélisation statique 1/2
B
B
A
A
h
A
A
Une classe
Un nœud
A
A
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
B
B
51
Modélisation statique 2/2
A
A
B
B
A
A
B
B
B
A
A
B
T
A
bind
AB
A
A
A
ltBgt
B
B
B
B
52
Modélisation dynamique
C
A
C
A
C
A
C
A
h
h
h
h
B
B
B
B
A abstract
BA
A
F
CA
F
E
et
E
DA
B
C
D
53
Éliminer les doublons
A
A
A
A
h
h
B
B
B
B
A
A
A
A
B
B
B
B
54
Efficient Strategies for Integration and
Regression Testing of OO Systems
D
E
D - pD1(v1E, v2 F)
A
E
mA1(v1 C) . pA1()
A
F
F
pA1
C
C
mA1
B mB1(v1 C) -pB1(v C) -pB2(v
G) . redefine pA1
H
B
pA1
mB1
pB1
G
G
H
pB2
Implementation dependency
Client contractual dependency
Inheritance contractual dependency
55
Efficient Strategies for Integration and
Regression Testing of OO Systems
56
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • Normalization rules

57
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • An efficient strategy (1)

Optimal ordering gt NP-complete complexity n!
58
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • An efficient strategy (2)

a
B
f
Tarjans algorithm
b
i
g
e
c
j
h
d
k
l
A
C
(e) or C
A or B
(a)
then
then
Complexity linear with nodes
59
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • An efficient strategy (3)

5
f
Bourdoncles algorithm
f
i
4
i
Candidate node max(fronds)
g
j
3
j
g
h
h
2
1
B
(e) or C
A or B
(a)
then
then
Break the connected component Reapply Tarjan
g, h, j, i, f
c, b, d
l, k
60
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • Result a partial ordered tree
  • all possible strategies

g
Optimized algorithm
d
specific stubs 4
realistic stubs 3
Random selection
k
specific stubs 9.9
Partial ordered tree
realistic stubs 5
61
Exo
  • Plan de test dintégration pour

A
E
C
B

62
Cases Studies
  • SMDS
  • Telecommunication Switching System Switched
    Multimegabits Data Service
  • running on top of connected networks such as the
    Broadband Integrated Service Digital Network
    (B-ISDN)
  • based on the asynchronous transfer mode (ATM).
  • 22 Kloc
  • Gnu Eiffel Compiler
  • open-source Eiffel compiler
  • 70 Kloc of Eiffel code
  • (http//SmallEiffel.loria.fr)

63
Case study SMDS UML diagram
64
Case study SMDS Test Dependency Graph
65
SMDS realistic stubs
66
  • Gnu Eiffel Compiler

67
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • A comparison with
  • 4 strategies
  • RC Random Components selection
  • MC Most Used Components
  • RT Random Thread of Dependencies
  • MT Most Used Components Threads of Dependencies
    (intuitive integration)
  • 100 000 times for random strategies

68
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • Specific stubs

60
48
47
50
39
38
36
40
34
Min
28
27
26
26
26
30
stubs
25
Mean
20
20
20
Max
20
10
0
RC
MC
RT
MT
Optim.
Strategies
69
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • Realistic stubs

35
30
29
30
27
25
24
25
21
Min
18
19
19
19
19
20
stubs
Mean
13
15
Max
9
9
9
10
5
0
RC
MC
RT
MT
Optim.
Strategies
70
Results summary
71
Variantes possibles
  • Mixte Big-Bang/Incrémental strict
  • Planifier aussi le contexte dont on dépend
    (Pascale Thévenod)

72
Subsystem that can be integrated in one block
(would need at least 1 stub)
Remaining part of the system
73
  • Mixte Big-Bang/incrémental strict

A
E
C
B

74
Mixte Big-Bang/incrémental strict
  • 3 classes par composante problème NP-complet
    encore !

D
A
E
C
B

75
Mixte Big-Bang/incrémental strict
  • 6 classes par composante

D
A
E
C
F
B

H
I
G
76
Mixte Big-Bang/incrémental strict
77
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • A new problem
  • Testing Resources Optimal Repartition
  • Using the partial ordered tree (acyclic)
  • Assumption a tester needs 1 time unit to
    integrate 1 component
  • to simplify presentation
  • Heuristic to reduce integration duration

78
Property
Minimum steps gtmax (A, B)
A longest_path B nb_nodes/nb_testers 1
4 testers 37 nodes max length 8 Minimum steps
10
10
79
Efficient Strategies for Integration and
Regression Testing of OO Systems
A Test Resources Driven example SMDS
An optimal solution components
steps testers 20 33 18 6 1 4 14 22 27 16 2
4 1 25 7 17 3 4 24 12 2 3 4 4 15 13 29 37 5 4 31
10 34 28 6 4 21 19 9 32 7 4 8 30 36 5 8 4 26 35 4
11 9 4 23 10 1
Reaches the optimal
80
Efficient Strategies for Integration and
Regression Testing of OO Systems
A Delay Driven example GNU Eiffel
7
  • Allocate the needed resources to obtain the
    minimum integration duration at least (88 div 7
    1 ) 13 testers
  • Minimum delay 7 steps

6
1
5
3
4
2
81
Efficient Strategies for Integration and
Regression Testing of OO Systems
A Delay Driven example GNU Eiffel
7 steps Optimum delay
82
Efficient Strategies for Integration and
Regression Testing of OO Systems
  • Conclusions
  • an adapted test model
  • Test Dependency Graph
  • efficient algorithms
  • for early stage test planning (UML)
  • integration
  • non-regression
  • evolving with design evolution
  • test economics criterion (early repartition of
    testing resources)
Write a Comment
User Comments (0)
About PowerShow.com