本技术涉及软件开发,尤其涉及一种测试用例补全方法、系统及电子设备。
背景技术:
1、随着信息技术的快速发展,软件已经成为各行各业不可或缺的基础设施,在工业生产领域,软件系统已经深入到自动化生产线、设备监控、质量控制、物流管理等多个环节。随着工业4.0和智能制造的发展,软件系统质量成为确保生产效率、产品质量和工厂安全的核心因素。工业生产环境中的软件故障不仅可能导致生产线停摆,造成生产延误和物料浪费,还可能引发设备损坏、安全隐患,甚至威胁到员工的生命安全。因此,确保软件上线的质量,是避免这些潜在风险的关键。
2、然而,传统的软件测试手段能够在一定程度上识别并防范软件故障等问题,但在应对快速迭代的复杂系统时,软件质量的保障已逐渐依赖于工程师个人的经验积累及对业务逻辑、系统架构的理解,其局限性逐渐显现,测试覆盖不充分已经成为影响软件质量的一大挑战。因此,迫切需要更加高效与智能化的测试策略来克服这一挑战。
技术实现思路
1、鉴于以上所述现有技术的缺点,本技术公开了一种测试用例补全方法、系统及电子设备,用于克服软件测试中因测试覆盖不充分而影响软件质量的问题。
2、本技术的第一方面公开了一种测试用例补全方法,包括:获取待测软件,并对所述待测软件的源码进行分析,获得所述方法调用关系库,所述方法调用关系库包括待测软件的方法调用关系、参数关联信息及入口方法标识;对所述待测软件进行代码覆盖分析,获得所述待测软件的覆盖代码和未覆盖代码,所述未覆盖代码至少包括代码行与代码分支各自未覆盖的情况;基于所述方法调用关系库进行查询,获得完整调用链路的参数关联关系图,并生成所述未覆盖代码的用例补全建议,其中所述完整调用链路是根据所述入口方法标识将各所述方法调用关系串联所得,每个所述方法调用关系携带有对应的参数关联信息;基于所述用例补全建议完善所述待测软件的可执行测试用例,覆盖所述待测软件中所述未覆盖代码。
3、于本技术第一方面的某些实施例中,对所述待测软件的源码进行分析,获得所述方法调用关系库,包括:获取所述待测软件的文件标识信息;基于所述文件标识信息从代码仓库拉取所述待测软件的源码;调用源码分析服务分别对所述待测软件的源码进行静态分析与动态分析,识别方法调用关系,并根据静态分析结果与动态分析结果构建方法调用关系库。
4、于本技术第一方面的某些实施例中,对所述待测软件进行代码覆盖分析,获得所述待测软件的覆盖代码和未覆盖代码,包括:启动所述待测软件,收集所述测试用例执行过程中代码行与代码分支的执行情况;将所述源码中执行所述测试用例的代码行与代码分支标记为覆盖标签,且将所述源码中未执行所述测试用例的代码行与代码分支标记为未覆盖标签;根据所述覆盖标签与所述未覆盖标签进行区分,获得所述待测软件的覆盖代码和未覆盖代码。
5、于本技术第一方面的某些实施例中,基于所述方法调用关系库进行查询,获得完整调用链路的参数关联关系图,并生成所述未覆盖代码的用例补全建议,包括:对所述方法调用关系库进行查询,根据所述入口方法标识将查询所得的各所述方法调用关系进行串联,确定完整调用链路以及所述完整调用链路的参数关联关系图,所述参数关联关系图包括未覆盖代码行的上文代码信息的逻辑关系,以及所述上文代码中变量与接口中参数的关联关系;识别所述完整调用链路的参数关联关系图,以及未被覆盖代码的代码行或分支的所述上文代码信息中的语法与语义,确定代码逻辑的目的和意图;根据所述代码逻辑的目的和意图进行用例预测,利用自然语言处理方式生成用例补全建议。
6、于本技术第一方面的某些实施例中,基于所述用例补全建议完善所述待测软件的可执行测试用例,覆盖所述待测软件中所述未覆盖代码,包括:基于所述用例补全建议来补充未被覆盖代码的代码行或分支的上文代码信息,完善所述待测软件的可执行测试用例;对完善的所述待测软件再次进行测试,验证所述未被覆盖代码,以覆盖所述待测软件中所述未覆盖代码。
7、于本技术第一方面的某些实施例中,对完善的所述待测软件再次进行测试,验证所述未被覆盖代码,以覆盖所述待测软件中所述未覆盖代码,还包括:若所述未被覆盖代码通过补全测试用例后,仍无法执行测试用例,则验证不通过,并判断当前补全后的所述未被覆盖代码是否为废弃代码;若当前补全后的所述未被覆盖代码为废弃代码,则发出携带所述废弃代码的报警信息,并通知开发人员审核后进行删除;若所述未被覆盖代码通过补全测试用例后,能够执行测试用例,则验证通过,确定通过测试用例补全覆盖了所述待测软件中所述未覆盖代码。
8、于本技术第一方面的某些实施例中,获取待测软件之后,还包括:获取所述待测软件分别在生产环境下运行得到的第一代码路径集合和在测试环境下运行测试用例得到的第二代码路径集合,任一代码路径集合中包括至少一个代码路径;基于所述第一代码子路径集合和所述第二代码子路径集合,得到缺失代码路径;针对任一缺失代码路径,将所述缺失代码路径和所述第二代码路径集合中的任一代码路径进行相似度计算,得到符合相似度要求的参照代码路径;基于所述参照代码路径对应的第一测试用例,以及基于所述用例补全建议对应的所述待测软件的第二测试用例进行融合,得到补全的测试用例。
9、于本技术第一方面的某些实施例中,根据所述覆盖标签与所述未覆盖标签进行区分,获得所述待测软件的覆盖代码和未覆盖代码,还包括:将各所述测试用例的执行情况进行合并汇总,根据所述覆盖标签与所述未覆盖标签生成软件源码覆盖率分析文件;将所述软件源码覆盖率分析文件分别以不同的文字颜色或文字背景色区分所述覆盖代码和所述未覆盖代码。
10、本技术的第二方面公开了一种测试用例补全系统,包括:关系库获取模块,用于获取待测软件,并对所述待测软件的源码进行分析,获得所述方法调用关系库,所述方法调用关系库包括待测软件的方法调用关系、参数关联信息及入口方法标识;覆盖分析模块,用于对所述待测软件进行代码覆盖分析,获得所述待测软件的覆盖代码和未覆盖代码,所述未覆盖代码至少包括代码行与代码分支各自未覆盖的情况;补全建议模块,基于所述方法调用关系库进行查询,获得完整调用链路的参数关联关系图,并生成所述未覆盖代码的用例补全建议,其中所述完整调用链路是根据所述入口方法标识将各所述方法调用关系串联所得,每个所述方法调用关系携带有对应的参数关联信息;用例补全模块,基于所述用例补全建议完善所述待测软件的可执行测试用例,覆盖所述待测软件中所述未覆盖代码。
11、本技术的第三方面公开了一种电子设备,包括:处理器及存储器;所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述电子设备执行上述的方法。
12、本技术的有益效果:首先,获取待测软件,并对所述待测软件的源码进行分析,获得所述方法调用关系库,对所述待测软件进行代码覆盖分析,获得所述待测软件的覆盖代码和未覆盖代码,所述未覆盖代码至少包括代码行与代码分支各自未覆盖的情况;这样,有助于发现潜在的缺陷和漏洞,还能确保软件的各个部分都得到了充分的测试,从而提高软件的可靠性和稳定性;其次,基于所述方法调用关系库进行查询,获得完整调用链路的参数关联关系图,并生成所述未覆盖代码的用例补全建议;基于所述用例补全建议完善所述待测软件的可执行测试用例,覆盖所述待测软件中所述未覆盖代码,一方面,通过代码覆盖情况反推测试用例设计盲点,通过方法调用链路和参数关联等信息结合ai辅助编程工具提供未覆盖代码测试用例补充建议,有效补充测试用例克服了设计不足以及代码覆盖率不高的问题;另一方面,在软件系统测试过程中,利用代码覆盖情况补充测试用例,再利用补充的测试用例提高代码覆盖率,两者相辅相成,可有效确保软件系统能够得到充分的测试验证;还有一方面,通过测试用例补全及时发现并修复新引入的问题,保持软件的稳定性和质量;同时,也减轻了测试工作量,使得测试过程更加系统化、可重复和可预测,有助于降低测试工作的复杂性和不确定性。
1.一种测试用例补全方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,对所述待测软件的源码进行分析,获得所述方法调用关系库,包括:
3.根据权利要求1所述的方法,其特征在于,对所述待测软件进行代码覆盖分析,获得所述待测软件的覆盖代码和未覆盖代码,包括:
4.根据权利要求1所述的方法,其特征在于,基于所述方法调用关系库进行查询,获得完整调用链路的参数关联关系图,并生成所述未覆盖代码的用例补全建议,包括:
5.根据权利要求4所述的方法,其特征在于,基于所述用例补全建议完善所述待测软件的可执行测试用例,覆盖所述待测软件中所述未覆盖代码,包括:
6.根据权利要求5所述的方法,其特征在于,对完善的所述待测软件再次进行测试,验证所述未被覆盖代码,以覆盖所述待测软件中所述未覆盖代码,还包括:
7.根据权利要求1所述的方法,其特征在于,获取待测软件之后,还包括:
8.根据权利要求3所述的方法,其特征在于,根据所述覆盖标签与所述未覆盖标签进行区分,获得所述待测软件的覆盖代码和未覆盖代码,还包括:
9.一种测试用例补全系统,其特征在于,包括:
10.一种电子设备,其特征在于,包括:处理器及存储器;所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述电子设备执行如权利要求1至8任一所述的方法。