【技术实现步骤摘要】
基于二维输入空间探索的Java虚拟机缺陷检测方法
[0001]本专利技术属于软件缺陷检测领域,更具体地,涉及基于二维输入空间探索的Java虚拟机缺陷检测方法。
技术介绍
[0002]JVM(Java Virtual Machine,Java虚拟机)是一种虚拟机,它使计算机能够运行Java程序以及编译为Java字节码的其他语言编写的程序。目前较为流行的Java虚拟机包括Oracle公司的HotSpot虚拟机、IBM公司的J9虚拟机、RedHat公司的OpenJDK虚拟机等。Java虚拟机作为软件生态系统中非常重要的基础性软件,被广泛地应用在多种场景中,包括安卓手机系统,服务器系统,数据库系统等。因此,保证Java虚拟机的可靠性以及稳定性是十分重要的。
[0003]Java虚拟机在运行过程中,某些程序文件输入后,会使得Java虚拟机发生崩溃的情况,这种情况被认为是Java虚拟机的缺陷。Java虚拟机在迭代过程中,会产生多个版本,正常情况下,相同的程序文件输入多个不同版本的虚拟机后,执行结果应该一致,但某些特定的程序文件输 ...
【技术保护点】
【技术特征摘要】
1.一种基于二维输入空间探索的Java虚拟机缺陷检测方法,其特征在于,包括:获得记录有Java虚拟机测试用例的Java程序文件作为种子文件,并生成一个或多个变异体;每个变异体由所述种子文件中的部分代码特征经变异后生成,所述代码特征包括语言特征和结构特征;对于每一个变异体,基于预先建立的关联关系库选取与被变异的代码特征相关性最高的N个优化选项,并利用变异体及选取的优化选项构建测试输入;所述关联关系库中存储有优化选项与代码特征之间的关联性量化值,N为正整数;每个测试输入由变异体及其对应的一个或多个优化选项构成;在Java虚拟机上运行所构建的测试输入,将以下情况判定为缺陷:情况一:Java虚拟机崩溃;情况二:不同版本的Java虚拟机对于同一测试输入的运行结果不同;情况三:同一Java虚拟机对于包含同一变异体的多个测试输入的运行结果不同。2.如权利要求1所述的基于二维输入空间探索的Java虚拟机缺陷检测方法,其特征在于,所述关联关系库通过如下步骤建立:(S1)收集Java虚拟机的优化选项,去掉其中没有对应的属性文件的优化选项,得到优化选项集合S;(S2)提取回归测试中的函数并分析所提取函数中包含的代码特征,对于每一个代码特征,初始化其与所述优化选项集合S中每一个优化选项之间的关联度为0;(S3)选取一个未构建关联关系的函数作为目标函数,转入步骤(S4);(S4)遍历所述优化选项集合S中的优化选项,对于遍历到的每一个优化选项O
i
,记录优化选项O
i
打开和关闭情况下,Java虚拟机仅对目标函数进行编译时产生的属性文件,将两个属性文件之间的差异值累加到目标函数中包含的代码特征与优化选项O
i
之间的关联关系度量值;(S5)若还存在未构建关联关系的函数,则转入步骤(S3);否则,转入步骤(S6);(S6)对于每一个代码特征C
j
,将其与每一个优化选项之间的关联度除以包含代码特征C
j
的函数总数,得到代码特征C
j
与每一个优化选项之间的关联性量化值;(S7)利用优化选项与代码特征之间的关联性量化值构建关联关系库。3.如权利要求2所述的基于二维输入空间探索的Java虚拟机缺陷检测方法,其特征在于,对于每一个变异体,基于关联关系库选取与被变异的代码特征相关性最高的N个优化选项,包括:遍历所述优化选项集合S,...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。