当前位置: 首页 > 专利查询>之江实验室专利>正文

一种基于函数替换的故障注入测试方法及装置制造方法及图纸

技术编号:39333341 阅读:42 留言:0更新日期:2023-11-12 16:08
本说明书公开了一种基于函数替换的故障注入测试方法及装置,可以获取待测试代码,并基于所述待测试代码,确定函数调用链,根据该函数调用链,确定待替换函数,而后,对该待替换函数的函数代码进行修改,以将需要注入的故障代码添加到该待替换函数中,得到修改后函数,并生成修改后函数对应的动态链接库,进而,将动态链接库注入到待替换函数所在的进程,以将进程中的待替换函数替换为修改后函数,最后,响应于预设的触发规则,触发修改后函数以完成故障触发,根据故障触发后得到的系统相关信息,完成故障注入测试,从而达到了灵活、安全的进行故障注入。进行故障注入。进行故障注入。

【技术实现步骤摘要】
一种基于函数替换的故障注入测试方法及装置


[0001]本说明书涉及软件测试
,尤其涉及一种基于函数替换的故障注入测试方法及装置。

技术介绍

[0002]目前软件系统的故障注入测试手段主要有以下几种:1、在目标服务器部署故障注入系统,该系统独立于业务系统,通过调用操作系统命令来注入系统级异常,包括CPU高/内存泄漏/网络延迟/磁盘写满等。这种故障注入方法存在灵活性不足的问题:系统级故障太宽泛,不能模拟真实的应用系统异常,比如特定进程/组件内存泄漏、资源未释放(连结数过多、文件句柄占用)等。
[0003]2、应用系统部署在服务器之前在业务源代码中添加故障用例库,并在业务运行时通过命令/消息来触发故障生效。这种故障注入方法存在的不足为:需要侵入业务系统,改造业务系统代码,埋下了很多未触发的异常,不够安全可靠。另外,该方法不够灵活,如果要修改故障用例库,需要重新部署业务系统。
[0004]因此,如何提高故障注入的灵活性以及安全性,则是亟待解决的问题。

技术实现思路

