TY - GEN
T1 - A flexible and non-intrusive approach for computing complex structural coverage metrics
AU - Whalen, Michael W.
AU - Person, Suzette
AU - Rungta, Neha
AU - Staats, Matt
AU - Grijincu, Daniela
PY - 2015/8/12
Y1 - 2015/8/12
N2 - Software analysis tools and techniques often leverage structural code coverage information to reason about the dynamic behavior of software. Existing techniques instrument the code with the required structural obligations and then monitor the execution of the compiled code to report coverage. Instrumentation based approaches often incur considerable runtime overhead for complex structural coverage metrics such as Modified Condition/Decision (MC/DC). Code instrumentation, in general, has to be approached with great care to ensure it does not modify the behavior of the original code. Furthermore, instrumented code cannot be used in conjunction with other analyses that reason about the structure and semantics of the code under test. In this work, we introduce a non-intrusive preprocessing approach for computing structural coverage information. It uses a static partial evaluation of the decisions in the source code and a source-to-bytecode mapping to generate the information necessary to efficiently track structural coverage metrics during execution. Our technique is flexible; the results of the preprocessing can be used by a variety of coverage-driven software analysis tasks, including automated analyses that are not possible for instrumented code. Experimental results in the context of symbolic execution show the efficiency and flexibility of our nonintrusive approach for computing code coverage information.
AB - Software analysis tools and techniques often leverage structural code coverage information to reason about the dynamic behavior of software. Existing techniques instrument the code with the required structural obligations and then monitor the execution of the compiled code to report coverage. Instrumentation based approaches often incur considerable runtime overhead for complex structural coverage metrics such as Modified Condition/Decision (MC/DC). Code instrumentation, in general, has to be approached with great care to ensure it does not modify the behavior of the original code. Furthermore, instrumented code cannot be used in conjunction with other analyses that reason about the structure and semantics of the code under test. In this work, we introduce a non-intrusive preprocessing approach for computing structural coverage information. It uses a static partial evaluation of the decisions in the source code and a source-to-bytecode mapping to generate the information necessary to efficiently track structural coverage metrics during execution. Our technique is flexible; the results of the preprocessing can be used by a variety of coverage-driven software analysis tasks, including automated analyses that are not possible for instrumented code. Experimental results in the context of symbolic execution show the efficiency and flexibility of our nonintrusive approach for computing code coverage information.
UR - http://www.scopus.com/inward/record.url?scp=84951768769&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84951768769&partnerID=8YFLogxK
U2 - 10.1109/ICSE.2015.68
DO - 10.1109/ICSE.2015.68
M3 - Conference contribution
AN - SCOPUS:84951768769
T3 - Proceedings - International Conference on Software Engineering
SP - 506
EP - 516
BT - Proceedings - 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, ICSE 2015
PB - IEEE Computer Society
T2 - 37th IEEE/ACM International Conference on Software Engineering, ICSE 2015
Y2 - 16 May 2015 through 24 May 2015
ER -