Negative Effects of Bytecode Instrumentation on Java Source Code
Coverage
Dávid Tengeri, Ferenc
Horváth, Árpád
Beszédes, Tamás Gergely
and Tibor Gyimóthy
Code coverage measurement is an important element in
white-box testing, both in industrial practice and academic
research. Other related areas are highly dependent on code
coverage as well, including test case generation, test
prioritization, fault localization, and others. Inaccuracies of a
code coverage tool sometimes do not matter that much but in
certain situations they can lead to serious confusion. For Java,
the prevalent approach to code coverage measurement is to use bytecode
instrumentation due to its various benefits over source
code instrumentation. However, if the results are to be
mapped back to source code this may lead to inaccuracies due to
the differences between the two program representations. In this
paper, we systematically investigate the amount of differences in
the results of these two Java code coverage approaches, enumerate
the possible reasons and discuss the implications on various
applications. For this purpose, we relied on two widely used tools
to represent the two approaches and a set of benchmark programs
from the open source domain.
Keywords: Code coverage,
white-box testing, Java bytecode instrumentation, source code
instrumentation, coverage tools.
Back