[0005]本说明书提供一种基于函数替换的故障注入测试方法及装置,以部分的解决现有技术存在的上述问题。
[0006]本说明书采用下述技术方案:本说明书提供了一种导基于函数替换的故障注入测试方法,包括:获取待测试代码,并基于所述待测试代码,确定函数调用链;根据所述函数调用链,确定待替换函数;对所述待替换函数的函数代码进行修改,以将需要注入的故障代码添加到所述待替换函数中,得到修改后函数,并生成所述修改后函数对应的动态链接库;将所述动态链接库注入到所述待替换函数所在的进程,以将所述进程中的待替换函数替换为所述修改后函数;响应于预设的触发规则,触发所述修改后函数以完成故障触发,根据故障触发后得到的系统相关信息,完成故障注入测试,所述系统相关信息至少包括系统日志以及响应信息。
[0007]可选地,基于所述待测试代码,确定函数调用链,具体包括:通过Callgraph工具生成所述待测试代码的静态函数调用链,作为得到的函数调用链。
[0008]可选地,根据所述函数调用链,确定待替换函数,具体包括:确定所述函数调用链中的各函数;从所述各函数确定出满足预设条件的函数,作为候选函数,其中,所述预设条件包
括:函数属于用户态函数、函数不属于多线程函数以及函数不属于静态函数和静态函数中包含的函数中的至少一种;从所述候选函数中,确定出待替换函数。
[0009]可选地,将所述动态链接库注入到所述待替换函数所在的进程,具体包括:确定所述待替换函数所在的进程,作为目标进程;加载所述动态链接库对应的进程,并为所述动态链接库对应的进程分配内存空间;获取所述目标进程中待替换函数对应的地址,以及所述动态链接库对应的进程中所述修改后函数对应的地址;将寄存器中所述待替换函数对应的地址替换为所述动态链接库对应的进程中所述修改后函数对应的地址;保存所述寄存器的数据和状态,以完成注入。
[0010]可选地,所述触发规则包括:在所述待测试代码对应的业务系统中进行按钮点击、在命令行中输入预设指令以及在所述业务系统中进行消息发送中的至少一种。
[0011]可选地,根据故障触发后得到的系统相关信息,完成故障注入测试,具体包括:获取系统日志中的错误日志,包括内存泄漏日志、磁盘满日志;获取所述待测试代码对应的业务系统对故障检测的告警信息;获取所述业务系统在不同故障触发后的响应信息,所述响应信息对应的响应包括服务超时、卡顿现象,以及系统重启;通过诊断工具进行现象分析,得到分析结果;根据所述错误日志、所述告警信息、所述响应信息以及所述分析结果,完成故障注入测试。
[0012]可选地,所述方法还包括:将寄存器中所述待替换函数对应的地址还原,并将所述动态链接库删除,以恢复所述待测试代码对应的业务系统。
[0013]本说明书提供了一种基于函数替换的故障注入测试装置,包括:获取模块,用于获取待测试代码,并基于所述待测试代码,确定函数调用链;确定模块,用于根据所述函数调用链,确定待替换函数;修改模块,用于对所述待替换函数的函数代码进行修改,以将需要注入的故障代码添加到所述待替换函数中,得到修改后函数,并生成所述修改后函数对应的动态链接库;注入模块,用于将所述动态链接库注入到所述待替换函数所在的进程,以将所述进程中的待替换函数替换为所述修改后函数;触发模块,用于响应于预设的触发规则,触发所述修改后函数以完成故障触发,根据故障触发后得到的系统相关信息,完成故障注入测试,所述系统相关信息至少包括系统日志以及响应信息。
[0014]本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于函数替换的故障注入测试方法。
[0015]本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于函数替换的故障注入
测试方法。
[0016]本说明书采用的上述至少一个技术方案能够达到以下有益效果:从上述基于函数替换的故障注入测试方法中可以看出,该方法可以获取待测试代码,并基于所述待测试代码,确定函数调用链,根据该函数调用链,确定待替换函数,而后,对该待替换函数的函数代码进行修改,以将需要注入的故障代码添加到该待替换函数中,得到修改后函数,并生成修改后函数对应的动态链接库,进而,将动态链接库注入到待替换函数所在的进程,以将进程中的待替换函数替换为修改后函数,最后,响应于预设的触发规则,触发修改后函数以完成故障触发,根据故障触发后得到的系统相关信息,完成故障注入测试,系统相关信息至少包括系统日志以及响应信息。
[0017]从上述内容中可以看出,本方法可以确定出需要注入故障代码的函数、并添加故障代码,进而通过生成动态链接库并注入相应进程的方式,直接进行故障注入,相比于现有技术1,能够灵活地按照所需要的故障进行故障注入,相比于现有技术2,不需要直接对业务系统的业务代码进行改造,从而达到了灵活、安全的进行故障注入。
附图说明
[0018]此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:图1为本说明书提供的一种基于函数替换的故障注入测试方法的流程示意图;图2为本说明书提供的一种挑选待替换函数的流程示意图;图3为本说明书提供的一种函数调用链的示意图;图4为本说明书提供的一种注入动态链接库的流程示意图;图5为本说明书提供的一种基于函数替换的故障注入测试装置示意图;图6为本说明书提供的对应于图1的电子设备示意图。
具体实施方式
[0019]为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于函数替换的故障注入测试方法,其特征在于,包括:获取待测试代码,并基于所述待测试代码,确定函数调用链;根据所述函数调用链,确定待替换函数;对所述待替换函数的函数代码进行修改,以将需要注入的故障代码添加到所述待替换函数中,得到修改后函数,并生成所述修改后函数对应的动态链接库;将所述动态链接库注入到所述待替换函数所在的进程,以将所述进程中的待替换函数替换为所述修改后函数;响应于预设的触发规则,触发所述修改后函数以完成故障触发,根据故障触发后得到的系统相关信息,完成故障注入测试,所述系统相关信息至少包括系统日志以及响应信息。2.如权利要求1所述的方法,其特征在于,基于所述待测试代码,确定函数调用链,具体包括:通过Callgraph工具生成所述待测试代码的静态函数调用链,作为得到的函数调用链。3.如权利要求1所述的方法,其特征在于,根据所述函数调用链,确定待替换函数,具体包括:确定所述函数调用链中的各函数;从所述各函数确定出满足预设条件的函数,作为候选函数,其中,所述预设条件包括:函数属于用户态函数、函数不属于多线程函数以及函数不属于静态函数和静态函数中包含的函数中的至少一种;从所述候选函数中,确定出待替换函数。4.如权利要求1所述的方法,其特征在于,将所述动态链接库注入到所述待替换函数所在的进程,具体包括:确定所述待替换函数所在的进程,作为目标进程;加载所述动态链接库对应的进程,并为所述动态链接库对应的进程分配内存空间;获取所述目标进程中待替换函数对应的地址,以及所述动态链接库对应的进程中所述修改后函数对应的地址;将寄存器中所述待替换函数对应的地址替换为所述动态链接库对应的进程中所述修改后函数对应的地址;保存所述寄存器的数据和状态,以完成注入。5.如权利要求1所述的方法,其特征在于,所述触发规则包括:在所述待测试代码对应的业务系统中进行按钮点击、在命令行...

【专利技术属性】
技术研发人员:刘念罗实王永恒葛晓东周宇陈昱宇张宝龙
申请(专利权)人:之江实验室
类型:发明
国别省市:

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

1