System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于代码变更的测试方法、装置、设备及介质制造方法及图纸_技高网

一种基于代码变更的测试方法、装置、设备及介质制造方法及图纸

技术编号:43877721 阅读:7 留言:0更新日期:2024-12-31 19:00
本发明专利技术公开了一种基于代码变更的测试方法、装置、设备及介质,方法包括:获取待测试代码,对待测试代码进行版本间差异化分析,识别待测试代码中存在变更的目标代码块;对目标代码块进行测试目标识别,根据识别结果生成相应的单元测试用例;响应于增量测试指令,开启预设的增量执行开关,通过增量执行开关控制单元测试用例的独立执行;根据单元测试用例的独立执行结果按预设维度统计得到目标代码块的测试覆盖率。通过对代码进行差异化分析精确地识别出代码中发生变化的部分,基于变更的代码生成相应的单元测试用例并单独执行相关用例,从而实现仅针对变更的代码块进行自动化的单元测试,提高代码变更时的单元测试效率,有效节省了测试时间和资源。

【技术实现步骤摘要】

本专利技术涉及测试,应用于银行系统增量代码的单元测试场景,尤其涉及一种基于代码变更的测试方法、装置、设备及介质


技术介绍

1、随着业内单元测试逐渐被重视,行内单元测试迎来了爆炸性的增长,而银行系统由于存量系统多、业务代码逻辑复杂,在推动单元测试落地过程中,需优先考虑增量代码的单元测试的覆盖,增量覆盖稳定后再逐渐补全存量代码单元测试用例。

2、然而,增量代码的单测覆盖依赖开发人员自行梳理场景逻辑,并针对新场景手工编写单测用例,繁琐又低效,耗费大量人力的同时,测试范围也无法评估,还可能发生测试遗漏,导致增量代码覆盖不全的情况。同时,针对已存在较多单测用例的项目,存量单测用例数量大,全量执行效率低、时间长,降低了项目持续集成持续测试的效率,不利于项目快速迭代。


技术实现思路

1、鉴于上述现有技术的不足,本专利技术的目的在于提供可应用于金融科技或其它相关领域的一种基于代码变更的测试方法、装置、设备及介质,其主要目的在于实现增量代码单元测试用例的自动生成与执行,提高代码变更时的单元测试效率。

2、本专利技术的技术方案如下:

3、本专利技术第一方面提供一种基于代码变更的测试方法,包括:

4、获取待测试代码,对所述待测试代码进行版本间差异化分析,识别所述待测试代码中存在变更的目标代码块;

5、对所述目标代码块进行测试目标识别,根据识别结果生成相应的单元测试用例;

6、响应于增量测试指令,开启预设的增量执行开关,通过所述增量执行开关控制所述单元测试用例的独立执行;

7、根据所述单元测试用例的独立执行结果按预设维度统计得到所述目标代码块的测试覆盖率。

8、在一个实施例中,所述获取待测试代码,对所述待测试代码进行版本间差异化分析,识别所述待测试代码中存在变更的目标代码块,包括:

9、接收测试需求信息,根据所述测试需求信息确定需要测试的代码范围;

10、通过版本控制系统访问代码库,并根据所述需要测试的代码范围从所述代码库中拉取相应的待测试代码;

11、按预设差异对比策略获取与所述待测试代码对应的基准代码,并对所述待测试代码与基准代码进行差异对比;

12、根据差异对比结果定位获取所述待测试代码中存在变更的目标代码块。

13、在一个实施例中,所述按预设差异对比策略获取与所述待测试代码对应的基准代码,并对所述待测试代码与基准代码进行差异对比,包括:

14、按预设差异对比策略确定差异对比维度,所述差异对比维度包括commit类型和分支版本;

15、根据所述差异对比维度在所述代码库中获取指定commit类型或指定分支版本的代码,作为与所述待测试代码对应的基准代码;

16、对所述待测试代码与基准代码进行commit id差异对比或分支版本差异对比。

17、在一个实施例中,所述根据差异对比结果定位获取所述待测试代码中存在变更的目标代码块,包括:

18、对差异对比结果进行定位解析,获取所述待测试代码中的变更代码行;

19、对所述变更代码行进行无效变更查询,确认所述变更代码行中是否包含指定类型的无效变更,所述指定类型的无效变更包括空格、换行与注释;

20、根据查询到的无效变更对所述变更代码行进行过滤,得到所述目标代码块。

21、在一个实施例中,所述对所述目标代码块进行测试目标识别,根据识别结果生成相应的单元测试用例,包括:

22、对所述目标代码块进行编译打包,并对编译打包后的字节码进行扫描,识别所述目标代码块中需要测试的类和方法;

23、根据需要测试的类和方法生成相应的单元测试用例与测试数据,并通过随机种子自动mock上下游数据。

24、在一个实施例中,所述根据所述单元测试用例的独立执行结果按预设维度统计得到所述目标代码块的测试覆盖率,包括:

25、通过预设覆盖率工具根据所述单元测试用例的独立执行结果收集覆盖率数据并生成覆盖率报告;

