基于程序约束的细粒度JVM测试程序约简方法
作者:
作者单位:

作者简介:

杜义恒(2000—),男,硕士生,CCF学生会员,主要研究领域为软件测试;王赞(1979—),男,博士,教授,CCF专业会员,主要研究领域为软件测试,机器学习;赵英全(1994—),男,博士生,主要研究领域为编译器测试,JVM测试,并发测试;陈俊洁(1992—),男,博士,副教授,CCF高级会员,主要研究领域为软件分析与测试;陈翔(1980—),男,博士,副教授,CCF高级会员,主要研究领域为智能软件工程,软件仓库挖掘,经验软件工程;侯德俊(1979—),男,高级工程师,主要研究领域为网络与空间安全,软件开发及安全;郑开(1999—),男,硕士生,主要研究领域为软件测试.

通讯作者:

侯德俊,E-mail:hdj@tju.edu.cn

中图分类号:

TP311

基金项目:

国家自然科学基金(62232001,62002256)


Fine-grained JVM Test Program Reduction Method Based on Program Constraints
Author:
Affiliation:

Fund Project:

  • 摘要
  • |
  • 图/表
  • |
  • 访问统计
  • |
  • 参考文献
  • |
  • 相似文献
  • |
  • 引证文献
  • |
  • 资源附件
  • |
  • 文章评论
    摘要:

    为了对Java虚拟机(JVM)进行测试, 开发人员通常需要手工设计或利用测试生成工具生成复杂的测试程序, 从而检测JVM中潜在的缺陷. 然而, 复杂的测试程序给开发人员定位及修复缺陷带来了极高的成本. 测试程序约简技术旨在保障测试程序缺陷检测能力的同时, 尽可能地删减测试程序中与缺陷检测无关的代码. 现有研究工作基于Delta调试在C程序和XML输入上可以取得较好的约简效果, 但是在JVM测试场景中, 具有复杂语法和语义依赖关系的Java测试程序约简仍存在粒度较粗、约简效果较差的问题, 导致约简后的程序理解成本依然很高. 因此, 针对具有复杂程序依赖关系的Java测试程序, 提出一种基于程序约束的细粒度测试程序约简方法JavaPruner. 首先, 在语句块级别设计细粒度的代码度量方法; 随后, 在Delta调试技术上引入语句块之间的依赖约束关系来对测试程序进行约简. 以Java字节码测试程序为实验对象, 从现有的针对JVM测试的测试程序生成工具中筛选出具有复杂依赖关系的50个测试程序作为基准数据集, 并在这些数据集上验证JavaPruner的有效性. 实验结果表明, JavaPruner可以有效删减Java字节码测试程序中的冗余代码. 与现有方法相比, 在所有基准数据集上, 约简能力平均可提升37.7%. 同时, JavaPruner可以在保障程序有效性及缺陷检测能力的同时, 将Java字节码测试程序最大约简至其原有大小的1.09%, 有效降低了测试程序的分析和理解成本.

    Abstract:

    In order to test the Java virtual machine (JVM), developers often need to manually design or use test generation tools to create complex test programs to detect potential defects in the JVM. Nevertheless, complex test programs bring high costs to developers in terms of locating and fixing defects. Test program reduction techniques aim to minimize the amount of code in test programs that is unrelated to defect detection, while maintaining the program’s defect detection ability. Existing research has achieved sound reduction results based on Delta debugging in C programs and XML inputs, but in the JVM testing scenario, Java test programs with complex syntax and semantic dependencies still have problems with coarse granularity and poor reduction effects, resulting in high comprehension costs even after reduction. Therefore, this study proposes a fine-grained test program reduction method, called JavaPruner, based on program constraints for Java test programs with complex program dependencies. JavaPruner first designs a fine-grained code measurement method at the statement block level, and then introduces dependency constraint relationships between statement blocks based on Delta debugging to reduce the test program. This work targets Java bytecode test programs, and selects 50 test programs with complex dependencies from existing test program generation tools for JVM testing as the benchmark dataset to evaluate the effectiveness of JavaPruner. Experimental results show that JavaPruner can effectively reduce redundant code in Java bytecode test programs. Compared with existing methods, the reduction capability can be improved by an average of 37.7% on all benchmark datasets. At the same time, JavaPruner can maximize the reduction of Java bytecode test programs to 1.09% of their original size while ensuring program effectiveness and defect detection ability, effectively reducing the analysis and comprehension costs of test programs.

    参考文献
    相似文献
    引证文献
引用本文

杜义恒,王赞,赵英全,陈俊洁,陈翔,侯德俊,郑开.基于程序约束的细粒度JVM测试程序约简方法.软件学报,2024,35(7):3204-3226

复制
分享
文章指标
  • 点击次数:
  • 下载次数:
  • HTML阅读次数:
  • 引用次数:
历史
  • 收稿日期:2023-09-10
  • 最后修改日期:2023-10-30
  • 录用日期:
  • 在线发布日期: 2024-01-05
  • 出版日期:
您是第位访问者
版权所有:中国科学院软件研究所 京ICP备05046678号-3
地址:北京市海淀区中关村南四街4号,邮政编码:100190
电话:010-62562563 传真:010-62562533 Email:jos@iscas.ac.cn
技术支持:北京勤云科技发展有限公司

京公网安备 11040202500063号