Télécharger la présentation
Publié parGeorgette Gross Modifié depuis plus de 8 années
1
Test d’intégration pour des systèmes à objets
Yves Le Traon et Vũ Lê Hạnh
2
Contexte Réalisation d’une « bonne » stratégie :
pour planifier l’intégration des systèmes à objets, le plus tôt possible dans le cycle de vie, en minimisant le coût du test. De quoi s’agit-il mon travail ?
3
Plan Introduction Intégration pour des systèmes à objets
Notre solution Modélisation de la structure de dépendances Décomposition des composantes fortement connexes Parallélisation Comparaison des études de cas Stratégie mixte Conclusion et perspectives
4
Plan Introduction Intégration pour des systèmes à objets
Notre solution Modélisation de la structure de dépendances Décomposition des composantes fortement connexes Parallélisation Comparaison des études de cas Stratégie mixte Conclusion et perspectives
5
Test d’intégration Objectif Difficultés principales de l’intégration
Vérifier l’interaction entre unités (méthode, classe ou package). Difficultés principales de l’inté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 d’unités (ex. risque d’utilisation hors domaine).
6
Architecture de dépendances
Unité à tester Dépendance à tester
7
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)
8
Approche classique : De haut en bas
Unité testée Dépendance testée Dépendance sous test Unité sous test Unité à tester Dépendance à tester Bouchon de test (stub) Dépendance simulée
9
Approche classique : De bas en haut
Unité à tester Dépendance à tester Unité sous test Dépendance sous test Unité testée Dépendance testée
10
Systèmes à objets Forte connectivité
Architecture cyclique – Interdépendances
11
(…) Cycle de vie en « spirale »
Intégration Réalisation Conception Analyse détaillée Analyse préliminaire « (de risque) » V1 V2 Validation Synergie avec approche par objets
12
(…) Composant vs Système?
Unit Testing Composant unitaire Intégration Validation Evolution Regression Testing Composant système La vue classique continuité
13
(…) Composant vs Système?
Test d'intégration Component Test de non-régression
14
(…)Langage UML- plusieurs vues
: Operator : Device start( ) stop( ) Class diagram Sequence diagram Statecharts Implementation diagram
15
UML Unified Modeling Language
(…) Langage UML UML Unified Modeling Language Class diagram A B Interfaces Interface Name A B inheritance A B navigability dependency A B Association A B composition A B aggregation A C B Association class
16
Test unitaire et d’intégration
Classiquement Étapes séparées Dans un cycle en spirale Un composant unitaire ne peut pas être testé hors de son contexte d’exécution > conséquence : test unitaire et test d’intégration sont des activités inséparables
17
Interdépendance Interdépendances Intégration Cycle de dépendances
Composantes fortement connexes (CFC) Intégration Big-Bang Décomposer des CFCs – Utilisation de bouchons
18
Décomposition des CFCs – Bouchon
Bouchon : une unité qui simule le comportement d’une unité évite l’utilisation des services d’autres unités de la même CFC. A B C CA CB Bouchon spécifique A B C CFC A B C C’ Bouchon réaliste
19
Problème de test d’inté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.
20
Plan Introduction Intégration pour des systèmes à objets
Notre solution Modélisation de la structure de dépendances Décomposition des composantes fortement connexes Parallélisation Comparaison des études de cas Stratégie mixte Conclusion et perspectives
21
État de l’art David C. Kung et al. – 1995
Kuo Chung Tai et Fonda J. Daniels – 1999 Lionel Briand et al. – 2001 Yvan Labiche et al. – 2000 Yves Le Traon et al. – 2000
22
D.C. Kung : Modélisation d’ORD
B C E D …class A : …class B{ … C g_var_C; …m (…D par_D…){ E l_var_E; }; } Agrégation Héritage Association
23
D.C. Kung : Exemple d’un ORD
A B C F H I E D G Association Agrégation Héritage
24
D.C. Kung : Décomposition et planification
Niveau mineur 1 2 Niveau majeur 2 1 6 3 4 5 A B C F H I E D G Association D Bouchon Agrégation Héritage E F #bouchons specs. : 3 #bouchons réals. : 3
25
A B C F H I E D G D E F K.C.Tai et F.J. Daniels 2 1 3 Association
Héritage Agrégation Association Association 1 2 3 D E Bouchon Agrégation Héritage 2 3 F #bouchons specs. : 4 #bouchons réals. : 3
26
Résultat Ordre Niveau Nœuds Simulateur Retester 1 1.1 C, A D (A ®
D), E (A E) 2 1.2 B 3 2.1 G F (G F) 4 2.2 E ,F 5 E (A E), F (G F) 6 2.3 D 7 D (A D) 8 3.1 H 9 3.2 I
27
L. Briand : Décomposition des CFCs
H I E D G Association D Bouchon F Agrégation Héritage 1 4 1 4 #bouchons specs. : 2 #bouchons réals. : 2
28
Y. Labiche : Traitement dynamique
G F FG DA Bouchon Association Agrégation Héritage
29
Points d’amélioration
Kung La modélisation est postérieure à la phase de développement La décomposition n’est pas stable La décomposition ne tient pas compte des étapes de retest L’ordonnancement est utilisé pour un seul testeur Tai-Daniels La décomposition n’est pas efficace Briand La décomposition ne tient pas compte directement de la nature des CFCs Labiche Le traitement dynamique est introduit après la décomposition.
30
Notre stratégie de planification
Modélisation de la structure de dépendances : Dès la phase de conception : à partir d’UML. Traitement statique ainsi que dynamique (comme Labiche). Décomposition des CFCs Tenir compte directement la nature des CFCs : cycle de dépendances. Tenir compte de la nature des relations (comme Kung). Tenir compte des étapes de retest (comme Tai-Daniels). Ordonnancement Répartir le test sur plusieurs testeurs.
31
Plan Introduction Intégration pour des systèmes à objets
Notre solution Modélisation de la structure de dépendances Décomposition des composantes fortement connexes Parallélisation Comparaison des études de cas Stratégie mixte Conclusion et perspectives
32
Modélisation statique 1/2
B A B A 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
33
Modélisation statique 2/2
B B A A B B B A A B T A AB «bind» A A A <B> B B B B
34
Modélisation dynamique
C A C A C A C B B B B A «abstract» BA A F et E CA F E DA B C D
35
Éliminer les doublons A A A A B B B B A A A A B B B B
36
Modélisation- préliminaire
3 types d’arcs class_to_class method_to_class method_to_method A B A est dépendant de B pour le test Sémantique d’un arc orienté …
37
Modélisation des méthodes
Method_to_class A ... +mA1(...v1: B...) … mA2(…v: A…) A B mA1 mA2 refinement Method_to_method A +mA1(...v: B...) {… v.mB1 …} +mA2(...v: A...) v.mA1 A B mA1 mB1 mA2 … an action language (ASL/OCL) code level
38
Autre exemple : les arcs class-to-method
B Graphe classe-à-classe solution 1 Perte d’information mB1 mB2 mB3 Graphe préliminaire A mA1 mA2 B Pas un graphe classique A mA1 mA2 B mB1 mB2 mB3 Graphe classes et méthodes solution 2 Pas de perte homomorphism
39
Modélisation au niveau de méthode
B A … m1 (…par_b : B…) { …X.m2 (…)… } A.m1 A X.m2 Méthode
40
Exemple D.mD F E F.mF D A A.mA C B H B.mA B.mB G
41
Autre exemple: dépendances d’implantation et dépendances contractuelles
- pD1(v1:E, v2 : F) pD1 A E +mA1(v1: C) {….} #pA1(…) {…} A F F C pA1 C mA1 B +mB1(v1: C) … -pB1(v: C) -pB2(v: G) …. #redefine pA1 {…} H B pA1 mB1 pB1 G pB2 G H Dépendance d’implantation Dépendance contractuelle de type clientèle Dépendance contractuelle de type héritage
42
Autre exemple : extraction de la partie publique
Graphe dépendant de l’implantation F E B G H pA1 mB1 pB1 pB2 A C D mA1 pD1 C D A mA1 B mB1 Graphe contractuel (spécification) Suppression des parties Non-réutilisables
43
Plan Introduction Intégration pour des systèmes à objets
Notre solution Modélisation de la structure de dépendances Décomposition des composantes fortement connexes Parallélisation Comparaison des études de cas Stratégie mixte Conclusion et perspectives
44
Minimiser le nombre de bouchons (1/2)
Objectif : Minimiser le coût de création des bouchons Minimiser le risque d’utilisation des bouchons Hypothèse Bouchon (Méthode).Coût = const Bouchon (Association).Coût = const Bouchon (Agrégation).Coût = const Bouchon (Association).Coût = Bouchon (Méthode).Coût + 1 Bouchon (Agrégation).Coût = Bouchon (Association).Coût + 2 1 0, 2 0 Bouchon.Coût = const La nature des CFCs : Composer de cycles de dépendances.
45
Minimiser le nombre de bouchons (2/2)
Critère Simuler l’unité qui participe au nombre maximum de cycles Compter le nombre de cycles : Pour un arc : arc d’un des trois types Agrégation/Association/Méthode Pour un nœud : nombre total de tous les arcs entrants
46
La solution initiale Modélisation depuis UML
Sans tenir compte des aspects dynamiques Considère comme unité d’intégration la classe aussi bien que la méthode Décomposition récursive des CFCs avec l’algorithme de Tarjan permettant de déterminer efficacement les CFCs Parallélisation de l’intégration Un premier algorithme
47
Optimalité ->NP-complet
La solution initiale Un graphe de l’architecture (1) a b e k f d c i j g h l Optimalité ->NP-complet complexité = n!
48
La solution initiale (2) B A C Complexity linear with #nodes a a b e k
f d c i j g h l f Tarjan’s algorithm b i g e c j h d k l A C Determination and ordering of connected components [(e) or C] then [A or B] then [(a)] Complexity linear with #nodes
49
La solution initiale (3) B f 5 f i 4 i g j 3 j g h h 1 2
algorithme de Bourdoncle f i 4 i nœud candidat = # max(fronds) g j 3 j g h h 1 2 B [(e) or C] then [A or B] then [(a)] Briser les SCCs Réappliquer Tarjan [l, k] [c, b, d] [g, h, j, i, f]
50
La solution initiale Result = a partial ordered tree
all possible strategies a g Optimized algorithm d f #specific stubs = 4 b i #realistic stubs = 3 j c Random selection h e k #specific stubs = 9.9 Partial ordered tree #realistic stubs = 5 l
51
Les études de cas Étude de cas Nombre de classes Nombre de dépendances
SMDS 37 72 Pylon 50 133 SmallEiffel 104 140 InterView 146 419 J2SE v1.31 588 1935 Swing de J2EE v1.31 694 3819
52
Etudes de cas SMDS Gnu Eiffel Compiler
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 (
53
Case study SMDS UML diagram
54
Case study SMDS Test Dependency Graph
55
SMDS realistic stubs
56
Gnu Eiffel Compiler
57
A comparison with 4 strategies
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) times for random strategies
58
Efficient Strategies for Integration and Regression Testing of OO Systems
Specific stubs 60 48 47 50 39 36 38 40 34 Min 27 28 #stubs 30 25 26 26 26 Mean 20 20 20 20 Max 10 RC MC RT MT Optim. Strategies
59
Efficient Strategies for Integration and Regression Testing of OO Systems
Realistic stubs 35 30 29 30 27 25 24 25 21 19 19 19 18 19 Min 20 #stubs Mean 15 13 Max 9 9 9 10 5 RC MC RT MT Optim. Strategies
60
Results summary SMDS case study GNU Eiffel case study
22 25 32 35 28 9 43 46 34 10 20 30 40 50 RC MC RT MT Optim. #stubs 38 27 63 17 87 85 60 80 100 Min Mean Max SMDS case study GNU Eiffel case study Specific stubs counting Realistic stubs counting 36 26 39 48 47 13 18 19 21 24 29
61
Bouchon Réaliste Spécifique Max #cyclesMéthode Max #cyclesAssociation
Max (#cyclesMéthode + #cyclesAssociation #cyclesAgrégation) Max #cyclesMéthode Max #cyclesAssociation Spécifique Max #cyclesAgrégation
62
Minimiser le nombre d’utilisations des bouchons
Objectif : Minimiser le nombre d’étapes de retest Minimiser le risque d’utilisation des bouchons Hypothèse Bouchon (Méthode).#Appels = const Bouchon (Association).#Appels = const Bouchon (Agrégation).#Appels = const Bouchon (Association).#Appels = Bouchon (Méthode). #Appels + 1 Bouchon (Agrégation).#Appels = Bouchon (Association). #Appels + 2 1 0, 2 0 Bouchon.Coût = const
63
Minimiser le nombre d’utilisations des bouchons
Nombre d’arcs entrants Critère Simuler l’unité qui participe au nombre minimum de arcs entrants
64
Bouchon Réaliste Spécifique Max #entrantMéthode
Min (#entrantMéthode + #entrantAssociation + #entrantAgrégation) Max #entrantMéthode Max #entrantAssociation Spécifique Méthode Association Agrégation
65
Exemple – bouchon réaliste
4 8 2 D 4 5 6 Bouchon 5 4 6 8 F 2 A B C H I G F E D 8 5 4 6 1 Association Agrégation Héritage
66
Exemple – bouchon spécifique
4 2 1 A A B C H I G F E D Association 4 1 2 6 4 5 6 2 H Bouchon 1 Agrégation 4 1 2 E Héritage 4 5 6 5 2 1 G 2 1 6
67
Exemple – comparatif avec Briand sans polymorphisme – notre solution
G Association D Bouchon F Agrégation Héritage 1 2 1 2
68
Exemple – comparatif avec Briand sans polymorphisme – Briand
G F E D Association D 1 4 2 3 1 6 Agrégation 1 E 4 2 1 3 H 3 6 2 Bouchon Héritage 2 3 4 1 2 4 1 1 2 4 1 4 1 2 3 1 G 1 6
69
Plan Introduction Intégration pour des systèmes à objets
Notre solution Modélisation de la structure de dépendances Décomposition des composantes fortement connexes Parallélisation Comparaison des études de cas Stratégie mixte Conclusion et perspectives
70
Répartition des testeurs
1 testeur : Les feuilles d’abord. n testeurs (n > 1) Hypothèse Le temps de test de toutes les unités est identique Exemple n = 2 Un ordre possible : (B, F), (D, G), E, C, A Un ordre optimal : (G, F), (B, E), (C, D), A (B, G), (E, F), (C, D), A A B C D E F G
71
Répartition des testeurs
Property Minimum steps >=max (A, B) A= longest_path B= [nb_nodes/nb_testers] +1 4 testers 37 nodes max length = 8 Minimum steps= 10 10
72
Répartition des testeurs
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
73
Répartition des testeurs
Branches : A-B A-C-E-G A-D-F Chemin critique A- C-E-G Répartition totale #testeurs = #branches temps_de_test = temps_de_test_de_chemin_critique A B C D E F G
74
Répartition des testeurs
Condition : #testeurs < #branches Répartition : Choisir la feuille d’un chemin critique. Exemple avec 2 testeurs : 1er : G E C A 2nd : F B D Avantages : Profiter du temps libre d’un testeur sur les branches non-critiques A B C D E F G
75
Répartition des testeurs: Ex 1
A Test Resources Driven example SMDS An optimal solution components steps testers Reaches the optimal 37 nœuds, 4 testeurs => (minimum = 10)
76
Répartition des testeurs: Ex 2
A Delay Driven example GNU Eiffel 7 steps = Optimum delay
77
Plan Introduction Intégration pour des systèmes à objets
Notre solution Modélisation de la structure de dépendances Décomposition des composantes fortement connexes Parallélisation Comparaison des études de cas Stratégie mixte Conclusion et perspectives
78
Les études de cas Étude de cas Nombre de classes Nombre de dépendances
SMDS 37 72 Pylon 50 133 SmallEiffel 104 140 InterView 146 419 J2SE v1.31 588 1935 Swing de J2EE v1.31 694 3819
79
Le nombre de bouchons réalistes
80
Le nombre de bouchons spécifiques
81
Efficacité relative – bouchon réaliste
i {Kung, Tai-Daniels, Briand, Nœud, Arc} E = min {xi}/xi
82
Efficacité relative – bouchon spécifique
83
Plan Introduction Intégration pour des systèmes à objets
Notre solution Modélisation de la structure de dépendances Décomposition des composantes fortement connexes Parallélisation Comparaison des études de cas Stratégie mixte Conclusion et perspectives
84
Subsystem that can be integrated
in one block (would need at least 1 stub) Remaining part of the system
85
Stratégie mixte Constat : Objectif Hypothèse Solution Sous-systèmes
souvent « très cohérents » Objectif Éviter d’introduire des bouchons dans les sous- systèmes cohérents Hypothèse Un testeur peut maîtriser un ensemble de n unités. Solution Arrête de décomposer quand la taille de CFC est inférieure à n
86
Mixte Big-Bang/incrémental strict
D A E C F B G H I J
87
Mixte Big-Bang/incrémental strict
3 classes par composante : problème NP-complet … encore ! D A E C F B G H I J
88
Mixte Big-Bang/incrémental strict
6 classes par composante D A E C F B H J G I
89
Critère final Min poids_entrée
Max (#cyclesMéthode + #cyclesAssociation #cyclesAgrégation) Max #cyclesMéthode Max #cyclesAssociation Max taille_cycle Min (#entrantMéthode + #entrantAssociation #entrantAgrégation) Max #entrantMéthode Max #entrantAssociation
90
F A B C H I G F E D Exemple 4 5 6 Bouchon 5 4 6 8 2 8 5 4 6 1
5 6 Bouchon 5 4 6 8 F 2 A B C H I G F E D 8 5 4 6 1 Association Agrégation Héritage
91
Changement de taille maîtrisable
92
Changement de taille maîtrisable
93
Mixte Big-Bang/incrémental strict
Taille max SCC 1 5 SMDS, 37 classes, 72 connects 9 SmallEiffel, 104 classes, 140 connects InterViews, 146 classes, 419 connects 7 3 Pylon, 50 classes, 133 connects Java, 588 classes, 1935 connects Swing, 694 classes, 3819 connects 14
94
Plan Introduction Intégration pour des systèmes à objets
Notre solution Modélisation de la structure de dépendances Décomposition des composantes fortement connexes Parallélisation Comparaison des études de cas Stratégie mixte Conclusion et perspectives
95
Conclusion Stratégie : Application
La modélisation complète de la structure dépendance Une décomposition efficace Une parallélisation Application Le module TestStrategy de l’AGL Objecteering (Softeam)
96
Perspectives Décomposition Parallélisation
Obtenir la complexité et le nombre d’utilisation des unités. Traiter la complexité des relations « doublons ». Estimer le seuil de complexité maîtrisable (nombre et poids d’une CFC). Chercher une heuristique pour équilibrer les CFCs décomposées. Parallélisation Chercher une heuristique pour améliorer la parallélisation
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.