Is Bytecode Instrumentation as Good as Source Code Instrumentation: An Empirical Study with Industrial Tools

被引:0
|
作者
Li, Nan [1 ]
Meng, Xin [1 ]
Offutt, Jeff [1 ]
Deng, Lin [1 ]
机构
[1] George Mason Univ, Fairfax, VA 22030 USA
关键词
D O I
暂无
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Branch coverage (BC) is a widely used test criterion that is supported by many tools. Although textbooks and the research literature agree on a standard definition for BC, tools measure BC in different ways. The general strategy is to "instrument" the program by adding statements that count how many times each branch is taken. But the details for how this is done can influence the measurement for whether a set of tests have satisfied BC. For example, the standard definition is based on program source, yet some tools instrument the bytecode to reduce computation cost. A crucial question for the validity of these tools is whether bytecode instrumentation gives results that are the same as, or at least comparable to, source code instrumentation. An answer to this question will help testers decide which tool to use. This research looked at 31 code coverage tools, finding four that support branch coverage. We chose one tool that instruments the bytecode and two that instrument the source. We acquired tests for 105 methods to discover how these three tools measure branch coverage. We then compared coverage on 64 methods, finding that the bytecode instrumentation method reports the same coverage on 49 and lower coverage on 11. We also found that each tool defined branch coverage differently, and what is called branch coverage in the bytecode instrumentation tool actually matches the standard definition for clause coverage.
引用
收藏
页码:380 / 389
页数:10
相关论文
共 50 条
  • [1] Code coverage differences of Java bytecode and source code instrumentation tools
    Ferenc Horváth
    Tamás Gergely
    Árpád Beszédes
    Dávid Tengeri
    Gergő Balogh
    Tibor Gyimóthy
    Software Quality Journal, 2019, 27 : 79 - 123
  • [2] Code coverage differences of Java']Java bytecode and source code instrumentation tools
    Horvath, Ferenc
    Gergely, Tamas
    Beszedes, Arpad
    Tengeri, David
    Balogh, Gergo
    Gyimothy, Tibor
    SOFTWARE QUALITY JOURNAL, 2019, 27 (01) : 79 - 123
  • [3] Negative Effects of Bytecode Instrumentation on Java']Java Source Code Coverage
    Tengeri, David
    Horvath, Ferenc
    Beszedes, Arpad
    Gergely, Tamas
    Gyimothy, Tibor
    2016 IEEE 23RD INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION, AND REENGINEERING (SANER), VOL 1, 2016, : 225 - 235
  • [4] Mobile code security by Java']Java bytecode instrumentation
    Chander, A
    Mitchell, JC
    Shin, I
    DISCEX'01: DARPA INFORMATION SURVIVABILITY CONFERENCE & EXPOSITION II, VOL II, PROCEEDINGS, 2001, : 27 - 40
  • [5] A Generic and Configurable Source-Code Instrumentation Component
    Geimer, Markus
    Shende, Sameer S.
    Malony, Allen D.
    Wolf, Felix
    COMPUTATIONAL SCIENCE - ICCS 2009, 2009, 5545 : 696 - +
  • [6] Obtaining sample path derivatives by source code instrumentation
    Braude, EJ
    DISCRETE EVENT DYNAMIC SYSTEMS-THEORY AND APPLICATIONS, 1996, 6 (04): : 371 - 378
  • [7] Automated Source Code Instrumentation for Verifying Potential Vulnerabilities
    Li, Hongzhe
    Oh, Jaesang
    Oh, Hakjoo
    Lee, Heejo
    ICT SYSTEMS SECURITY AND PRIVACY PROTECTION, SEC 2016, 2016, 471 : 211 - 226
  • [8] Performant Binary Fuzzing without Source Code using Static Instrumentation
    Pauley, Eric
    Tan, Gang
    Zhang, Danfeng
    McDaniel, Patrick
    2022 IEEE CONFERENCE ON COMMUNICATIONS AND NETWORK SECURITY (CNS), 2022, : 226 - 235
  • [9] An Empirical Study on the Occurrences of Code Smells in Open Source and Industrial Projects
    Rahman, Md. Masudur
    Satter, Abdus
    Joarder, Md. Mahbubul Alam
    Sakib, Kazi
    PROCEEDINGS OF THE16TH ACM/IEEE INTERNATIONAL SYMPOSIUM ON EMPIRICAL SOFTWARE ENGINEERING AND MEASUREMENT, ESEM 2022, 2022, : 289 - 294