loading...
 This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
An Investigation of Graph-Based Class Integration Test Order Strategies
July 2003 (vol. 29 no. 7)
pp. 594-607

Abstract—The issue of ordering class integration in the context of integration testing has been discussed by a number of researchers. More specifically, strategies have been proposed to generate a test order while minimizing stubbing. Recent papers have addressed the problem of deriving an integration order in the presence of dependency cycles in the class diagram. Such dependencies represent a practical problem as they make any topological ordering of classes impossible. Three main approaches, aimed at "breaking" cycles, have been proposed. The first one was proposed by Tai and Daniels and is based on assigning a higher-level order according to aggregation and inheritance relationships and a lower-level order according to associations. The second one was proposed by Le Traon et al. and is based on identifying strongly connected components in the dependency graph. The third one was proposed by Briand et al.; it combines some of the principles of the two previous approaches and addresses some of their shortcomings (e.g., the first approach may result into unnecessary stubbing whereas the second may lead to breaking cycles by "removing" aggregation or inheritance dependencies, thus leading to complex stubbing). This paper reviews these strategies (principles are described, advantages and drawbacks are precisely investigated) and provides both analytical and empirical comparisons based on five case studies.

[1] 594 B. Beizer, Software Testing Techniques, second ed. Boston, Mass.: Int'l Thomson Computer Press, 1990.[2] R.V. Binder, Testing Object-Oriented Systems Models, Patterns, and Tools. Addison-Wesley, 1999.[3] G. Booch, J. Rumbaugh, and I. Jacobson, The Unified Modeling Language User Guide. Addison Wesley, 1999.[4] L. Briand, J. Daly, and J. Wuest, A Unified Framework for Coupling Measurement in Object-Oriented Systems IEEE Trans. Software Eng., vol. 25, no. 1, pp. 91-121, 1999.[5] L. Briand, J. Feng, and Y. Labiche, Experimenting with Genetic Algorithms and Coupling Measures to Devise Optimal Test Orders Software Eng. with Computational Intelligence, T.M. Khoshgoftaar, ed., Kluwer, 2003.[6] L. Briand, Y. Labiche, and Y. Wang, Revisiting Strategies for Ordering Class Integration Testing in the Presence of Dependency Cycles Proc. 12th Int'l Symp. Software Reliability Eng. (ISSRE), pp. 287-296, Nov. 2001.[7] J.L. Devore, Probability and Statistics for Engineering and the Sciences, fifth ed. Duxbury Press, 1999.[8] E. Gamma et al., Design Patterns: Elements of Object-Oriented Software, Addison-Wesley, Reading, Mass., 1994.[9] M.J. Harrold, J.D. McGregor, and K.J. Fitzpatrick, Incremental Testing of Object-Oriented Class Structures Proc. 14th IEEE Int'l Conf. Software Eng. (ICSE), pp. 68-80, May 1992.[10] P.C. Jorgensen and C. Erickson, Object-Oriented Integration Testing Comm. ACM, vol. 37, no. 9, pp. 30-38, 1994.[11] D. Jungnickel, Graphs, Networks and Algorithms. Springer, 1999.[12] D. Kung, J. Gao, P. Hsia, J. Lin, and Y. Toyoshima, Class Firewall, Test Order, and Regression Testing of Object-Oriented Programs J. Object-Oriented Programming, vol. 8, no. 2, pp. 51-65, 1995.[13] D. Kung, J. Gao, P. Hsia, Y. Toyoshima, and C. Chen, On Regression Testing of Object-Oriented Programs J. Systems Software, vol. 32, no. 1, pp. 21-40, 1996.[14] Y. Labiche, P. Thévenod-Fosse, H. Waeselynck, and M.-H. Durand, Testing Levels for Object-Oriented Software Proc. 22nd IEEE Int'l Conf. Software Eng. (ICSE), pp. 136-145, June 2000.[15] V. Le Hanh, K. Akif, Y. Le Traon, and J.M. Jezequel, Selecting an Efficient OO Integration Testing Strategy: An Experimental Comparison of Actual Strategies Proc. 15th European Conf. Object-Oriented Programming (ECOOP), pp. 381-401, June 2001.[16] Y. Le Traon, T. Jéron, J.-M. Jézéquel, and P. Morel, Efficient Object-Oriented Integration and Regression Testing IEEE Trans. Reliability, vol. 49, no. 1, pp. 12-25, 2000.[17] B. Liskov and J.M. Wing, ”A Behavioral Notion of Subtyping,” ACM Trans. Programming Languages and Systems, vol. 16, no. 6, pp. 1,811–1,841, Nov. 1994.[18] L.A. Maciaszek, Requirements Analysis and System Design Developing Information Systems with UML. Addison-Wesley, 2001.[19] J.D. Mc Gregor and D.A. Sykes, A Practical Guide to Testing Object-Oriented Software. Addison-Wesley, 2001.[20] D.E. Perry and G.E. Kaiser, Adequate Testing and Object-Oriented Programming J. Object-Oriented Programming, vol. 2, no. 5, pp. 13-19, 1990.[21] C.L. Chang, R.A. Stachowitz, and J.B. Combs, “Validation of Nonmonotonic Knowledge-Based Systems,” Proc. IEEE Int'l Conf. Tools for Artificial Intelligence, Nov. 1990.[22] K.-C. Tai and F.J. Daniels, Interclass Test Order for Object-Oriented Software J. Object-Oriented Programming, vol. 12, no. 4, pp. 18-25, 35, 1999.[23] R. Tarjan, Depth-First Search and Linear Graph Algorithms SIAM J. Computing, vol. 1, no. 2, pp. 146-160, 1972.[24] R. Tarjan, Enumeration of the Elementary Circuits of a Directed Graph SIAM J. Computing, vol. 2, no. 3, pp. 211-216, 1973.[25] E.J. Weyuker, The Evaluation of Program-Based Software Test Data Adequacy Criteria Comm. ACM, vol. 31, no. 6, pp. 668-675, 1988.

Index Terms:
Integration testing, integration order, object-oriented software engineering, experimentation.
Citation:
Lionel C. Briand, Yvan Labiche, Yihong Wang, "An Investigation of Graph-Based Class Integration Test Order Strategies," IEEE Transactions on Software Engineering, vol. 29, no. 7, pp. 594-607, July 2003, doi:10.1109/TSE.2003.1214324
Usage of this product signifies your acceptance of the Terms of Use.