Database-aware test coverage monitoring

Unlike traditional programs, a database-centric application interacts with a database that has a complex state and structure. Even though the database is an important component of modern software, there are few tools to support the testing of database-centric applications. This paper presents a test coverage monitoring technique that tracks a program's definition and use of database entities during test suite execution. The paper also describes instrumentation probes that construct a coverage tree that records how the program and the tests cover the database. We conducted experiments to measure the costs that are associated with (i) instrumenting the program and the tests and (ii) monitoring coverage. For all of the applications, the experiments demonstrate that the instrumentation mechanism incurs an acceptable time overhead. While the use of statically inserted probes may increase the size of an application, this approach enables database-aware coverage monitoring that increases testing time from 13% to no more than 54%

[1]  Yves Ledru,et al.  Experiences in coverage testing of a Java middleware , 2005, SEM '05.

[2]  William G. Griswold,et al.  Getting started with ASPECTJ , 2001, CACM.

[3]  Mary Lou Soffa,et al.  A family of test adequacy criteria for database-driven applications , 2003, ESEC/FSE-11.

[4]  Hector Garcia-Molina,et al.  Meaningful change detection in structured data , 1997, SIGMOD '97.

[5]  Aske Simon Christensen,et al.  Precise Analysis of String Expressions , 2003, SAS.

[6]  Paolo Tonella,et al.  Evolutionary testing of classes , 2004, ISSTA '04.

[7]  Gregory M. Kapfhammer,et al.  A Comprehensive Framework for Testing Database-Centric Software Applications , 2007 .

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

[9]  Bernd Freisleben,et al.  Supporting autonomic computing functionality via dynamic operating system kernel aspects , 2005, AOSD '05.

[10]  Hector Garcia-Molina,et al.  Efficient Snapshot Differential Algorithms for Data Warehousing , 1996, VLDB.

[11]  Vivek Sarkar,et al.  The Jikes Research Virtual Machine project: Building an open-source research community , 2005, IBM Syst. J..

[12]  George Reese,et al.  MySQL and mSQL , 1999 .

[13]  Javier Tuya,et al.  Using an SQL coverage measurement for testing database applications , 2004, SIGSOFT '04/FSE-12.

[14]  Jim Hugunin,et al.  Advice weaving in AspectJ , 2004, AOSD '04.

[15]  Gustavo Alonso,et al.  Dynamic weaving for aspect-oriented programming , 2002, AOSD '02.

[16]  Jennifer Widom,et al.  Change detection in hierarchically structured information , 1996, SIGMOD '96.

[17]  Alessandro Orso,et al.  Command-Form Coverage for Testing Database Applications , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[18]  Mary Lou Soffa,et al.  TimeAware test suite prioritization , 2006, ISSTA '06.

[19]  Gregg Rothermel,et al.  Supporting Controlled Experimentation with Testing Techniques: An Infrastructure and its Potential Impact , 2005, Empirical Software Engineering.

[20]  Abraham Silberschatz,et al.  Database System Concepts , 1980 .

[21]  James R. Larus,et al.  Exploiting hardware performance counters with flow and context sensitive profiling , 1997, PLDI '97.

[22]  Atif M. Memon,et al.  Call stack coverage for test suite reduction , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[23]  William Pugh,et al.  Compressing Java class files , 1999, PLDI '99.

[24]  Atif M. Memon,et al.  Call-Stack Coverage for GUI Test Suite Reduction , 2008, IEEE Transactions on Software Engineering.

[25]  Mary Lou Soffa,et al.  Demand-driven structural testing with dynamic instrumentation , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[26]  Elaine J. Weyuker,et al.  An AGENDA for testing relational database applications , 2004, Softw. Test. Verification Reliab..

[27]  Michal Young,et al.  Residual test coverage monitoring , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[28]  Paul H. J. Kelly,et al.  Profiling with AspectJ , 2007, Softw. Pract. Exp..

[29]  Gregg Rothermel,et al.  Prioritizing test cases for regression testing , 2000, ISSTA '00.