本申请涉及单元测试,尤其涉及一种单元测试代码生成方法、装置、设备及存储介质。
背景技术:
1、在软件系统的开发生命周期中,单元测试技术发挥着不可或缺的作用。然而,生成单元测试代码的过程极具挑战性。
2、目前,单元测试代码的生成技术包括基于标准模板的生成技术、基于生成式人工智能对话技术的生成技术以及基于逻辑推断的生成技术。
3、然而,上述单元测试代码的生成技术所依赖的用例数据与实际业务应用场景中的业务数据存在差异。
技术实现思路
1、本申请提供一种单元测试代码生成方法、装置、设备及存储介质,用以解决现有技术中单元测试用例数据与实际业务应用场景中的业务数据存在差异的问题。
2、第一方面,本申请提供一种单元测试代码生成方法,所述方法包括:
3、根据面向切面编程aop技术,从实际业务场景获取多组第一单元测试用例数据,其中,每组第一单元测试用例数据包括业务请求的类型、调用的方法、传递的参数以及返回值;
4、根据预定义的筛选规则,对每组第一单元测试用例数据进行筛选,得到筛选完成后的第二单元测试用例数据;
5、根据每组第二单元测试用例数据中的类型,确定预定义的目标单元测试用例模板;
6、将所述第二单元测试用例数据填充至所述目标单元测试用例模板,得到单元测试代码。
7、在一种可能的设计中,所述将所述第二单元测试用例数据填充至所述目标单元测试用例模板,得到单元测试代码,所述方法包括:
8、根据预定义的反射机制,确定每组第二单元测试用例数据中相应类型的初始触发状态;
9、将所述初始触发状态添加到每组第二单元测试用例数据中,得到多组目标单元测试用例数据;
10、将所述目标单元测试用例数据填充至所述目标单元测试用例模板,得到所述单元测试代码。
11、在一种可能的设计中,所述根据面向切面编程aop技术,从实际业务场景获取多组第一单元测试用例数据之前,所述方法包括:
12、根据目标单元测试的类型,配置相应的目标单元测试用例模板;
13、定义目标单元测试用例数据采集范围,其中,所述目标单元测试用例数据采集范围包括所有由spring容器管理的bean对象。
14、在一种可能的设计中,所述业务请求包括:业务入口请求,或者,业务入口请求以及业务内部请求;
15、若所述业务请求包括所述业务入口请求以及所述业务内部请求,则所述每组第一单元测试用例数据还包括属性依赖关系,所述属性依赖关系用于表示所述业务入口请求和所述业务内部请求之间的依赖关系。
16、在一种可能的设计中,所述方法还包括:
17、根据所述业务请求的类型,确定触发所述单元测试代码执行的方式,其中,所述方式包括超文本传输协议http报文方式和/或预定义函数方式。
18、在一种可能的设计中,所述根据所述业务请求的类型,确定触发所述单元测试代码执行的方式,所述方法包括:
19、若所述业务请求的类型为超文本传输协议http请求,则采用过滤器记录http请求格式的请求报文和响应报文;
20、将所述请求报文和响应报文打包和编号,得到所述http报文,其中,所述http报文用于触发所述单元测试代码执行;
21、若所述业务请求的类型为非超文本传输协议http请求,则通过所述预定义函数方式触发所述单元测试代码执行。
22、在一种可能的设计中,所述预定义的筛选规则包括以下筛选规则中的至少一个:
23、去重筛选规则;
24、排序筛选规则;
25、边界筛选规则,所述边界筛选规则用于选择具有特定边界条件的第一单元测试用例数据;
26、扩展筛选规则,所述扩展筛选规则用于对第一单元测试用例数据进行扩展和补充。
27、第二方面,本申请提供一种单元测试代码生成装置,所述装置包括:
28、采集模块,用于根据面向切面编程aop技术,从实际业务场景获取多组第一单元测试用例数据,其中,每组第一单元测试用例数据包括业务请求的类型、调用的方法、传递的参数以及返回值;
29、分析模块,用于根据预定义的筛选规则,对每组第一单元测试用例数据进行筛选,得到筛选完成后的第二单元测试用例数据;
30、所述分析模块,还用于根据每组第二单元测试用例数据中的类型,确定预定义的目标单元测试用例模板;
31、模板填充模块,用于将所述第二单元测试用例数据填充至所述目标单元测试用例模板,得到单元测试代码。
32、第三方面,本申请提供一种电子设备,包括:收发器,处理器,以及与所述处理器通信连接的存储器;
33、所述存储器存储计算机执行指令;
34、所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面任一项所述的单元测试代码生成方法。
35、第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面任一项所述的单元测试代码生成方法。
36、第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面任一项所述的单元测试代码生成方法。
37、本申请提供的单元测试代码生成方法、装置、设备及存储介质,涉及单元测试技术领域。在该方案中,为确保单元测试代码中的测试用例数据贴合实际业务场景中的业务数据,主要通过面向切面编程(aspect oriented programming,简称aop)技术从实际业务场景中获取单元测试用例数据。同时,为保证单元测试用例数据的全面性,本申请采用预定义的筛选规则对从实际业务场景中初始获取的业务数据进行识别和筛选。在此基础上,为提高单元测试代码的生成效率,本申请将筛选后的单元测试用例数据直接填充至预先配置的目标单元测试用例模板。
1.一种单元测试代码生成方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述将所述第二单元测试用例数据填充至所述目标单元测试用例模板,得到单元测试代码,所述方法包括:
3.根据权利要求1所述的方法,其特征在于,所述根据面向切面编程aop技术,从实际业务场景获取多组第一单元测试用例数据之前,所述方法包括:
4.根据权利要求1至3任一项所述的方法,其特征在于,所述业务请求包括:业务入口请求,或者,业务入口请求以及业务内部请求;
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述根据所述业务请求的类型,确定触发所述单元测试代码执行的方式,所述方法包括:
7.根据权利要求1所述的方法,其特征在于,所述预定义的筛选规则包括以下筛选规则中的至少一个:
8.一种单元测试代码生成装置,其特征在于,所述装置包括:
9.一种电子设备,其特征在于,包括:收发器,处理器,以及与所述处理器通信连接的存储器;
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至7中任一项所述的单元测试代码生成方法。
11.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现如权利要求1至7中任一项所述的单元测试代码生成方法。
