Generalizing AOP for Aspect-Oriented Testing

In profiling program execution to assess the adequacy of a test set, a challenge is to select the code to be included in the coverage assessment. Current mechanisms for doing this are coarse-grained, assume traditional concepts of modularity, require tedious and error-prone manual selection, and leave the tester’s intent implicit in the input provided to the testing tools. The aspect-oriented constructs of languages such as AspectJ promise to help ease and extend our ability to select the code to be included in a test adequacy criterion and to document the tester’s intent within the source code itself. Our contribution is a language-centric approach to automated test adequacy analysis that we call concern coverage. We claim that our approach enables explicit, precise, abstract, and machine-readable representation of the tester’s intent and that it can ease testing by eliminating the need for manual selection and explicit maintenance of test adequacy criteria.

[1]  Hidehiko Masuhara,et al.  Modeling Crosscutting in Aspect-Oriented Mechanisms , 2003, ECOOP.

[2]  Avi Ziv,et al.  User defined coverage—a tool supported methodology for design verification , 1998, DAC.

[3]  L. Markosian,et al.  Automating software analysis and testing using a program transformation system , 1989 .

[4]  James R. Cordy,et al.  Practical metaprogramming , 1992, CASCON.

[5]  S. L. Gerhart,et al.  Toward a theory of test data selection , 1975, IEEE Transactions on Software Engineering.

[6]  Lori L. Pollock,et al.  Testing with respect to concerns [software maintenance] , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[7]  Robert L. Probert,et al.  Optimal Insertion of Software Probes in Well-Delimited Programs , 1982, IEEE Transactions on Software Engineering.

[8]  Hridesh Rajan,et al.  Eos: instance-level aspects for integrated system design , 2003, ESEC/FSE-11.

[9]  Gregg Rothermel,et al.  The impact of software evolution on code coverage information , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[10]  James R. Larus,et al.  Optimally profiling and tracing programs , 1992, POPL '92.

[11]  Glen W. Russell,et al.  Experience with inspection in ultralarge-scale development , 1991, IEEE Software.

[12]  Gordon Kotik,et al.  Automating Software Analysis and Testing Using a Program Transformation System , 1989, Symposium on Testing, Analysis, and Verification.

[13]  Antonia Bertolino,et al.  Using Spanning Sets for Coverage Testing , 2003, IEEE Trans. Software Eng..

[14]  Michael E. Fagan Design and Code Inspections to Reduce Errors in Program Development , 1976, IBM Syst. J..

[15]  Alexander Heyl,et al.  The more, the merrier , 2010, Plant signaling & behavior.

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

[17]  Donald E. Knuth,et al.  Optimal measurement points for program frequency counts , 1973 .

[18]  L. Hobson‐Webb,et al.  The more the merrier? , 2008, Muscle & nerve.

[19]  Peter J. Middleton,et al.  Software Inspection , 1994, J. Inf. Technol..

[20]  Mary Jean Harrold,et al.  Testing: a roadmap , 2000, ICSE '00.

[21]  H. Rajan,et al.  Classpects: unifying aspect- and object-oriented language design , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[22]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[23]  A. Ziv,et al.  Off-The-Shelf Vs . Custom Made Coverage Models , Which Is The One for You ? , 1998 .

[24]  Jeffrey Dean,et al.  ProfileMe: hardware support for instruction-level profiling on out-of-order processors , 1997, Proceedings of 30th Annual International Symposium on Microarchitecture.

[25]  Günter Kniesel,et al.  CC 4 J – Code Coverage for Java A Load-Time Adaptation Success Story , 2002 .

[26]  Gregg Rothermel,et al.  Aristotle: A System for Research on and Development of Program-Analysis-Based Tools , 1997 .

[27]  Leon Moonen,et al.  Java quality assurance by detecting code smells , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[28]  Jürgen Vollmer Experiences with Gentle: Efficient Compiler Construction Based On Logic Programming , 1991, PLILP.

[29]  J. Larus Whole program paths , 1999, PLDI '99.

[30]  Hong Zhu,et al.  Software unit test coverage and adequacy , 1997, ACM Comput. Surv..

[31]  Hiralal Agrawal,et al.  Dominators, super blocks, and program coverage , 1994, POPL '94.

[32]  N. Falconer Structured Programming , 1973, Nature.

[33]  Michael E. Fagan Advances in software inspections , 1986, IEEE Transactions on Software Engineering.

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

[35]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[36]  Jeffrey Dean,et al.  Transparent, low-overhead profiling on modern processors , 1998 .

[37]  Daniel Mahrenholz,et al.  Program instrumentation for debugging and monitoring with AspectC++ , 2002, Proceedings Fifth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing. ISIRC 2002.

[38]  James R. Larus,et al.  Optimally profiling and tracing programs , 1994, TOPL.

[39]  James R. Larus,et al.  Efficient path profiling , 1996, Proceedings of the 29th Annual IEEE/ACM International Symposium on Microarchitecture. MICRO 29.

[40]  Jeffrey K. Hollingsworth,et al.  Efficient instrumentation for code coverage testing , 2002, ISSTA '02.

[41]  John Lamping The Role of the Base in Aspect Oriented Programming , 1999, ECOOP Workshops.

[42]  Laurie Hendren,et al.  Soot---a java optimization framework , 1999 .

[43]  James R. Cordy,et al.  TXL: A Rapid Prototyping System for Programming Language Dialects , 1991, Comput. Lang..

[44]  C. V. Ramamoorthy,et al.  Optimal placement of software monitors aiding systematic testing , 1975, IEEE Transactions on Software Engineering.

[45]  Susan L. Graham,et al.  An execution profiler for modular programs , 1983, Softw. Pract. Exp..