编译器技术交流会系列报告简介(三):陈雨亭,上海交通大学,基于字节码变种技术的Java虚拟机差别测试

报告题目:基于字节码变种技术的Java虚拟机差别测试

报告人:陈雨亭,上海交通大学

报告简介:

Java虚拟机是Java核心技术, 其可靠性对Java应用的正确、跨平台运行至关重要。然而,测试Java虚拟机,因其通常需要精心设计的测试类和测试喻言,往往难且低效。一个解决方案是采用字节码变种技术生成测试类,并利用差别测试以发现不同Java虚拟机的运行差异,最终发现Java虚拟机的缺陷。然而,此方法在实际中并不高效,因为盲目变种只会生成大量无效的或者冗余的测试类。


在研究中,我们针对此项挑战,提出模糊测试技术classfuzz和classming,生成具有代表性的测试用例,以分别测试Java虚拟机的启动过程与执行引擎。Classfuzz的核心思想是采用一系列的变种算子对种子程序进行变种操作,并将所生成的变种在一个参考虚拟机上执行以选择具有代表性的测试用例。Classming的核心思想是针对种子程序的控制流和数据流进行迭代变更,以生成执行多样的测试用例。上述所生成的测试用例可以被用来对Java虚拟机进行差别测试,寻找错误。


我们对classfuzz和classming技术分别进行实现及实验评估。实践结果表明,classfuzz和classming所生成的测试集可以扩大不同Java虚拟机的差别率,并可以有效发现不同Java虚拟机的启动过程和执行引擎中的差别。进一步的,我们的测试用例可以有效地揭示Java虚拟机实现代码中的错误。


报告人简介:

陈雨亭,上海交通大学副教授、博导。image001.jpg于南京大学计算机科学与技术系获得本科和硕士学位,于日本法政大学获得博士学位。主要研究方向是程序分析与测试、形式化方法,并在重要的国际会议与期刊上(包括PLDI、FSE、ASE、TSE等)多次发表论文。主持或参与多项科研项目,包括国家自然科学基金、国家973、863计划课题等。