当前位置: 首页 > 专利查询>南京大学专利>正文

一种用于系统异常处理测试的程序集生成方法和装置制造方法及图纸

技术编号:34563302 阅读:37 留言:0更新日期:2022-08-17 12:51
本发明专利技术公开了一种用于系统异常处理测试的程序集生成方法和装置,该方法对原始程序进行插桩,形成插桩程序,然后执行插桩程序,通过所插桩的指令跟踪异常处理链,根据异常处理链对程序进行迭代变异,形成变异程序集。由此,程序员可以依据这些变异程序对系统的异常处理进行测试,以找出异常处理方式的不同,由此辅助程序员对系统异常处理的理解,从而使得程序员所开发的代码能够适用于不同的系统。员所开发的代码能够适用于不同的系统。员所开发的代码能够适用于不同的系统。

【技术实现步骤摘要】
一种用于系统异常处理测试的程序集生成方法和装置


[0001]本专利技术涉及异常处理测试。

技术介绍

[0002]异常处理是软件程序系统的重要手段。异常处理过程一方面与编程代码所定义的处理过程相关,另一方面与程序所运行的平台系统的处理机制相关。简单来说,对于通过编译执行的编程语言所编写的程序,程序代码编译后运行的平台系统是各种操作系统,各种不同的操作系统具有不同的异常处理机制;对于Java等解释执行的编程语言所编写的程序,其程序所运行的平台系统,比如Java虚拟机,不同的Java虚拟机具有不同的异常处理机制。虽然从规范的编程语言角度上看,异常处理过程大体相似,尤其由同一语言所编写的程序代码,在逻辑上是应该是相同的。但程序所运行的平台系统底层异常处理机制是不一样的。比如就Java语言而言,不同厂商所开发的Java虚拟机底层异常处理机制是不同的,甚至同一厂商所开发的不同版本的Java虚拟机之间也会存在细微的差别。
[0003]从鲁棒性考虑,所编写的程序需要与程序所运行的平台系统契合。然而这对于程序员而言是一个巨大的考验。一方面,在软件程序的测本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种用于系统异常处理测试的程序集生成方法,其特征在于,包括以下步骤:步骤S1,用于:获取原始程序及测试输入,并对原始程序插入异常路径跟踪指令后得到插桩程序;步骤S2,用于:根据所述测试输入执行所述插桩程序,通过插入的异常路径跟踪指令,获得所述插桩程序的执行路径,然后根据所述插桩程序和执行路径提取出异常处理链和函数调用栈组成异常处理链信息,进而组成异常处理链信息集合,再将所述插桩程序、执行路径和异常处理链信息集合加入变异程序集;所述变异程序集是变异程序信息的集合;所述变异程序信息包括程序代码、执行路径和异常处理链信息集合;所述异常处理链信息包括异常处理链和函数调用栈;所述异常处理链是按异常处理执行顺序所排列而成的异常处理节点序列;所述异常处理节点包括抛出异常的位置、抛出异常的类型、捕获异常的位置和捕获异常的类型;所述抛出异常的位置和捕获异常的位置包括在执行路径中的位置和在程序代码中的位置;所述函数调用栈是所述异常处理链所对应的异常最初抛出的函数调用关系栈;步骤S3,用于:以变异程序信息中异常处理节点的数量作为概率因子,从所述变异程序集中随机选取一个所述变异程序信息作为种子;步骤S4,用于:在所述种子的异常处理链集合中随机选择一个异常处理链信息作为种子异常处理链信息,并随机选择一种变异方式,对种子的程序代码进行随机变异,得到变异程序;步骤S5,用于:根据所述测试输入执行所述变异程序,通过插入的异常路径跟踪指令,获得所述变异程序的执行路径,然后根据所述变异程序和执行路径提取出异常处理链和函数调用栈组成异常处理链信息,进而组成异常处理链信息集合,并从异常处理链信息集合中找出与所述种子异常处理链信息相对应的变异异常处理链信息;步骤S6,用于:若变异程序的异常处理链信息数量不小于所述种子的异常处理链信息数量并且所述变异异常处理链信息中异常处理节点的数量不小于所述种子异常处理链信息中异常处理节点的数量,则将变异程序、变异程序的执行路径及变异程序的异常处理链信息集合加入至所述变异程序集中;步骤S7,用于:重复步骤S3至S6直到满足结束条件;步骤S8,用于:从变异程序集中提取出各个变异程序信息的程序代码组成程序集作为输出。2.如权利要求1所述的用于系统异常处理测试的程序集生成方法,其特征在于,所述步骤S3中,随机选取种子时,选中变异程序信息的概率为:P(i)=B(i)/Sigma(B(i));其中,P(i)为变异程序集中第i个变异程序信息的选中概率,B(i)为变异程序集中第i个变异程序信息的概率分布值,Sigma(B(i))表示变异程序集中各个变异程序信息的概率分布值总和;概率分布值B(i)是关于第i个变异程序信息中异常处理节点的数量的单调递增函数。3.如权利要求1所述的用于系统异常处理测试的程序集生成方法,其特征在于,所述变异方式包括增加异常抓捕块、删除异常抓捕块、交换异常抓捕块、修改异常抓捕范围、修改
异常处理的类型、删除异常抛出、植入异常抛出捕获。4.如权利要求1所述的用于系统异常处理测试的程序集生成方法,其特征在于,所述结束条件包括执行时间达到限定条件以及变异程序集中的变异程序信息数量达到限定要求。5.如权利要求1所述的用于系统异常处理测试的程序集生成方法,其特征在于,“提取出异常处理链”包括如下步骤:步骤S211,用于:初始化路径节点状态为空,当前异常处理链为空;步骤S212,用于:对执行路径按顺序遍历路径节点,对所遍历的路径节点按如下处理:若路径节点为异常抛出路径节点,若当前异常处理链不为空,则将当前异常处理链加入至异常处理链集合同时将当前异常处理链置空,然后标记路径节点状态为异常抛出状态,并记录异常抛出路径节点在执行路径中的位置;若路径节点为异常捕获路径节点,若当前路径节点状态为异常捕获状态,若当前异常处理链不为空,则将当前异常处理链加入至异常处理链集合同时将当前异常处理链置空,然后构建一个异常处理节点,并将所构建的异常处理节点加入至当前异常处理链中,并标记路径节点状态为异常捕获状态;若路径节点为异常捕获路径节点,若当前路径节点状态不为异常捕获状态,则构建一个异常处理节点,并将所构建的异常处理节点加入至当前异常处理链中,并标记路径节点状态为异常捕获状态;若路径节点为异常续抛路径节点,若当前路径节点状态为异常捕获状态,则标记路径节点状态为异常续抛状态,并记录异常续抛路径节点在执行路径中的位置;步骤S213,用于:执行路径所有的路径节点遍历完成后,若当前路径节点状态为异常抛出状态或异常续抛状态,或者执行路径最后的路径节点与插桩程序末尾所插入的异常路径跟踪指令不一致,则构建一个异常处理节点,并将所构建的异常处理节点加入至当前异常处理链。6.一种用于系...

【专利技术属性】
技术研发人员:陈博钏陈雨亭卜磊
申请(专利权)人:南京大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1