System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 面向云原生应用的故障注入自动化测试方法及装置制造方法及图纸_技高网

面向云原生应用的故障注入自动化测试方法及装置制造方法及图纸

技术编号:41581035 阅读:2 留言:0更新日期:2024-06-06 23:57
本发明专利技术公开了一种面向云原生应用的故障注入自动化测试方法及装置,该方法包括:运行目标云原生应用和用户测试请求来收集系统运行时信息,并基于系统运行时信息生成初始的故障注入策略,以更新故障注入策略池;基于从故障注入策略池选择的故障注入策略FaultStrategy变异生成故障注入策略FaultStrategy′,并将故障注入策略FaultStrategy′加入故障注入策略池;使用故障注入策略FaultStrategy′对目标云原生应用进行测试,并基于故障注入后的目标云原生应用对故障注入策略池进行更新后,返回至所述基于从故障注入策略池选择的故障注入策略FaultStrategy;生成该目标云原生应用的测试报告。本发明专利技术可以自动生成面向云原生应用的各种故障注入实验场景,覆盖更多云原生应用服务调用链路。

【技术实现步骤摘要】

本专利技术属于软件,尤其涉及一种面向云原生应用的故障注入自动化测试方法及装置


技术介绍

1、云原生应用程序是一种软件程序,专为在云计算环境中运行而构建。云原生应用通过容器化和自动化机制实现弹性和可扩展性,通过微服务架构提高应用程序的灵活性和可维护性。以流媒体平台netflix、出行服务平台uber、在线房屋租赁平台airbnb、通讯和社交媒体应用程序微信、移动支付和金融服务平台支付宝、本地生活服务平台美团等为代表的云原生应用,均使用容器化技术和微服务架构来构建和管理各种功能模块、支持其庞大的用户基础和高度可扩展的系统。

2、云原生应用架构十分复杂,通常由许多微服务和组件组成,每个服务专注于单一的业务功能,并通过api进行通信。例如,netflix的云原生应用涉及数千个微服务和组件,滴滴出行的云原生应用涉及数百个微服务和组件等。这些微服务之间存在复杂的拓扑和依赖关系。云原生应用中的微服务和组件面临各种可能的故障影响,如cpu故障、内存故障、服务端崩溃、服务端异常、服务端卡死等。故障的微服务通过影响其他微服务,可能进而影响对外提供服务。通过主动引入各种故障,测试系统能否正确应对各种故障场景、正常对外提供服务,是提高云原生应用健壮性的一种重要技术手段。然而,生成云原生应用可能面临的各种故障类型和故障组合,对云原生应用进行全面的故障注入测试可能需要大量的时间和资源。在有限的时间和资源条件下,如何选择合适的测试覆盖范围和策略,以及如何在测试过程中进行故障注入的优化和调整,是一个需要权衡的难题。

3、在故障空间探测方面,现有的chaos monkey等随机故障注入方法对故障代码的覆盖率较低,难以暴露较深层次的故障处理缺陷;支持人工方式编写故障场景、基于故障场景的自动故障注入方法(如gremlin),依赖测试人员的知识,难以自动化、全面探测故障空间;基于路径分析的微服务失效测试方法虽然能够自动计算故障注入点集合,但仅针对单个请求的服务调用链。对于大规模的云原生应用系统,可能包含成百上千个微服务以及大量不同的服务请求入口,系统整体的故障探测空间巨大,已有方法仍然存在故障空间探测效率低下、故障重复注入等多方面的问题。

4、综上所述,现有的面向云原生应用的故障注入测试方法,在自动化、系统化、及高效测试云原生应用系统方面仍然具有局限性。


技术实现思路

1、本专利技术的目的是针对现有基于故障注入的云原生应用测试方法中故障空间爆炸问题,提供一种面向云原生应用的故障注入自动化测试方法及装置。该方法根据监控的系统运行信息、故障知识库和用户自定义策略,自动生成各种故障注入策略,并优先选择更可能覆盖更多调用链路路径、暴露云原生应用健壮性问题的故障注入策略进行测试。

2、本专利技术的技术方案包括:

3、一种面向云原生应用的故障注入自动化测试方法,所述方法包括:

4、运行目标云原生应用和用户测试请求来收集系统运行时信息,并基于系统运行时信息生成初始的故障注入策略,以更新故障注入策略池;

5、基于从故障注入策略池选择的一故障注入策略faultstrategy,变异生成故障注入策略faultstrategy′,并将所述故障注入策略faultstrategy′加入故障注入策略池;

6、使用所述故障注入策略faultstrategy′对目标云原生应用进行测试,并基于故障注入后的目标云原生应用对所述故障注入策略池进行更新后,返回至所述基于从故障注入策略池选择的一故障注入策略faultstrategy;

7、通过所有故障注入策略faultstrategy′对目标云原生应用的测试,生成该目标云原生应用的测试报告。

8、进一步地,所述基于系统运行时信息生成初始的故障注入策略,包括:

9、基于所述目标系统运行信息,得到请求调用链信息;

