Abstract
Evaluation of Code Coverage is the problem of identifying the parts of a program that did not execute in one or more runs of a program. The traditional approach for code coverage tools is to use static code instrumentation. In this paper we present a new approach to dynamically insert and remove instrumentation code to reduce the runtime overhead of code coverage. We also explore the use of dominator tree information to reduce the number of instrumentation points needed. Our experiments show that our approach reduces runtime overhead by 38-90% compared with purecov, a commercial code coverage tool. Our tool is fully automated and available for download from the Internet.
- C-Cover Code Coverage Analyzer for C/C++, . http://www.bullseye.com/ccover.html, Bullseye Testing Technology.Google Scholar
- Crashme Benchmark by MySQL Database System, . http://www.mysql.com/information/crash-me.php.Google Scholar
- Rational PureCoverage for Unix, . http://www.rational.com/products/purecoverage/index.jtmpl, Rational Software Corporation.Google Scholar
- SPEC newsletter, . September 1995, http://www.specbench.org/osg/cpu95/CINT95.Google Scholar
- A. Aho, R. Sethi, and J. Ullman, Compilers: Principles, Techniques and Tools. 1986: Addison-Wesley Publishing Com. Google ScholarDigital Library
- H. Agrawal, "Dominators, Super Blocks and Program Coverage," POPL 94, Portland, Oregon, pp. 25-34. Google ScholarDigital Library
- B. Buck and J. K. Hollingsworth, "An API for Runtime Code Patching," The International Journal of High Performance Computing Applications,14, Winter 2000, pp. 317-329. Google ScholarDigital Library
- C. Pavlopoulou and M. Young, "Residual Test Coverage Monitoring," International Conference on Software Enginnering. 1999, Los Angeles, CA, pp. 277-284. Google ScholarDigital Library
- D. Bitton, D. J. DeWitt, and C. Turbyfill, "Benchmarking Database Systems - A Systematic Approach," Ninth International Conference on Very Large Data Bases. Oct. 31-Nov. 2, Florence, Italy. Google ScholarDigital Library
- J. Dean, C. A. Waldspurger, and W. E. Weihl, "Transparent, Low-Overhead Profiling on Modern Processors," Workshop on Profile and Feedback-Directed Compilation. October, Paris, France.Google Scholar
- J. Dean, J. E. Hicks, C. A. Waldspurger, W. E. Weihl, and G. Chrysos, "ProfileMe: Hardware Support for Instruction-Level Profiling on Out-of-Order Processors," 30th Symposium on Microarchitecture (Micro-30). December. Google ScholarDigital Library
- J. Larus, "Whole Program Paths," PLDI '99. May 1999, Atlanta, GA. Google ScholarDigital Library
- S. S. Muchnick, Advanced Compiler Design and Implementation. 1997: Morgan Kaufmann, Publishers Inc. Google ScholarDigital Library
- R. L. Probert, "Optimal Insertion of Software Probes in Well-Delimited Programs," IEEE Transactions on Software Engineering, January, 1981, pp. 34-42.Google Scholar
- T Ball and J. R. Larus, "Efficient Path Profiling," 29th Annual IEEE/ACM International Symposium on Microarchitecture, Paris, France, pp. 46-57. Google ScholarDigital Library
- W. E. Weihl, CPI: Continous Profiling Infrastructure, DIGITAL Forefront Magazine 1997.Google Scholar
Index Terms
- Efficient instrumentation for code coverage testing
Recommendations
Efficient instrumentation for code coverage testing
ISSTA '02: Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysisEvaluation of Code Coverage is the problem of identifying the parts of a program that did not execute in one or more runs of a program. The traditional approach for code coverage tools is to use static code instrumentation. In this paper we present a ...
Using code instrumentation to enhance testing on J2ME: a lesson learned with JInjector
HotMobile '09: Proceedings of the 10th workshop on Mobile Computing Systems and ApplicationsA wide range of J2ME applications are GUI-driven with significant code dedicated to handle the graphical user interface (GUI). To maximize the chances of detecting bugs, effective testing of such applications require end-to-end testing on devices; as ...
Code coverage differences of Java bytecode and source code instrumentation tools
Many software testing fields, like white-box testing, test case generation, test prioritization, and fault localization, depend on code coverage measurement. If used as an overall completeness measure, the minor inaccuracies of coverage data reported by ...
Comments