Towards A Practical Approach to Test Aspect-Oriented Software

Aspect-Oriented Programming (AOP) provides new constructs and tools to handle cross-cutting concerns in programs. Fully realizing the potentials of Aspect-Oriented Software Development requires new abstractions and techniques for testing. This paper proposes a first step towards a practical approach to test aspect-oriented software. The proposed approach is accompanied by a selection algorithm that can select test cases that are relevant to aspects under test. A new testing coverage definition is proposed to specify the sufficiency of test cases on the aspect being tested. A tool is developed to support the approach, automating test case selection and coverage calculation. A detailed case study of banking account processing illustrates this initial approach.

[1]  Gary T. Leavens,et al.  Observers and Assistants: A Proposal for Modular Aspect-Oriented Reasoning , 2002 .

[2]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1984, TOPL.

[3]  Jörg Kienzle,et al.  On Composition and Reuse of Aspects , 2003 .

[4]  Barbara G. Ryder,et al.  Constructing the Call Graph of a Program , 1979, IEEE Transactions on Software Engineering.

[5]  Elaine J. Weyuker,et al.  Selecting Software Test Data Using Data Flow Information , 1985, IEEE Transactions on Software Engineering.

[6]  Naoyasu Ubayashi,et al.  Aspect-oriented programming with model checking , 2002, AOSD '02.

[7]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984, SDE 1.

[8]  Martin Rinard,et al.  System Dependence Graph Construction for Aspect-Oriented Programs , 2003 .

[9]  David Grove,et al.  A framework for call graph construction algorithms , 2001, TOPL.

[10]  Thomas Ball,et al.  On the limit of control flow analysis for regression test selection , 1998, ISSTA '98.

[11]  Marcelo Sihman,et al.  Model Checking Applications of Aspects and Superimpositions , 2003 .

[12]  Oege de Moor,et al.  Static analysis of aspects , 2003, AOSD '03.

[13]  Ramnivas Laddad,et al.  Aspectj in Action: Practical Aspect-Oriented Programming , 2003 .

[14]  Jianjun Zhao,et al.  Data-flow-based unit testing of aspect-oriented programs , 2003, Proceedings 27th Annual International Computer Software and Applications Conference. COMPAC 2003.

[15]  Shmuel Katz,et al.  Diagnosis of Harmful Aspects Using Regression Verification , 2004 .

[16]  Boris Beizer,et al.  Software Testing Techniques , 1983 .

[17]  Boris Beizer,et al.  Software testing techniques (2. ed.) , 1990 .

[18]  Jens Krinke,et al.  Interference Analysis for AspectJ , 2003 .

[19]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[20]  Lori A. Clarke,et al.  A Formal Evaluation of Data Flow Path Selection Criteria , 1989, IEEE Trans. Software Eng..

[21]  John D. McGregor,et al.  A comprehensive program representation of object-oriented software , 1996, Ann. Softw. Eng..

[22]  Mary Jean Harrold,et al.  Slicing object-oriented software , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[23]  Mattia Monga,et al.  Using Program Slicing to Analyze Aspect-Oriented Composition , 2004 .