26、根据所述目标代码块对所述覆盖率报告进行染色,突出显示所述目标代码块的覆盖率数据;

27、对所述目标代码块的覆盖率数据按预设维度进行覆盖率统计,获得所述目标代码块的测试覆盖率。

28、在一个实施例中,所述根据所述单元测试用例的独立执行结果按预设维度统计得到所述目标代码块的测试覆盖率之后,方法还包括:

29、在持续集成流水线中将所述目标代码块的测试覆盖率与预设覆盖率进行对比,确认所述目标代码块的测试覆盖率是否大于等于所述预设覆盖率;

30、当所述目标代码块的测试覆盖率大于等于所述预设覆盖率时,继续执行所述持续集成流水线的后续节点,否则中断当前测试节点并输出中断提示。

31、本专利技术第二方面提供一种基于代码变更的测试装置,包括:

32、差异分析模块,用于获取待测试代码,对所述待测试代码进行版本间差异化分析,识别所述待测试代码中存在变更的目标代码块;

33、用例生成模块,用于对所述目标代码块进行测试目标识别,根据识别结果生成相应的单元测试用例;

34、用例执行模块,用于响应于增量测试指令,开启预设的增量执行开关,通过所述增量执行开关控制所述单元测试用例的独立执行;

35、统计模块,用于根据所述单元测试用例的独立执行结果按预设维度统计得到所述目标代码块的测试覆盖率。

36、本专利技术第三方面提供一种计算机设备,包括至少一个处理器;以及,

37、与所述至少一个处理器通信连接的存储器;其中,

38、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述基于代码变更的测试方法。

39、本专利技术第四方面提供一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的基于代码变更的测试方法。

40、有益效果:本专利技术公开了一种基于代码变更的测试方法、装置、设备及介质,相比于现有技术,本专利技术实施例获取待测试代码,对待测试代码进行版本间差异化分析,识别待测试代码中存在变更的目标代码块;对目标代码块进行测试目标识别,根据识别结果生成相应的单元测试用例;响应于增量测试指令,开启预设的增量执行开关,通过增量执行开关控制单元测试用例的独立执行;根据单元测试用例的独立执行结果按预设维度统计得到目标代码块的测试覆盖率。通过版本间差异化分析,可以精确地识别出代码中发生变化的部分,有助于集中测试资源和注意力在最有可能引入缺陷的地方,基于变更的代码生成相应的单元测试用例并单独执行相关用例,从而实现仅针对变更的代码块进行自动化的单元测试,无需每次全量执行,减少对未变更代码的重复测试,提升持续集成效率,提高代码变更时的单元测试效率,有效节省了测本文档来自技高网...

【技术保护点】

1.一种基于代码变更的测试方法,其特征在于,包括:

2.根据权利要求1所述的基于代码变更的测试方法,其特征在于,所述获取待测试代码,对所述待测试代码进行版本间差异化分析,识别所述待测试代码中存在变更的目标代码块,包括:

3.根据权利要求2所述的基于代码变更的测试方法,其特征在于,所述按预设差异对比策略获取与所述待测试代码对应的基准代码,并对所述待测试代码与基准代码进行差异对比,包括:

4.根据权利要求2所述的基于代码变更的测试方法,其特征在于,所述根据差异对比结果定位获取所述待测试代码中存在变更的目标代码块,包括:

5.根据权利要求1所述的基于代码变更的测试方法,其特征在于,所述对所述目标代码块进行测试目标识别,根据识别结果生成相应的单元测试用例,包括:

6.根据权利要求1所述的基于代码变更的测试方法,其特征在于,所述根据所述单元测试用例的独立执行结果按预设维度统计得到所述目标代码块的测试覆盖率,包括:

7.根据权利要求1所述的基于代码变更的测试方法,其特征在于,所述根据所述单元测试用例的独立执行结果按预设维度统计得到所述目标代码块的测试覆盖率之后,方法还包括:

8.一种基于代码变更的测试装置,其特征在于,包括:

9.一种计算机设备,其特征在于,包括至少一个处理器;以及,

10.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行权利要求1-7任一项所述的基于代码变更的测试方法。

...

【技术特征摘要】

1.一种基于代码变更的测试方法,其特征在于,包括:

2.根据权利要求1所述的基于代码变更的测试方法,其特征在于,所述获取待测试代码,对所述待测试代码进行版本间差异化分析,识别所述待测试代码中存在变更的目标代码块,包括:

3.根据权利要求2所述的基于代码变更的测试方法,其特征在于,所述按预设差异对比策略获取与所述待测试代码对应的基准代码,并对所述待测试代码与基准代码进行差异对比,包括:

4.根据权利要求2所述的基于代码变更的测试方法,其特征在于,所述根据差异对比结果定位获取所述待测试代码中存在变更的目标代码块,包括:

5.根据权利要求1所述的基于代码变更的测试方法,其特征在于,所述对所述目标代码块进行测试目标识别,根据识别结果生成相应的单元测试用例,包括:

【专利技术属性】
技术研发人员:李慧
申请(专利权)人:平安银行股份有限公司
类型:发明
国别省市:

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

1