[发明专利]一种基于黑盒函数与机器学习的代码测试生成方法和装置在审
申请号: | 201810442423.7 | 申请日: | 2018-05-10 |
公开(公告)号: | CN108763064A | 公开(公告)日: | 2018-11-06 |
发明(设计)人: | 卜磊;梁永隽;段玉超;闾乐成;张秋萍;张时雨;王林章;李宣东 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 江苏银创律师事务所 32242 | 代理人: | 孙计良 |
地址: | 210001 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 覆盖 黑盒 测试 测试用例数据 方法和装置 被测程序 代码测试 符号执行 机器学习 求解 验证 代码静态分析 测试工程师 多系统资源 约束求解器 程序代码 程序分析 代码片段 代码替换 复杂结构 回归测试 目标节点 分析器 结点 打包 覆盖率 分配 分析 学习 | ||
1.一种基于黑盒函数与机器学习的代码测试生成方法,其特征在于,该方法包含以下步骤:
S1:获取被测程序代码和未覆盖节点;所述未覆盖节点为先前程序代码测试时未覆盖到的程序节点;
S2:通过对被测程序代码的静态分析,提取未覆盖路径;所述未覆盖路径为包含未覆盖节点的路径;
S3:静态分析所述未覆盖路径,找出其中的复杂程序代码片段;
S4:抽取所述复杂程序代码片段组成黑盒函数,并将所述未覆盖路径中的所述复杂程序代码片段替换成对所述黑盒函数的调用后,形成包含所述黑盒函数和未覆盖节点的新程序;
S5:对包含所述黑盒函数和未覆盖节点的新程序使用符号执行分析器进行分析,并通过基于学习验证的约束求解器进行求解得到能够覆盖所述未覆盖节点的测试用例数据。
2.如权利要求1所述的基于黑盒函数与机器学习的代码测试生成方法,其特征在于,所述步骤S4中“抽取所述复杂程序代码片段组成黑盒函数”包括以下步骤:
S41:根据所述复杂程序代码片段的所处的位置生成所述黑盒函数的函数名;
S42:分析所述复杂程序代码片段中各表达式;将不在该复杂程序代码片段中定义的并且出现在所述表达式右端的变量组成所述黑盒函数的输入变量集;将出现在所述表达式左端的变量组成所述黑盒函数的输出变量集;
S43:将所述黑盒函数的输入变量集打包成所述黑盒函数的输入的结构或类,并构建相应的输入对象实例作为所述黑盒函数的输入变量或输入参数;将所述黑盒函数的输出变量集打包成所述黑盒函数的输出的结构或类,并构建相应的输出对象实例作为所述黑盒函数的输出变量或所述黑盒函数的返回值;
S44:拷贝所述复杂程序代码片段作为所述黑盒函数的函数程序内容,并将其中的变量替换成对应的所述输入对象实例的成员和对应的所述输出对象实例的成员。
3.一种基于黑盒函数与机器学习的代码测试生成装置,其特征在于,该装置包含以下模块:
M1,用于:获取被测程序代码和未覆盖节点;所述未覆盖节点为先前程序代码测试时未覆盖到的程序节点;
M2,用于:通过对被测程序代码的静态分析,提取未覆盖路径;所述未覆盖路径为包含未覆盖节点的路径;
M3,用于:静态分析所述未覆盖路径,找出其中的复杂程序代码片段;
M4,用于:抽取所述复杂程序代码片段组成黑盒函数,并将所述未覆盖路径中的所述复杂程序代码片段替换成对所述黑盒函数的调用后,形成包含所述黑盒函数和未覆盖节点的新程序;
M5,用于:对包含所述黑盒函数和未覆盖节点的新程序使用符号执行分析器进行分析,并通过基于学习验证的约束求解器进行求解得到能够覆盖所述未覆盖节点的测试用例数据。
4.如权利要求3所述的基于黑盒函数与机器学习的代码测试生成装置,其特征在于,所述模块M4中“抽取所述复杂程序代码片段组成黑盒函数”包括以下模块:
M41,用于:根据所述复杂程序代码片段的所处的位置生成所述黑盒函数的函数名;
M42,用于:分析所述复杂程序代码片段中各表达式;将不在该复杂程序代码片段中定义的并且出现在所述表达式右端的变量组成所述黑盒函数的输入变量集;将出现在所述表达式左端的变量组成所述黑盒函数的输出变量集;
M43,用于:将所述黑盒函数的输入变量集打包成所述黑盒函数的输入的结构或类,并构建相应的输入对象实例作为所述黑盒函数的输入变量或输入参数;将所述黑盒函数的输出变量集打包成所述黑盒函数的输出的结构或类,并构建相应的输出对象实例作为所述黑盒函数的输出变量或所述黑盒函数的返回值;
M44,用于:拷贝所述复杂程序代码片段组成所述黑盒函数的程序内容,并将其中的变量替换成对应的所述输入对象实例的成员和对应的所述输出对象实例的成员。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810442423.7/1.html,转载请声明来源钻瓜专利网。