Generating Integration Test Orders for Aspect-Oriented Software with Multi-objective Algorithms Thelma Elita Colanzi1,2 , Wesley Klewerton Guez Assunção1 , Silvia Regina Vergilio1 , Aurora Trinidad Ramirez Pozo1 1 DInf - Federal University of Paraná (UFPR), CP: 19081, CEP: 19031-970, Curitiba, Brazil 2 DIN - State University of Maringá (UEM), CEP: 87.020-900, Maringá, Brazil Email: {thelmae, wesleyk, silvia, aurora}@inf.ufpr.br Abstract—During the integration test of aspect-oriented software, it is necessary to determine an order to integrate and test classes and aspects, which should be associated to a minimal possible stubbing cost. To determine such orders, strategies based on graphs were proposed. However, the problem is not trivial and in most cases sub-optimal solutions are obtained. Furthermore, the strategies do not consider different factors that influence on the stubbing process related to different coupling measures, contractual issues, etc. Often, these factors are in conflict and diverse good solutions are possible. To deal properly with this problem, this paper introduces a multi-objective optimization approach to generate a set of good orders that achieve a balanced compromise between different measures. The approach is evaluated by using two multi-objective evolutionary algorithms and two real AspectJ systems. The results point out that the approach can solve the problem efficiently. Moreover, it is shown how the tester can use the found solutions, according to the test goals. Keywords-Integration testing; aspect-oriented multi-objective evolutionary algorithms software; I. I NTRODUCTION Testing is a fundamental activity in the aspect-oriented (AO) software development related to quality assurance. Similarly to object-oriented (OO) software testing, different phases should be conducted [1]. The integration testing phase is necessary to test the interactions among classes and aspects. However, such phase contributes to increase testing costs, because many times stubs need to be constructed. In most systems, there is a dependency relation between two modules (either a class or aspect). When dependency cycles exist, it is necessary to break the dependency and to construct a stub to emulate the behavior of the required module. A recent study [2] shows that is very common to find complex dependency cycles in Java programs. In the AO context is very usual to find crosscutting concerns that are dependent of other crosscutting concerns, implying in dependency between aspects, and between classes and aspects [3]. Hence, to reduce stubbing costs, it is important to determine a sequence for integration and test of classes and aspects. Determine such sequence is not a trivial task, because different factors influence on the stub creation. In the OO context this problem is known as CITO (Class Integration and Test Order) problem [4], which has been intensively investigated by several authors [4], [5], [6]. These works have been recently extended to the AO context [3], [7], where the problem is called CAITO (Class and Aspects Integration Test Order [8]). The extensions propose graphbased strategies. These strategies, however, do not present satisfactory solutions. Frequently, they produce local optimal solution because they do not analyze the consequences of breaking a dependency. Other disadvantage is that they need some extension to be used with other factors related to the stubbing process. For example, number of class attributes, number of calls or methods invoked, constraints related to organizational or contractual reasons, etc. To overcome these limitations Genetic Algorithms (GA) have been applied in the OO [9], [10] and AO [8] contexts. In both contexts, these strategies obtained better results than the traditional ones based on graphs. They allow the use of different factors to establish the test orders by using a fitness function based on an aggregation (a weighted average) of number of operations and number of attributes to be minimized. However, this fitness function requires that the tester adjusts the weight of each objective which is a labor intensive task for complex cases. To reduce these efforts and make the evolutionary strategy more practical, multi-objective optimization algorithms have been used to solve the problem in the OO context [11], [12]. These works present promising results when compared with a simple GA strategy. The algorithms achieve more adequate solutions considering real constraints and diverse factors that may influence the CITO problem. In experiments conducted with different algorithms [12], the Multi-Objective Evolutionary Algorithms (MOEAs) presented the best results. Motivated by the results obtained with MOEAs in the OO context, we propose, in this paper, a multi-objective approach for the CAITO problem. We used two well known and widely applied MOEAs [13], which presented satisfactory results in the CITO context [14], to evaluate the approach: NSGA-II [15] and SPEA2 [16]. The goal is to find a test order set that satisfies constraints and optimizes different factors. NSGA-II and SPEA2 were used with two real AspectJ systems. The paper is organized as follows. Section II reviews related works. Section III presents main concepts about multiobjective optimization. Section IV introduces our multiobjective approach and Section V describes the evaluation conducted. Section VI presents the results and a comparison of the MOEAs. Section VII contains some usage examples and Section VIII concludes the paper. II. C LASS AND A SPECT I NTEGRATION AND T EST O RDER P ROBLEM In literature, many works address the CITO problem. The solutions proposed by these works are based on directed graphs, named Object Relation Diagrams (ORDs) [17]. In such graphs the vertexes are the classes, and their relations are the edges. When there are no dependency cycles in the graph, the solution is found with a simple reverse topological ordering of classes considering their dependencies. In most cases, this ordering cannot be applied, because most programs contains cycles [2]. This motivated studies to establish strategies that break the dependency cycles and produce an order that minimizes stubbing costs [4], [5], [17], [6]. However, Briand et al [9] mention a disadvantage of all the graph-based solutions. They are very hard to be adapted to consider many factors involved in the stub creation. Other limitation of these solutions is that they have as goal the reduction of broken cycles. However, there are cases where breaking two dependencies has a lower cost than breaking only one, and the solutions can be sub-optimal. To overcome these limitations, in another work, Briand et al [9], [10] explore the use of a GA and use fitness functions based on two coupling measures besides the dependency factor: the number of called methods and used attributes. The multi-objective approach was introduced in the OO context by Cabral et al [11]. They use Pareto concepts [18] to deal with the CITO problem. Results reported in [11] show that the multi-objective approach presents better solutions than the function based on aggregation used by Briand et al. Furthermore, this approach does not need weights adjustments and generates a set of good solutions to be used by the tester. In [12] the authors evaluate the multi-objective approach with three different algorithms, and NSGA-II, the evolutionary one, obtained the best results. In the AO context, the CAITO problem was inherited from the OO context. Hence, the existing strategies have been adapted. Most works propose graph-based strategies. In the strategy of Ceccato et al [19] (a) the classes are first tested without aspects, (b) the aspects are integrated and tested with the classes, and (c) the classes are tested in the presence of the aspects. The work of Ré et al [7] propose an extended ORD to consider dependency relations between classes and aspects. In the extended ORD the vertexes represent both classes and aspects, and considering the aspects mechanisms, new relationships between vertexes are possible. They are: Crosscutting Association (C) is the association generated by a pointcut with a class method or other advice; • Dependency (U) is generated by a relation between advices and pointcuts, and between pointcuts; • Association Dependency (As) occurs between objects involved in pointcuts; • Intertype Declaration Dependency (It) occurs when there are intertype relationships between aspects and the base class; • Inheritance Dependency (I) represents inheritance relationships among aspects or among classes and aspects. The proposed ORD extension was evaluated in [3], in which four strategies were studied. They are: Combined, Incremental+, Reverse, and Random. As a result of the study, the strategies Combined and Incremental+ performed better than the others, producing a lower number of stubs. The use of evolutionary algorithms in the AO context is recent. Galvan et al [8] described a mono-objective GA that uses an aggregation of functions for the problem. The GA presents better solutions, considering attribute and operation complexities, than the strategies based on graphs proposed by Ré et al. However the simple GA strategy presents the same limitations that in the OO context. In spite of the promising results obtained by the MOEAs to solve the CITO problem, in the AO context, these algorithms have not been explored yet. Because of this, in Section IV, we describe an approach based on multi-objective optimization to solve the CAITO problem. The approach is based on the extended ORD proposed in [7] and can be used with either strategy studied by Ré et al. However, to evaluate the approach (Section V), we use the Combined strategy [3] because it seems to be more practical, since classes and aspects probably are tested together if both are under development. To implement the approach we use MOEAs. These choices have their fundamentals based in [3] and [12]. • III. M ULTI - OBJECTIVE O PTIMIZATION Optimization problems with two or more objective functions are called multi-objective. In such problems, the objectives to be optimized are usually in conflict, which means that they do not have a single solution. In this way, the goal is to find a good trade-off between the objectives. Multi-objective optimization algorithms have been widely applied to solve problems with multiple interdependent interests (objectives) that must be optimized simultaneously. Variants of GA adapted to multi-objective problems were proposed. A GA is a heuristic inspired by the theory of natural selection and genetic evolution [20]. From an initial population, basic operators are applied. Through the selection operator, more copies of those individuals with the best values of the objective function are selected to be parent. So the best individuals (candidate solutions) will survive in the next population. The crossover operator combines parts of two parent solutions to create a new one. Evaluate Objectives Values; Assign Rank (level) based on Pareto - sort; 5 Generate Child Population; 6 Binary Tournament Selection; 7 Recombination and Mutation; 8 for i = 1 to g do 9 for each Parent and Child in Population do 10 Assign Rank (level) based on Pareto - sort; 11 Generate sets of nondominated vectors; 12 Determine Crowding distance; binary tournament selects individuals lower front; case 13 Loop (inside) by adding solutions to nextof generation starting in from f irst the frontsolution until N 0 individuals; of same the fronts, with greater crowding distance is 14 end chosen. New populations arewith generated withdistance; recombination 15 Select points on the lower front high crowding 16 Create next(line generation; and mutation 18 of Figure 1). 17 Binary Tournament Selection; Recombination Mutation; B.18 Strength Paretoand Evolutionary Algorithm (SPEA2) 19 end 3 4 The mutation operator randomly modifies a solution. These operators evolve the population, generation by generation. The general multi-objective minimization problem with no restrictions can be stated as to minimize Equation 1, − − subjected to → x ∈ Π, where: → x is a vector of decision variables and Π is a finite set of feasible solutions. − → − f (→ x) → → = (f1 (− x ), ..., fB (− x )) (1) − − Let → x ∈ Π and → y ∈ Π be two solutions. For a − − minimization problem, the solution → x dominates → y if → − Equations 2 and 3 are satisfied; x is a non-dominated − − solution if there is no solution → y that dominates → x. → − − − ∀fi ∈ f , i = 1...B, fi (→ x ) ≤ fi (→ y) → − → − → − ∃fi ∈ f , fi ( x ) < fi ( y ) (2) (3) The two MOEAs used in our work, NSGA-II (Nondominated Sorting Genetic Algorithm) [15] and SPEA2 (Strength Pareto Evolutionary Algorithm) [16], are briefly described below. A. Non-dominated Sorting Genetic Algorithm (NSGA-II) NSGA-II [15] (see Figure 1) uses a strong elitism strategy. For each generation, NSGA-II sorts the individuals from parent and offspring populations, considering the nondominance, creating several fronts (lines 10-11 of Figure 1). The first front is composed by all non-dominated solutions. The second one has the solutions dominated by only one solution, and the fronts are created until all solutions are classified. For the solutions of the same front, another sort is performed using the crowding distance to maintain the diversity of solutions (line 12). The crowding distance calculates how far away the neighbors of a given solution are and, after calculation, the solutions are decreasingly sorted. Procedure NSGA-II Input: N 0 , g, fk (X) . N 0 members evolved g generations to solve fk (X) 0 1 Initialize Population P ; 0 2 Generate random population - size N ; 3 Evaluate Objectives Values; 4 Assign Rank (level) based on Pareto - sort; 5 Generate Child Population; 6 Binary Tournament Selection; 7 Recombination and Mutation; 8 for i = 1 to g do 9 for each Parent and Child in Population do 10 Assign Rank (level) based on Pareto - sort; 11 Generate sets of nondominated solutions; 12 Determine Crowding distance; 13 Loop (inside) by adding solutions to next generation starting from the f irst front until N 0 individuals; 14 end 15 Select points on the lower front with high crowding distance; 16 Create next generation; 17 Binary Tournament Selection; 18 Recombination and Mutation; 19 end Figure 1. Pseudocode of NSGA-II (adapted from [13]) Both sorting procedures, front and crowding distance, are used by the selection operator (line 17 of the Figure 1). The Procedure SPEA2 Input: N 0 , g, fk (X) . N 0 members evolved g generations to solve fk (X) 0 1 Initialize Population P ; 0 2 Create empty external set E ; The main distinction of SPEA2 [16] (see Figure 2) is the use of an external archive, which stores non-dominated solutions found at each generation. In each generation a strength value for all solutions is calculated and used by the selection operator. The strength value of a solution i corresponds to the number of j individuals, belonging to the archive and the population, dominated by i. Procedure SPEA2 Input: N 0 , g, fk (X) . N 0 members evolved g generations to solve fk (X) 0 1 Initialize Population P ; 0 2 Create empty external set E ; 3 for i = 1 to g do 4 Compute fitness of each individual in P0 and E0 ; 5 Copy all nondominated individual from P0 and E0 to E0 ; 6 Use the truncation operator to remove elements from E0 when the capacity of the file has been exceeded; 7 If the capacity of E0 has not been exceeded then use dominated individuals in P0 to fill E0 ; 8 Perform binary tournament selection; 9 Apply crossover and mutation; 10 end Figure 2. Pseudocode of SPEA2 (adapted from [13]) 1 The fitness of a solution is the sum of the strength values of all its dominators, from archive and population (line 4 of Figure 2). Value equal to 0 indicates a non-dominated individual, and, high values point out that the individual is dominated by many others. After the selection, new populations are generated with recombination and mutation (lines 8-9). In the evolutionary procedure, the external archive that is used in the next generation is filled with non-dominated solutions of the current archive and population (line 5). IV. T HE M ULTI - OBJECTIVE A PPROACH The first step to apply the MOEAs to CAITO is to find a good representation for the problem. In this case, since the CAITO problem is related to permutations of modules (classes and aspects), which form test orders, the chromosome is represented by a vector of integer numbers that represents the modules. The size of this vector is equal to the number of modules of each system. The output produced by the approach (and algorithms) is a set of good (non-dominated) solutions considering all the objectives. The approach has the following entries: 1) A dependency model: specifies the kind of dependencies that should be considered. In our work we are using the extended ORD proposed by Ré et al [7]. We consider that Inheritance and Inter-type declaration dependencies cannot be broken. The dependencies that cannot be broken are an input for the algorithms, called dependency matrix1 . 1 Our algorithm do not break inheritance relationships, as it occurs in the experiment of Briand et al [9] These constraints are checked during the generation of initial population and in the application of mutation and crossover operators. When a precedence constraint is broken, this module is placed at the end of the chromosome and all modules after the position are decremented by one; 2) An integration strategy: this strategy specifies the way that the testing can be performed. In our work, the strategy Combined is used; 3) A set of objectives to be minimized (or maximized): these objectives are related to a set of collected measures (or a cost model) to be evaluated by the fitness function. We used the same coupling measures adopted by most related works [3], [8], [9], [11], [12], the dependencies between the server and client modules in terms of the number of attributes used and the number of distinct methods called. So, considering that: (i) mi and mj are two coupled modules (mi depends on mj ), (ii) modules are either classes or aspects, and (iii) the “operation” term represents class methods, aspect methods and aspect advices. We define: a) Attribute Coupling: the number of attributes locally declared in mj when references or pointers to instances of mj appear in the argument list of some operations in mi , as the type of their return value, in the list of attributes (data members) of mi , or as local parameters of operations of mi ; b) Operation Coupling: the number of operations (including constructors) locally declared in mj which are invoked by operations of mi . The stubbing complexity of an order t is based on its attribute and operation coupling. Two complexities are then calculated in the following way: A(t) (attribute complexity): counts the maximum number of attributes that would have to be handled in the stub if the dependency were broken (attribute coupling measure). This information is an input for the algorithms and is represented by a matrix A(i, j), where rows and columns refer to modules and i depends on j. Then, for a given test order t and a set of d dependencies to be broken, the attribute complexity A is calculated according to Equation 4, where n is the total number of modules and k is any module included before the module i in t. A(t) = n XX A(i, j); j 6= k (4) i=1,n j=1 O(t) (operation complexity): counts the number of operations that would have to be emulated in the stub if the dependency were broken (operation coupling measure). This information is an input for the algorithms and is represented by a matrix O(i, j), where rows and columns refer to modules and i depends on j. Then, for a given test order t and a set of d dependencies to be broken, the operation complexity O is computed as defined by Equation 5, where n is the total number of modules and k is any module included before the module i in t. O(t) = n XX O(i, j); j 6= k (5) i=1,n j=1 Based on these constraints and measures presented above, the problem is the search for an order that minimizes two objectives: the attribute and operation complexities. V. E VALUATION D ESCRIPTION In order to evaluate the proposed approach, we used two MOEAs: NSGA-II and SPEA2. We do not compare our approach with graph-based strategies since they are worst than GA to solve CAITO problem [8], [13]. Furthermore, we do not compare the two MOEAs with GA because MOEAs can obtain best results than GA [12], [13]. Differently of the Ré et al’s work [3], we used two real systems (written in AspectJ), which contain more than one thousand dependencies, in our evaluation: AJHotDraw and AJHSQLDB. The first is an AO refactoring of the JHotDraw two-dimensional graphics framework. The second is an AO refactoring of HSQLDB, which is a database manager. Table I contains information of both systems, such as number of classes, aspects, LOC, etc. In practice the coupling measures are generally calculated during the software design, however it is difficult to obtain architectural design documentation of complex systems. So, reverse engineering was performed to identify the existing dependencies between modules from programs code. A parser based on AJATO2 (AspectJ and Java Assessment Tool) was developed to do this. It uses the Java/AspectJ code as entry and returns the syntactic tree code. From this tree, all dependencies were identified. At the end, the parser generated as output three matrices (dependency and complexities) that were used as input to the MOEAs. NSGA-II and SPEA2 are available at the JMetal framework [21]. The parameters of these algorithms were set in a strategy consisting of three steps: (i) the population size and the number of maximum fitness evaluations; (ii) the mutation rate; and (iii) the crossover rate. In all steps, the algorithms were executed 4 times with the same parameters. During this process the dependency matrices obtained from BCEL3 system were used. This system was previously used by [9], [11] in the OO context, providing a reference of minimal values desired. The values adopted for both MOEAs are: Population Size = 300, Fitness Evaluation = 20000, Mutation Rate = 0.02, Crossover Rate = 0.95, and, only for SPEA2, Archive Size = 250. In spite of each algorithm being individually calibrated, both found better results with same parameters values. Each MOEA was executed 30 times for each AO system. Both algorithms executed the same number of fitness evaluation in order to analyze whether they can 2 http://www.teccomm.les.inf.puc-rio.br/emagno/ajato/ 3 http://archive.apache.org/dist/jakarta/bcel/old/v5.0/ Table I U SED S YSTEMS System Version AJHotDraw AJHSQLDB 0.4 18 # Dependencies # # Classes Aspects I U As It PointCuts Advices Total http://sourceforge.net/projects/ajhotdraw/ 18586 290 31 234 1177 140 40 0 1 1592 http://sourceforge.net/projects/ajhsqldb/files/ 68550 276 25 107 960 271 0 0 0 1338 Available at LOC produce similar solutions when they are restricted to the same resources. VI. R ESULTS AND A NALYSIS This section first presents the results achieved by NSGA-II and SPEA2, and after the results are compared using the quality indicator Euclidean Distance from the Ideal Solution (ED). ED is used to find the closest solution to the best objectives. An ideal solution has the minimum value of each objective, considering a minimization problem [22]. These minimum values are obtained from all non-dominated solutions found by the two algorithms in all runs. The cost of the ideal solution is: (A=73,O=27) for AJHotDraw, and (A=1761,O=454) for AJHSQLDB. Note that the ideal solution is not a feasible solution. The last column of Table II presents the number of solutions found by each MOEA. Apparently there is not a direct relationship between the number of modules/dependencies and number of solutions, since AJHotDraw has more modules and more dependencies than AJHSQLDB, but the algorithms found a lower number of solutions to the former. This table also presents, respectively in the third and fourth columns, the lowest ED and the fitness of the solution associated to this ED, for each algorithm. The MOEA that achieved the lowest ED is typed in boldface. We can note that NSGA-II achieved the solutions that have the lowest ED from the ideal solution for AJHotDraw and AJHSQLDB. Table III R ESULTS FOR GD INDICATOR NSGA-II SPEA2 Standard Standard p-value Average Average Deviation Deviation AJHotDraw 0.521715 0.636712 0.665711 1.063900 0.2025 AJHSQLDB 0.103939 0.066915 0.143139 0.065957 0.0055 System GD indicator. NSGA-II also has good solutions near to the ideal solution, as the ED indicator shows. Often, decision makers prefer solutions near to the ideal solution. So, in this case the NSGA-II should be chosen. VII. U SAGE E XAMPLES From the obtained solutions, the tester must choose which objective(s) to prioritize and sort the solutions according to the priorities. The decision on the prioritization of objectives can be influenced by several factors, such as restrictions on business, economics, etc. To illustrate this, consider some NSGA-II solutions presented in Table IV. The solution a has the lowest ED and b is an alternative since it has the second lowest ED. But, how may the tester choose among them? If the solution a were chosen for testing AJHotDraw, it would be necessary to create stubs for emulating 79 attributes and 33 operations. On the other hand, if the solution b of the same system were chosen it would be necessary to create stubs for emulating 77 attributes and 38 operations. Table IV S OME S OLUTIONS ACHIEVED BY NSGA-II Table II M AIN RESULTS Software AJHotDraw AJHSQLDB MOEA NSGA-II SPEA2 NSGA-II SPEA2 Lowest ED 8.485 14.422 132.969 136.821 Fitness of the Solutions (79, 33) (85, 35) (1826, 570) (1845, 562) Number of Solutions 9 11 22 21 The results are also compared using the quality indicator Generational Distance (GD) [23]. GD is an error measure used to examine the convergence of an algorithm to the P F true. P F true encompasses all non-dominated solutions found by all algorithms in all runs. The values obtained for this indicator are very similar (Table III), but NSGA-II reached better average. However, according to the Wilcoxon test there is statistical difference only for AJHSQLDB where NSGA-II is better. p − values are presented in the last column of Table III and they were obtained considering α = 0.05. From these results, it is possible to affirm that NSGA-II has a slight better convergence than SPEA2 as presented by a b A 79 77 AJHotDraw O ED 33 8.485 38 11.70 A 1826 1858 AJHSQLDB O ED 570 132.969 564 146.65 So, in the first case, the prioritized objective would be the measure O and, in the second case, the measure A. Solutions a and b have the best trade-off between these objectives and because of this they have lower ED than the solutions that contain the lowest value to measures A and O. In our study, the Combined strategy was used. Hence, all solutions returned by the algorithms contain orders to integration testing of classes and aspects together. However, another strategy could be used, for instance, the integration of only classes and, after this, aspects. Then the tester could use the solutions in a different way. VIII. C ONCLUDING R EMARKS This paper presented an approach to solve the CAITO problem by using MOEAs. To evaluate such approach, the MOEAs NSGA-II and SPEA2 were executed with two AO systems: AJHotDraw and AJHSQLDB. In this evaluation the MOEAs aimed at minimizing two objectives related to coupling measures: attribute and operation complexities. The results provide evidences that MOEAs can be efficiently used to solve the CAITO problem by achieving a good set of solutions. From the presented results, it is possible to affirm that NSGA-II has good solutions near the ideal solution, as the ED indicator shows. The algorithms find a set of different solutions containing different alternatives of compromise among the objectives. It is important to observe that these systems are complex with a lot of dependencies and consequently have many cycles. In such case an automatic support to determine the orders is fundamental to reduce the test effort and consequently costs. One limitation of our study is concerned to the used systems. So, we intend to perform experiments with other AO systems and other strategies for integrating classes and aspects to confirm the evidences found in this work. Furthermore, different configurations of the approach entries can be explored, and we plan to analyze the efficiency of MOEAs to solve the same problem but now using a greater number of objectives. In this case, other MOEAs also can be used, such as PAES and MOCell algorithms. IX. ACKNOWLEDGMENTS We would like to thank Edison K. Fillus for his contribution. This work was supported by CAPES/Reuni and CNPq. [8] R. Galvan, A. Pozo, and S. Vergilio, “Establishing Integration Test Orders for Aspect-Oriented Programs with an Evolutionary Strategy,” in LA-WASP, 2010. [9] L. C. Briand, J. Feng, and Y. Labiche, “Using genetic algorithms and coupling measures to devise optimal integration test orders,” in 14th International Conference on Software Engineering and Knowledge Engineering, July 2002. [10] ——, Experimenting with Genetic Algorithms and Coupling Measures to Devise Optimal Integration Test Orders. Carleton University, Technical Report SCE-02-03, October 2002. [11] R. Cabral, A. Pozo, and S. Vergilio, “A Pareto Ant Colony Algorithm Applied to the Class Integration and Test Order Problem,” in 22nd IFIP International Conference on Testing Software and Systems (ICTSS’10). Springer, 2010. [12] A. Pozo, G. Bertoldi, J. Árias, R. Cabral, and S. Vergilio, “Multi-objective optimization algorithms applied to the class integration and test order problem,” Software Tools for Technology Transfer, 2011, submitted. [13] C. A. C. Coello, G. B. Lamont, and D. A. V. Veldhuizen, Evolutionary Algorithms for Solving Multi-Objective Problems (Genetic and Evolutionary Computation), 2nd ed. Secaucus, NJ, USA: Springer-Verlag New York, Inc., 2007. [14] W. Assunção, T. Colanzi, A. Pozo, and S. Vergilio, “Establishing integration test orders of classes with several coupling measures,” in 13th Annual Genetic and Evolutionary Computation Conference - GECCO 2011, 2011, pp. 1867–1874. R EFERENCES [15] K. Deb, S. Agrawal, A. Pratap, and T. Meyarivan, “A fast elitist non-dominated sorting genetic algorithm for multiobjective optimization: NSGA-II,” Lecture Notes in Computer Science, pp. 849–858, 2000. [1] R. T. Alexander, J. M. Bieman, and A. A. Andrews, Towards the Systematic Testing of Aspect-Oriented Programs. Colorado State University, Technical Report, 2004. [16] E. Zitzler, M. Laumanns, and L. Thiele, “SPEA2: Improving the Strength Pareto Evolutionary Algorithm,” Gloriastrasse 35, CH-8092 Zurich, Switzerland, Tech. Rep. 103, 2001. [2] H. Melton and E. Tempero, “An empirical study of cycles among classes in Java,” Empirical Software Engineering, vol. 12, pp. 389–415, 2007. [17] D. C. Kung, J. Gao, P. Hsia, J. Lin, and Y. Toyoshima, “Class firewal, test order and regression testing of object-oriented programs,” J. of Object-Oriented Progr., vol. 8, no. 2, 1995. [3] R. Ré and P. C. Masiero, “Integration testing of aspectoriented programs: a characterization study to evaluate how to minimize the number of stubs,” in Brazilian Symposium on Software Engineering, October 2007, pp. 411–426. [18] V. Pareto, Manuel D’Economie Politique. Paris: Ams Press, 1927. [4] A. Abdurazik and J. Offutt, “Coupling-based class integration and test order,” in International Workshop on Automation of Software Test. Shanghai, China: ACM, May 2006. [19] M. Ceccato, P. Tonella, and F. Ricca, “Is AOP code easier or harder to test than OOP code,” in First Workshop on Testing Aspect-Oriented Program (WTAOP), Chicago, Illinois, 2005. [20] D. E. Goldberg, Genetic Algorithms in Search, Optimization, and Machine Learning. Addison-Wesley, January 1989. [5] L. C. Briand and Y. Labiche, “An investigation of graph-based class integration test order strategies,” IEEE Transactions on Software Engineering, vol. 29, no. 7, pp. 594–607, July 2003. [21] J. Durillo, A. Nebro, and E. Alba, “The jMetal framework for multi-objective optimization: Design and architecture,” in CEC 2010, Barcelona, Spain, July 2010, pp. 4138–4325. [6] Y. L. Traon, T. Jéron, J.-M. Jézéquel, and P. Morel, “Efficient object-oriented integration and regression testing,” IEEE Transactions on Reliability, pp. 12–25, 2000. [22] J. Cochrane and M. Zeleny, Multiple Criteria Decision Making. University of South Carolina Press, Columbia, 1973. [7] R. Ré, O. A. L. Lemos, and P. C. Masiero, “Minimizing stub creation during integration test of aspect-oriented programs,” in 3rd Workshop on Testing Aspect-Oriented Programs, Vancouver, British Columbia, Canada, March 2007, pp. 1–6. [23] D. A. van Veldhuizen and G. B. Lamont, “Multiobjective evolutionary algorithm test suites,” in Proceedings of the 1999 ACM symposium on Applied computing, ser. SAC ’99. New York, NY, USA: ACM, 1999, pp. 351–357. [Online]. Available: http://doi.acm.org/10.1145/298151.298382