...
【24h】

Coverage-Directed Differential Testing of JVM Implementations

机译:涵盖范围的JVM实现的差异测试

获取原文
获取原文并翻译 | 示例
   

获取外文期刊封面封底 >>

       

摘要

Java virtual machine (JVM) is a core technology, whose reliability is critical. Testing JVM implementations requires painstaking effort in designing test classfiles (*. class) along with their test oracles. An alternative is to employ binary fuzzing to differentially test JVMs by blindly mutating seeding classfiles and then executing the resulting mutants on different JVM binaries for revealing inconsistent behaviors. However, this blind approach is not cost effective in practice because most of the mutants are invalid and redundant. This paper tackles this challenge by introducing classfuzz, a coverage-directed fuzzing approach that focuses on representative classfiles for differential testing of JVMs' startup processes. Our core insight is to (1) mutate seeding classfiles using a set of predefined mutation operators (mutators) and employ Markov Chain Monte Carlo (MCMC) sampling to guide mutator selection, and (2) execute the mutants on a reference JVM implementation and use coverage uniqueness as a discipline for accepting representative ones. The accepted classfiles are used as inputs to differentially test different JVM implementations and find defects. We have implemented classfuzz and conducted an extensive evaluation of it against existing fuzz testing algorithms. Our evaluation results show that classfuzz can enhance the ratio of discrepancy-triggering classfiles from 1: 7 % to 11: 9 %. We have also reported 62 JVM discrepancies, along with the test classfiles, to JVM developers. Many of our reported issues have already been confirmed as JVM defects, and some even match recent clarifications and changes to the Java SE 8 edition of the JVM specification.
机译:Java虚拟机(JVM)是​​一项核心技术,其可靠性至关重要。测试JVM实现需要在设计测试类文件(* .class)及其测试oracle时进行艰苦的工作。另一种选择是采用二进制模糊测试,通过盲目更改种子类文件然后在不同的JVM二进制文件上执行生成的变量来揭示不一致的行为,从而对JVM进行差异测试。然而,由于大多数突变体都是无效且多余的,因此这种盲法在实践中并不具有成本效益。本文通过介绍classfuzz来解决这一挑战,classfuzz是一种覆盖率导向的模糊测试方法,专注于对JVM启动过程进行差异测试的代表性类文件。我们的核心见解是(1)使用一组预定义的突变运算符(mutators)对种子类文件进行突变,并采用马尔可夫链蒙特卡洛(MCMC)采样来指导变量选择,以及(2)在参考JVM实现上执行变量并使用覆盖唯一性作为接受具有代表性的学科。接受的类文件用作差异测试不同JVM实现并查找缺陷的输入。我们已经实现了classfuzz,并根据现有的模糊测试算法对其进行了广泛的评估。我们的评估结果表明,classfuzz可以将触发差异的类文件的比例从1:7%提高到11:9%。我们还向JVM开发人员报告了62个JVM差异以及测试类文件。我们已报告的许多问题已被确认为JVM缺陷,甚至与最近对JVM规范的Java SE 8版本的澄清和更改相匹配。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号