Data-flow coverage has been demonstrated to be efficient in exposing bugs in software. However, due to the complexity of the task at hand, the tooling for providing a thorough data-flow coverage analysis for the Java programming language is lacking support for a precise analysis. In this paper, we describe the integration of a dynamic data-flow coverage analysis with symbolic execution in detail. The proposed tool uses a dynamic analysis opposed to a static over-approximation to solely include reachable definition-usage chains (DUCs). The downside of this approach of not having a definite measure of the relative achieved coverage is mitigated by also employing symbolic execution. The overall tool integrates with IDEs using the Language Server Protocol to visualize and provide clear feedback on the quality and coverage of executed JUnit test cases.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Implementation Details of Integrating Dynamic Data-Flow Coverage Analysis with Symbolic Execution

  • Laura Troost,
  • Hendrik Winkelmann,
  • Herbert Kuchen

摘要

Data-flow coverage has been demonstrated to be efficient in exposing bugs in software. However, due to the complexity of the task at hand, the tooling for providing a thorough data-flow coverage analysis for the Java programming language is lacking support for a precise analysis. In this paper, we describe the integration of a dynamic data-flow coverage analysis with symbolic execution in detail. The proposed tool uses a dynamic analysis opposed to a static over-approximation to solely include reachable definition-usage chains (DUCs). The downside of this approach of not having a definite measure of the relative achieved coverage is mitigated by also employing symbolic execution. The overall tool integrates with IDEs using the Language Server Protocol to visualize and provide clear feedback on the quality and coverage of executed JUnit test cases.