单元测试代码的生成方法、装置、电子设备和存储介质制造方法及图纸

技术编号:37985478 阅读:10 留言:0更新日期:2023-06-30 10:00
本公开提供了一种单元测试代码的生成方法、装置、电子设备和存储介质,涉及计算机技术领域,尤其涉及数据处理、人工智能等技术领域。具体实现方案为:获取存量代码中的目标功能代码;从目标功能代码中提取函数信息和语句信息;基于函数信息和语句信息,生成与目标功能代码对应的单元测试代码;基于单元测试代码对目标功能代码进行功能测试。目标功能代码进行功能测试。目标功能代码进行功能测试。

【技术实现步骤摘要】
单元测试代码的生成方法、装置、电子设备和存储介质


[0001]本公开涉及计算机
,尤其涉及数据处理、人工智能等


技术介绍

[0002]在相关技术中,主要通过人工梳理新增功能代码的业务流程,并采用手写单元测试代码的方式对该功能代码进行测试,并且在下游请求时,都是直连真实的测试环境,不仅耗费研发成本,还容易造成线上事故。

技术实现思路

[0003]本公开提供了一种单元测试代码的生成方法、装置、电子设备和存储介质。
[0004]根据本公开的一方面,提供了一种单元测试代码的生成方法,包括:获取存量代码中的目标功能代码,其中,目标功能代码由存量代码中的原始功能代码修改得到;从目标功能代码中提取函数信息和语句信息,其中,函数信息至少包括目标功能代码中函数的第一输入参数,语句信息至少包括目标功能代码中的第一条件语句代码,第一输入参数用于表征目标功能代码实现的数据功能;基于函数信息和语句信息,生成与目标功能代码对应的单元测试代码,其中,单元测试代码中函数的第二输入参数与第一输入参数相匹配,第二输入参数用于表征单元测试代码用于测试目标功能代码的测试用例的数量,单元测试代码中的第二条件语句代码与第一条件语句代码相匹配;基于单元测试代码对目标功能代码进行功能测试。
[0005]根据本公开的另一方面,提供了另一种单元测试代码的生成方法,包括:获取存量代码,其中,存量代码中至少包括目标功能代码,目标功能代码由存量代码中的原始功能代码修改得到;将存量代码输入至单元测试代码的生成模型中进行分析处理,得到与目标功能代码对应的单元测试代码,其中,单元测试代码的生成模型为基于上述单元测试代码方法确定。
[0006]根据本公开的一方面,提供了一种单元测试代码的生成装置,包括:第一获取单元,用于获取存量代码中的目标功能代码,其中,目标功能代码由存量代码中的原始功能代码修改得到;提取单元,用于从目标功能代码中提取函数信息和语句信息,其中,函数信息至少包括目标功能代码中函数的第一输入参数,语句信息至少包括目标功能代码中的第一条件语句代码,第一输入参数用于表征目标功能代码实现的数据功能;生成单元,用于基于函数信息和语句信息,生成与目标功能代码对应的单元测试代码,其中,单元测试代码中函数的第二输入参数与第一输入参数相匹配,第二输入参数用于表征单元测试代码用于测试目标功能代码的测试用例的数量,单元测试代码中的第二条件语句代码与第一条件语句代码相匹配;测试单元,用于基于单元测试代码对目标功能代码进行功能测试。
[0007]根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开实施例的单元测试代码的
生成方法。
[0008]根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开实施例的单元测试代码的生成方法。
[0009]根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现本公开实施例的单元测试代码的生成方法。
[0010]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0011]附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0012]图1是根据本公开实施例的一种单元测试代码的生成方法的流程图;
[0013]图2(a)是根据本公开实施例的另一种单元测试代码的生成方法的流程图;
[0014]图2(b)是根据本公开实施例的一种用于执行单元测试代码的生成方法的计算机产品的示意图;
[0015]图2(c)是根据本公开实施例的一种用于执行单元测试代码的生成方法的人机交互操作界面的示意图;
[0016]图3是根据本公开实施例的一种生成单元测试代码的工具的显示界面的示意图;
[0017]图4是根据本公开实施例的一种单元测试代码的生成装置的示意图;
[0018]图5是根据本公开实施例的另一种单元测试代码的生成装置的示意图;
[0019]图6是用来实现本公开实施例的单元测试代码的生成方法的电子设备的示意图。
具体实施方式
[0020]以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0021]下面对本公开实施例的一种单元测试代码的生成方法进行介绍。
[0022]图1是根据本公开实施例的一种单元测试代码的生成方法的流程图,如图1所示,该方法可以包括以下步骤:
[0023]步骤S102,获取存量代码中的目标功能代码。
[0024]本公开上述步骤S102提供的技术方案中,存量代码可以为存量业务代码,存量代码中可以包括整个测试项目中所有待检测的功能代码,例如,原始功能代码和由原始功能代码修改得到的目标功能代码,其中,目标功能代码可以为研发人员根据研发项目的研发要求对原始功能代码进行修改的代码。需要说明的是,此处不对目标功能代码的类型进行具体限定,任何存量代码中新增的功能代码都在本公开实施例的保护范围内,此处不一一列举。
[0025]在该实施例中,可以通过对存量代码的抽象语法树进行扫描,以确定存量代码未被单元测试代码覆盖的功能代码,并将该功能代码确定为目标功能代码。
[0026]需要说明的是,上述方法仅为从存量代码中获取目标功能代码的一种优选的实施
方式,此处不对从存量代码中获取目标功能代码的方法进行具体限定,任何用于从存量代码中获取目标功能代码的方法和过程均在本公开实施例的保护范围内,此处不一一列举。
[0027]步骤S104,从目标功能代码中提取函数信息和语句信息。
[0028]本公开上述步骤S104提供的技术方案中,对存量代码的抽象语法树进行扫描,得到目标功能代码之后,可以进一步对目标功能代码进行分析,并对目标功能代码中函数的函数信息以及目标功能代码的语句信息进行提取,其中,函数信息可以包括目标功能代码中函数的第一输入参数和函数内部的分支逻辑,语句信息可以包括目标功能代码中的第一条件语句代码,第一输入参数可以用于表征目标功能代码实现的数据功能,第一条件语句代码可以为目标功能代码中的条件语句。
[0029]需要说明的是,此处不对从目标功能代码中提取函数信息和语句信息的方法进行具体限定,任何用于从目标功能代码中提取函数信息和语句信息的方法和过程均在本公开实施例的保护范围内,此处不一一列举。
[0030]可选地,目标功能代码中函数的第一输入参本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种单元测试代码的生成方法,其特征在于,包括:获取存量代码中的目标功能代码,其中,所述目标功能代码由所述存量代码中的原始功能代码修改得到;从所述目标功能代码中提取函数信息和语句信息,其中,所述函数信息至少包括所述目标功能代码中函数的第一输入参数,所述语句信息至少包括所述目标功能代码中的第一条件语句代码,所述第一输入参数用于表征所述目标功能代码实现的数据功能;基于所述函数信息和所述语句信息,生成与所述目标功能代码对应的单元测试代码,其中,所述单元测试代码中函数的第二输入参数与所述第一输入参数相匹配,所述第二输入参数用于表征所述单元测试代码用于测试所述目标功能代码的测试用例的数量,所述单元测试代码中的第二条件语句代码与所述第一条件语句代码相匹配;基于所述单元测试代码对所述目标功能代码进行功能测试。2.根据权利要求1所述的方法,其特征在于,基于所述函数信息和所述语句信息,生成与所述目标功能代码对应的单元测试代码,包括:基于所述函数信息和所述语句信息,对所述目标功能代码按照功能类别进行分区,得到与所述目标功能代码的分区结果相对应的测试组代码模板,其中,所述测试组代码模板中至少包括所述分区结果中每个功能分区对应的测试组代码;基于所述测试组代码模板,生成所述单元测试代码。3.根据权利要求2所述的方法,其特征在于,基于所述测试组代码模板,生成所述单元测试代码,包括:基于所述第一输入参数,对所述测试组代码模板中至少一所述测试组代码进行修改,得到所述单元测试代码。4.根据权利要求1所述的方法,其特征在于,获取存量代码中的目标功能代码,包括:对所述存量代码的语法树进行扫描,确定所述存量代码中函数的逻辑分支;按照所述逻辑分支从所述存量代码中提取所述目标功能代码。5.根据权利要求1所述的方法,其特征在于,在基于所述单元测试代码对所述目标功能代码进行功能测试之后,所述方法还包括:基于所述单元测试代码覆盖所述存量代码中与所述原始功能代码对应的原始单元测试代码,其中,所述原始单元测试代码用于对所述原始功能代码进行功能测试。6.根据权利要求1所述的方法,其特征在于,在基于所述单元测试代码对所述目标功能代码进行功能测试之前,所述方法还包括:对所述单元测试代码和所述目标功能代码进行静态代码分析,确定所述第二输入参数与所述第一输入参数的第一匹配结果,以及确定所述第一条件语句与所述第二条件语句代码的第二匹配结果;基于所述第一匹配结果和所述第二匹配结果,确定所述单元测试代码中是否包含错误代码,其中,所述错误代码至少用于表征所述单元测试代码无法用于对所述目标功能代码进行测试。7.根据权利要求6所述的方法,其特征在于,基于所述第一匹配结果和所述第二匹配结果,确定所述单元测试代码中是否包含错误代码,包括:响应于所述第一匹配结果为所述第二输入参数与所述第一输入参数未成功匹配,和/
或所述第二匹配结果为所述第一条件语句与所述第二条件语句代码未成功匹配,确定所述单元测试代码和/或所述目标功能代码中包含错误代码。8.根据权利要求1所述的方法,其特征在于,在基于所述单元测试代码对所述目标功能代码进行功能测试之前,所述方法还包括:获取所述单元测试代码的断言代码,其中,所述断言代码从断言代码模板中提取得到,所述断言代码模板中至少包括所述断言代码;基于所述断言代码对所述单元测试代码进行调试。9.一种单元测试代码的生成方法,其特征在于,包括:获取存量代码,其中,所述存量代码中至少包括目标功能代码,所述目标功能代码由所述存量代码中的原始功能代码修改得到;将所述存量代码输入至单元测试代码的生成模型中进行分析处理,得到与所述目标功能代码对应的单元测试代码,其中,所述单元测试代码的生成模型为基于权利要求1至8中任意一项所述的方法确定。10.一种单元测试代码的生成装置,其特征在于,包括:第一获取单元,用于获取存量代码中的目标功能代码,其中,所述目标功能代码由所述存量代码中的原始功能...

【专利技术属性】
技术研发人员:王俊
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:

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

1