[发明专利]一种单元测试代码生成方法、装置、设备及介质在审
申请号: | 202211553547.5 | 申请日: | 2022-12-06 |
公开(公告)号: | CN115934533A | 公开(公告)日: | 2023-04-07 |
发明(设计)人: | 姚辉 | 申请(专利权)人: | 重庆紫光华山智安科技有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 重庆中之信知识产权代理事务所(普通合伙) 50213 | 代理人: | 梁欣 |
地址: | 400700 重庆市*** | 国省代码: | 重庆;50 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 单元测试 代码 生成 方法 装置 设备 介质 | ||
1.一种单元测试代码生成方法,其特征在于,包括:
解析目标方法源码编译后的字节码文件,得到所述目标方法的字节码信息;
从所述字节码信息中提取分支判断逻辑的条件表达式,并将所述条件表达式保存至条件表达式列表中;
为所述条件表达式列表中的各个条件表达式生成满足以及不满足所述条件表达式的条件的模拟值,并将所述模拟值保存至模拟值列表中;
根据所述模拟值列表中各个模拟值生成单元测试代码。
2.根据权利要求1所述的一种单元测试代码生成方法,其特征在于:所述从所述字节码信息中提取分支判断逻辑的条件表达式,并将所述条件表达式保存至条件表达式列表中,包括:
表达式提取步骤:从所述目标方法的字节码信息中获取分支判断逻辑,并从中提取所有的条件表达式;
表达式整理步骤:对所述条件表达式进行整理,得到不重复的单条件表达式;
当所述单条件表达式中存在比较运算时,从所述单条件表达式中提取所述比较运算对应的比较值表达式和被比较值表达式,并将同一单条件表达式中的比较值表达式和被比较值表达式中存在的多个常量合并;
根据所述单条件表达式中的变量个数,将所述单条件表达式分别归入单变量条件表达式列表或多变量条件表达式列表。
3.根据权利要求2所述的一种单元测试代码生成方法,其特征在于:所述表达式整理步骤,包括:
将包含多个条件的所述条件表达式分解为单条件表达式;
将所述条件表达式进行去重处理。
4.根据权利要求3所述的一种单元测试代码生成方法,其特征在于:所述表达式整理步骤,还包括:
若存在自定义方法引用,则对所述自定义方法引用进行递归提取处理,返回执行表达式提取步骤。
5.根据权利要求1所述的一种单元测试代码生成方法,其特征在于:所述条件表达式列表包括单变量条件表达式列表和多变量条件表达式列表;所述为所述条件表达式列表中的各个条件表达式生成满足以及不满足所述条件表达式的条件的模拟值,并将所述模拟值保存至模拟值列表中,包括如下步骤:
为所述单变量条件表达式列表中的所有条件表达式生成满足以及不满足条件的模拟值,并将其保存至单变量模拟值列表;
当所述多变量条件表达式列表不为空时,为其中的所有条件表达式生成满足以及不满足条件的模拟值,并将其保存至多变量模拟值列表;
返回结果步骤:返回保存的所有模拟值生成结果。
6.根据权利要求5所述的一种单元测试代码生成方法,其特征在于:所述为所述单变量条件表达式列表中的所有条件表达式生成满足以及不满足条件的模拟值,并将其保存至单变量模拟值列表,包括:
遍历所述单变量条件表达式列表中的条件表达式,若为字符串类型则生成满足条件和不满足条件的两个字符串的模拟值,若为布尔类型则生成true和false的模拟值,若为数值类型则根据所述条件表达式的比较运算符生成满足和不满足条件的模拟值;
将生成的所有模拟值保存至单变量模拟值列表。
7.根据权利要求5所述的一种单元测试代码生成方法,其特征在于:所述当所述多变量条件表达式列表不为空时,为其中的所有条件表达式生成满足以及不满足条件的模拟值,并将其保存至多变量模拟值列表,包括:
判断所述多变量条件表达式列表中是否存在多变量的条件表达式,若是则对多变量的条件表达式按变量个数排序后再遍历每个变量,根据所述单变量模拟值列表中的对应模拟值对所述变量进行替换,否则执行所述返回结果步骤;
判断替换后是否还存在变量,若是则对剩余变量进行模拟,生成满足和不满足条件的模拟值,否则将替换和生成的模拟值保存至所述多变量模拟值列表;
遍历所述多变量模拟值列表中的模拟值,以确认是否覆盖所有满足和不满足条件的情况,若未完全覆盖则补全模拟值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于重庆紫光华山智安科技有限公司,未经重庆紫光华山智安科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211553547.5/1.html,转载请声明来源钻瓜专利网。