10、基于请求调用链信息生成初始的故障注入策略;其中,所述初始的故障注入策略中每个微服务对应的故障类型都为空。

11、进一步地,所述请求调用链信息包括:请求唯一标识、请求起点、请求路径、每个调用链中微服务的服务名称与方法名称、每个调用链中微服务从请求起始点到该微服务的请求调用深度、每个微服务处理请求的请求时间戳、在请求调用链中发生了异常或错误时的异常和错误信息、和每个服务中请求的参数与相应的响应结果。

12、进一步地,所述基于从故障注入策略池选择的一故障注入策略faultstrategy,变异生成故障注入策略faultstrategy′

13、从故障注入策略池随机选择故障注入策略faultstrategy;

14、将故障注入策略faultstrategy中的一个微服务service对应的故障类型faulttype更改为故障类型faulttype′,从而生成故障注入策略faultstrategy′;其中,所述微服务service属于用户自定义策略中关心的故障组件范围,所述故障类型faulttype′不等于所述故障类型faulttype,且所述故障类型faulttype′可以为空,或为故障知识库中该微服务service可能发生的故障类型;

15、在所述故障注入策略faultstrategy′为一个之前被成功测试过的故障注入策略的情况下,返回至所述将故障注入策略faultsrtategy中的一个微服务service对应的故障类型faulttype更改为故障类型faulttype′;

16、在所述故障注入策略faultstrategy变异生成的故障注入策略faultstrategy′都是之前被成功测试过的故障注入策略的情况下,返回至所述从故障注入策略池随机选择故障注入策略faultstrategy;

17、在所述故障注入策略faultstrategy′为一个未被成功测试过的故障注入策略的情况下,将faultstrategy′加入故障注入策略池。

18、进一步地,所述故障注入策略faultstrategy′中包含的总的故障数目不能超过用户自定义策略中定义的最大故障数目。

19、进一步地,使用所述故障注入策略faultstrategy′对目标云原生应用进行测试,包括:

20、尝试将所述故障注入策略faultstrategy′中包含的全部故障注入到所述目标云原生应用;

21、在所述故障注入策略faultstrategy′中包含的全部故障都能注入到所述目标云原生应用的情况下,运行故障注入后的目标云原生应用,并根据所对应的系统运行时信息,判断该目标云原生应用是否存在健壮性问题;其中,如果目标云原生应用存在健壮性问题,则生成一缺陷报告;

22、在所述故障注入策略faultstrategy′中包含的至少一故障不能注入到所述目标云原生应用的情况下,返回至所述基于从故障注入策略池选择的一故障注入策略faultstrategy。

23、进一步地,所述基于故障注入后的目标云原生本文档来自技高网...

【技术保护点】

1.一种面向云原生应用的故障注入自动化测试方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述基于系统运行时信息生成初始的故障注入策略,包括:

3.根据权利要求2所述的方法,其特征在于,所述请求调用链信息包括:请求唯一标识、请求起点、请求路径、每个调用链中微服务的服务名称与方法名称、每个调用链中微服务从请求起始点到该微服务的请求调用深度、每个微服务处理请求的请求时间戳、在请求调用链中发生了异常或错误时的异常和错误信息、和每个服务中请求的参数与相应的响应结果。

4.根据权利要求1所述的方法,其特征在于,所述基于从故障注入策略池选择的一故障注入策略FaultStrategy,变异生成故障注入策略FaultStrategy′

5.根据权利要求1或4所述的方法,其特征在于,所述故障注入策略FaultStrategy′中包含的总的故障数目不能超过用户自定义策略中定义的最大故障数目。

6.根据权利要求1所述的方法,其特征在于,使用所述故障注入策略FaultStrategy′对目标云原生应用进行测试,包括:

7.根据权利要求6所述的方法,其特征在于,所述基于故障注入后的目标云原生应用对所述故障注入策略池进行更新,包括:

8.一种面向云原生应用的故障注入自动化测试装置,其特征在于,所述装置包括:

9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1-7中任一所述方法。

10.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1-7中任一所述方法。

...

【技术特征摘要】

1.一种面向云原生应用的故障注入自动化测试方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述基于系统运行时信息生成初始的故障注入策略,包括:

3.根据权利要求2所述的方法,其特征在于,所述请求调用链信息包括:请求唯一标识、请求起点、请求路径、每个调用链中微服务的服务名称与方法名称、每个调用链中微服务从请求起始点到该微服务的请求调用深度、每个微服务处理请求的请求时间戳、在请求调用链中发生了异常或错误时的异常和错误信息、和每个服务中请求的参数与相应的响应结果。

4.根据权利要求1所述的方法,其特征在于,所述基于从故障注入策略池选择的一故障注入策略faultstrategy,变异生成故障注入策略faultstrategy′

5.根据权利要求1或4所述的方法,其特征在于,所述故...

【专利技术属性】
技术研发人员:张金波崔磊王业超姚潮生梁哲恒沈伍强高钰吴国全魏峻
申请(专利权)人:广东电网有限责任公司信息中心
类型:发明
国别省市:

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

1