本发明涉及软件测试领域,尤其涉及一种基于混沌工程的超时机制验证方法、装置及介质。
背景技术:
1、系统的超时机制是保证系统可靠稳定预先的重要功能,用于确保应用程序或服务在面对延迟或无响应时能够正确地处理请求。然而,无论在系统开发阶段还是在系统运维过程中,都可能存在超时机制失效的问题,为确保系统可靠性和用户体验,对超时机制进行验证是必不可少的。
2、目前,现有超时机制有效性验证主要通过人工在目标系统键入命令的方式实现;例如在目标系统的终端操作系统键入tc qdisc add dev eth0 root netem delay10000ms能够模拟网络延迟10秒钟的故障场景,该命令中tc是终端操作系统中的流量控制工具用来控制netem的工作模式,netem是终端操作系统内核版本提供的网络模拟功能模块。然而此种方式存在以下缺陷:第一,结合键入命令可以看出此种方式对于验证人员对代码运用能力的要求较高,效率低,出错率高;第二,验证过程需要较多资源支持,例如涉及流程审批、操作权限申请问题,同时多部门、跨专业协调成本较高;第三,此种验证方式没有标准的执行流程,过程步骤混乱或缺少必要步骤,导致验证结果不准确,出现漏判和误判的问题,因而亟需改进。
技术实现思路
1、本发明提供一种基于混沌工程的超时机制验证方法、装置及介质,用以解决现有技术中超时机制验证成本高且效率低的缺陷,借助混沌工程事件实现在系统业务处理过程中自动注入故障制造超时触发的场景,自动分析事件结果并与预期结果进行比对验证超时机制是否有效。
2、根据本发明的第一方面,本发明提供了一种基于混沌工程的超时机制验证方法,所述方法包括:
3、获取目标系统的网络配置信息和故障配置信息,其中,所述目标系统的前端中有超时机制,所述故障配置信息用于使所述目标系统的前端和后端产生网络故障;
4、基于所述故障配置信息和所述网络配置信息,在混沌工程系统中创建混沌工程事件;
5、在所述目标系统前端正常处理任务的情况下,触发所述混沌工程事件;
6、对目标数据进行分析,以确定所述混沌工程事件的事件结果,其中,所述目标数据为所述混沌工程事件触发前及触发后所述目标系统产生的运行数据;
7、通过比较所述事件结果与预期结果,确定所述超时机制的运行状态。
8、根据本发明的基于混沌工程的超时机制验证方法,所述获取目标系统的网络配置信息和故障配置信息,包括:
9、通过以下步骤获取目标系统的网络配置信息:
10、在所述目标系统的所述后端安装agent代理程序;
11、通过所述agent代理程序获取所述目标系统的ip及网卡信息;
12、通过以下步骤获取目标系统的故障配置信息:
13、设置第一故障场景和第二故障场景,其中,所述第一故障场景用于模拟所述前端与所述后端之间的故障,所述第二故障场景用于模拟所述后端与数据库之间的故障;
14、对所述第一故障场景和所述第二故障场景分别执行以下操作:获取事件参数,所述事件参数包括事件名称、事件持续时间、事件描述;获取故障事件参数,其中,所述故障事件参数包括网络延时时间、ip及网卡信息,所述网络延时时间大于超时机制触发时间。
15、根据本发明的基于混沌工程的超时机制验证方法,所述基于所述故障配置信息和所述网络配置信息,在混沌工程系统中创建混沌工程事件,包括:
16、对所述第一故障场景和所述第二故障场景分别执行以下操作:
17、根据所述事件参数中的事件描述从混沌工程系统的故障指令库中查找指令;
18、根据所述事件参数和所述故障事件参数对查找到的故障指令进行配置,以生成由配置的后故障指令构成的混沌工程事件。
19、根据本发明的基于混沌工程的超时机制验证方法,所述在所述目标系统前端正常处理任务的情况下,触发所述混沌工程事件,包括:
20、启动压力测试工具,并使用压力测试工具生成预设压力任务发送给所述目标系统的所述前端;
21、在检测到所述压力测试工具运行时间到达设定时间的情况下,则令混沌工程系统执行所述第一故障场景和所述第二故障场景中任意一个故障场景对应的混沌工程事件;
22、在所述任意一个故障场景对应的混沌工程事件结束时间达到设定时间的情况下,则令混沌工程系统执行所述第一故障场景和所述第二故障场景中另一故障场景对应的混沌工程事件;
23、在检测到另一故障场景对应的混沌工程事件结束运行的时间达到设定时间的情况下,则停止生成预设压力任务,并关闭压力测试工具。
24、根据本发明的基于混沌工程的超时机制验证方法,所述对目标数据进行分析,以确定所述混沌工程事件的事件结果,包括:
25、通过预设监控程序获取所述目标系统在每个混沌工程事件执行前、执行中和执行后的每秒事务处理量,以及监控前端线程活跃状态;
26、对以每个混沌工程事件为对象分别执行以下操作:按照每个混沌工程事件执行前、执行前中和执行后的顺序确定每秒事务处理量变化趋势,并根据预设线程阻塞状态判定监控到的前端线程活跃状态中是否出存在线程阻塞情况发生;
27、汇总所述第一故障场景和所述第二故障场景对应的每秒事务处理量变化趋势和线程阻塞情况,得到所述事件结果。
28、根据本发明的基于混沌工程的超时机制验证方法,所述通过比较所述事件结果与预期结果,确定所述超时机制的运行状态,包括:
29、若所述第一故障场景和所述第二故障场景对应的每秒事务处理量变化趋势符合先下降再回升到下降前状态、且均不存在线程阻塞情况发生,则判定所述超时机制的运行状态正常;
30、若所述第一故障场景和/或所述第二故障场景对应的每秒事务处理量变化趋势不符合先下降再回升到下降前状态,或者所述第一故障场景和/或所述第二故障场景存在线程阻塞情况发生,则判定所述超时机制的运行状态异常。
31、根据本发明的基于混沌工程的超时机制验证方法,在所述超时机制运行状态异常的情况下,所述方法还包括:
32、将完成超时机制整改后的目标系统作为新的目标系统,并返回执行所述在所述目标系统前端正常处理任务的情况下,触发所述混沌工程事件的步骤。
33、根据本发明的第二方面,本发明还提供了一种基于混沌工程的超时机制验证装置,所述装置包括:
34、获取模块,用于获取目标系统的网络配置信息和故障配置信息,其中,所述目标系统的前端中有超时机制,所述故障配置信息用于使所述目标系统的前端和后端产生网络故障;
35、创建模块,用于基于所述故障配置信息和所述网络配置信息,在混沌工程系统中创建混沌工程事件;
36、触发模块,用于在所述目标系统前端正常处理任务的情况下,触发所述混沌工程事件;
37、分析模块,用于对目标数据进行分析,以确定所述混沌工程事件的事件结果,其中,所述目标数据为所述混沌工程事件触发前及触发后所述目标系统产生的运行数据;
38、比较模块,用于通过比较所述事件结果与预期结果,确定所述超时机制的运行状态。
39、根据本发明的第三方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于混沌工程的超时机制验证方法。
40、根据本发明的第四方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于混沌工程的超时机制验证方法。
41、本发明提供的一种基于混沌工程的超时机制验证方法,利用目标系统的网络配置信息以及故障配置信息在混沌工程系统创建混沌工程事件,在目标系统正常任务时触发混沌工程事件从而为目标系统的超时机制制造生效条件,接着分析混沌工程事件触发前及触发后目标系统产生的运行数据得到事件结果,最后再将事件结果和预期结果进行比较从而得到超时机制的运行状态,整个验证过程无需多专业配合降低超时机制验证的复杂度,借助混沌工程工具自动制造网络故障,避免了人工输入任何计算机指、程序脚本或改动程序代码,不仅能够降低验证成本,还有助于提升超时机制验证效率和准确性。
42、此外,本发明提供的一种基于混沌工程的超时机制验证装置、一种电子设备和一种非暂态计算机可读存储介质,同样能实现上述技术效果,这里不再赘述。