CN115729724B - 故障注入方法、故障测试系统、电子设备及可读存储介质 - Google Patents
故障注入方法、故障测试系统、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN115729724B CN115729724B CN202211526991.8A CN202211526991A CN115729724B CN 115729724 B CN115729724 B CN 115729724B CN 202211526991 A CN202211526991 A CN 202211526991A CN 115729724 B CN115729724 B CN 115729724B
- Authority
- CN
- China
- Prior art keywords
- fault
- target
- driving module
- system function
- event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 175
- 238000002347 injection Methods 0.000 title claims abstract description 43
- 239000007924 injection Substances 0.000 title claims abstract description 43
- 238000012360 testing method Methods 0.000 title claims abstract description 37
- 239000000523 sample Substances 0.000 claims abstract description 75
- 230000008569 process Effects 0.000 claims abstract description 61
- 230000006870 function Effects 0.000 claims description 100
- 238000004590 computer program Methods 0.000 claims description 17
- 238000006467 substitution reaction Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 abstract description 6
- 238000012545 processing Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 8
- 239000000243 solution Substances 0.000 description 6
- 238000004088 simulation Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000004888 barrier function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000010523 cascade reaction Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供了一种故障注入方法、故障测试系统、电子设备及可读存储介质,涉及数据处理技术领域。该方法包括平台向用户态探针提供目标故障信息,用户态探针将目标故障信息写入内核态驱动模块的共享内存中;内核态驱动模块响应于用户态探针运行目标进程操作,确定目标进程对应的目标故障方法,并调用目标故障方法对应的目标故障事件;内核态驱动模块根据目标故障事件和目标故障数据对目标进程执行故障注入任务;内核态驱动模块获得故障注入任务的故障执行情况,并写入共享内存中,用户态探针读取故障执行情况并上报给平台。本申请实施例实现了用户态探针和内核态驱动模块之间的目标故障信息以及故障执行情况的传递,保证了故障测试的准确性。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,本申请涉及一种故障注入方法、故障测试系统、电子设备及可读存储介质。
背景技术
随着金融业务的发展,构成金融核心业务系统的服务器、操作系统、数据库及业务系统越来越多的采用了云计算和分布式等新技术。而云计算和分布式技术的不确定性是对金融核心业务系统的稳健性和高可用性的挑战。其中,该不确定性来自于各种软件/硬件故障。因此,如何对金融核心业务系统的稳健性和高可用性进行测试,则成为软件开发和测试团队共同的困境。
目前,传统的非功能测试和故障模拟手段有限且效率低下,难以发现和规避软件/硬件故障,以及由此引发的服务异常级联反应所造成的系统事故。
发明内容
本申请实施例提供了一种故障注入方法、故障测试系统、电子设备及可读存储介质,可以解决传统的非功能测试和故障模拟手段有限且效率低下,难以发现和规避软件/硬件故障,以及由此引发的服务异常级联反应所造成的系统事故的问题。所述技术方案如下:
根据本申请实施例的一个方面,提供了一种故障注入方法,所述方法由故障测试系统执行,所述故障测试系统包括平台和待测试服务器,所述待测试服务器部署有用户态探针和内核态驱动模块,所述方法包括:
所述平台向所述用户态探针提供目标故障信息,所述用户态探针将所述目标故障信息写入所述内核态驱动模块的共享内存中,所述目标故障信息包括目标进程标识、目标故障方法、目标故障数据以及两两间的对应关系;
所述内核态驱动模块响应于所述用户态探针运行目标进程操作,确定所述目标进程对应的目标故障方法,并调用所述目标故障方法对应的目标故障事件;
所述内核态驱动模块根据所述目标故障事件和目标故障数据对所述目标进程执行故障注入任务;
所述内核态驱动模块获得所述故障注入任务的故障执行情况,并写入所述共享内存中,所述用户态探针读取所述故障执行情况并上报给所述平台。
作为一种可选实施例,所述平台向所述用户态探针提供目标故障信息,之前还包括:
获得至少一种故障方法,以及与每种故障方法对应的至少一种故障事件;
在所述内核态驱动模块中创建钩子库,将所述故障事件和所述故障方法存储至所述钩子库中;
所述调用所述目标故障方法对应的目标故障事件,之前包括:
在所述钩子库中确定与所述目标故障方法对应的目标故障事件。
作为一种可选实施例,所述在所述内核态驱动模块中创建钩子库,之后还包括:
获得目标调用表,所述目标调用表用于存储至少一个系统函数标识,以及与每一种系统函数标识对应的故障事件地址信息,所述系统函数标识用于指示对应的进程所需调用的系统函数,所述故障事件地址信息用于指示对应的故障事件在所述钩子库中的调用地址;
所述在所述钩子库中确定与所述目标故障方法对应的目标故障事件,包括:
确定用于指示所述目标进程所需调用的系统函数的目标系统函数标识;
从所述目标调用表中确定与所述目标系统函数标识对应的目标故障事件地址信息;
根据所述目标故障事件地址信息指示的调用地址,获得所述目标故障事件。
作为一种可选实施例,所述获得目标调用表之前包括:
确定系统调用表,所述系统调用表用于存储至少一个系统函数标识,以及与每个系统函数标识对应的系统函数地址信息,所述系统函数地址信息用于指示对应的系统函数在所述内核态驱动模块中的调用地址;
以故障事件的故障事件标识和对应的故障事件地址信息构建相应的索引信息,将所述索引信息和与所述故障事件对应的系统函数的系统函数标识对应存储至替换表中;
根据所述替换表对所述系统调用表进行替换,替换后的系统调用表为所述目标调用表。
作为一种可选实施例,所述根据所述替换表对所述系统调用表进行替换,包括:
根据所述替换表中所述故障事件标识和所述系统函数标识的对应关系,将所述系统调用表中的所述系统函数地址信息替换成对应的所述故障事件地址信息。
作为一种可选实施例,所述故障方法包括用于导致网络故障、网络延迟、文件故障和文件延迟中的至少一种的方法。
作为一种可选实施例,所述平台向所述用户态探针提供目标故障信息,之前还包括:
在所述内核态驱动模块中创建所述共享内存,所述共享内存用于存储所述目标故障信息和所述故障执行情况;
所述用户态探针将所述目标故障信息写入所述内核态驱动模块的共享内存中,之前包括:
所述用户态探针调用共享函数,所述共享函数用于提供访问所述共享内存的接口;
所述用户态探针读取所述故障执行情况并上报给所述平台,之前包括:
所述用户态探针调用所述共享函数。
根据本申请实施例的另一个方面,提供了一种故障测试系统,该系统包括平台和待测试服务器,所述待测试服务器部署有用户态探针和内核态驱动模块,其中,
所述平台用于向所述用户态探针提供目标故障信息;
所述用户态探针用于将所述目标故障信息写入所述内核态驱动模块的共享内存中,所述目标故障信息包括目标进程标识、目标故障方法、目标故障数据以及两两间的对应关系;
所述内核态驱动模块用于响应于所述用户态探针运行目标进程操作,确定所述目标进程对应的目标故障方法,并调用所述目标故障方法对应的目标故障事件;
所述内核态驱动模块还用于根据所述目标故障事件和目标故障数据对所述目标进程执行故障注入任务;
所述内核态驱动模块还用于获得所述故障注入任务的故障执行情况,并写入所述共享内存中,所述用户态探针还用于读取所述故障执行情况并上报给所述平台。
根据本申请实施例的另一个方面,提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现上述的故障注入方法的步骤。
根据本申请实施例的再一个方面,提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的故障注入方法的步骤。
本申请实施例提供的技术方案带来的有益效果是:本申请实施例提供了一种故障注入方法、故障测试系统、电子设备及可读存储介质,使用时,当需要模拟目标进程在运行时出现的目标故障方法时,通过直接调用对应的目标故障事件,并基于目标故障数据执行故障注入任务,以实现对任一进程的故障模拟测试,提高了故障测试效率,保证了待测试服务器开发的稳定性。同时,通过内核态驱动模块的共享内存,避免了用户态探针和内核态驱动模块在所用编译语言存在差异下的信息壁垒,实现了用户态探针和内核态驱动模块之间的目标故障信息以及故障执行情况的传递,保证了故障测试的准确性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种故障注入方法的流程示意图;
图2为本申请实施例提供的一种系统调用表的结构示意图;
图3为本申请实施例提供的一种替换表的结构示意图;
图4为本申请实施例提供的一种目标调用表的结构示意图;
图5为本申请实施例提供的一种故障测试系统的结构示意图;
图6为本申请实施例提供的一种实现故障注入方法的电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请提供的故障注入方法、故障测试系统、电子设备、可读存储介质以及计算机程序产品,旨在解决现有技术的如上技术问题。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
本申请实施例中提供了一种故障注入方法,方法由故障测试系统执行,故障测试系统包括平台和待测试服务器,待测试服务器部署有用户态探针和内核态驱动模块。
应当理解的是,平台由可视化操作中心和流程引擎组成,可视化操作中心负责向用户展示编辑界面,以便用户根据各种编辑界面编辑故障数据以及编排故障信息。在得到故障信息之后,由流程引擎向各待测试服务器分发故障信息。
待测试服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,本实施例不作具体限制。
用户态探针实际上是一段固定的代码单元,通过用户态探针判断待测试服务器当前的进程运行状态,以及和平台之间的故障信息的传递。
内核态驱动模块用于管理开发者在待测试服务器上开发的程序代码,以完成程序代码对应的请求。
如图1所示,其示例性地示出了一种故障注入方法的流程示意图,该方法包括:
S100、平台向用户态探针提供目标故障信息,用户态探针将目标故障信息写入内核态驱动模块的共享内存中,目标故障信息包括目标进程标识、目标故障方法、目标故障数据以及两两间的对应关系。
其中,共享内存是指可被更多的进程所共享的内存,其被描述成内存一个区域(段)的映射,进程是应用程序的运行实例,是应用程序的一次动态执行,多个进程在运行时均可对共享内存进行读写。目标进程标识可以是目标进程的名称、目标进程的控制符(PID)中的至少一种,当需要目标进程在运行时出现的对应故障情况时,目标故障方法是指出现对应故障情况所需的具体方法,比如目标进程是读取文件,对应故障情况是读取文件失败,则目标故障方法是如何导致读取文件失败的方法。目标故障数据是实现对应故障情况所需的参数数据,比如目标进程是读取文件,对应故障情况是读取文件延迟,则目标故障数据可以是读取文件需延迟的具体时长。
S101、内核态驱动模块响应于用户态探针运行目标进程操作,确定目标进程对应的目标故障方法,并调用目标故障方法对应的目标故障事件;
其中,目标故障事件是指是一段固定的代码单元,其展示了用编程语言实现目标故障方法的逻辑思路,即通过调用目标故障事件,即可运行目标进程时实现所需的目标故障方法。
S102、内核态驱动模块根据目标故障事件和目标故障数据对目标进程执行故障注入任务。
示例性地,目标进程用于读取文件,目标故障情况是如何导致读取文件延迟,则目标故障数据可以是读取文件需延迟的预设时长。当调用目标故障情况对应的目标故障事件时,并在调用目标故障事件时使用目标故障数据,则实现了向目标进程执行故障注入任务,该故障注入任务具体为需要延迟预设时长后才读取了文件。
S103、内核态驱动模块获得故障注入任务的故障执行情况,并写入共享内存中,用户态探针读取故障执行情况并上报给平台。
接前例,故障执行情况为延迟预设时长后才读取了文件,将其写入共享内存中,用户态探针读取并上报给平台,从而使用户能通过平台的可视化操作中心得知该故障执行情况是否和目标故障方法所需得到的故障结果一致,保证了故障测试的准确性。
可以理解的是,使用时,当需要模拟目标进程在运行时出现的目标故障方法时,通过直接调用对应的目标故障事件,并基于目标故障数据执行故障注入任务,以实现对任一进程的故障模拟测试,提高了故障测试效率,保证了待测试服务器开发的稳定性。同时,通过内核态驱动模块的共享内存,避免了用户态探针和内核态驱动模块在所用编译语言存在差异下的信息壁垒,实现了用户态探针和内核态驱动模块之间的目标故障信息以及故障执行情况的传递,保证了故障测试的准确性。
在上述各实施例的基础上,作为一种可选实施例,平台向用户态探针提供目标故障信息,之前还包括:
获得至少一种故障方法,以及与每种故障方法对应的至少一种故障事件;
在内核态驱动模块中创建钩子库,将故障事件和故障方法存储至钩子库中。
调用目标故障方法对应的目标故障事件,之前包括:
在钩子库中确定与目标故障方法对应的目标故障事件。
应当理解的是,故障方法包括但不限于网络故障、网络延迟、文件故障和文件延迟。通过预先在内核态驱动模块中创建钩子库,并将能实现故障方法的对应故障事件编写在钩子库中,从而方便后续直接调用目标故障方法对应的目标故障事件,提高了故障测试的响应速度和效率。
在上述各实施例的基础上,作为一种可选实施例,在内核态驱动模块中创建钩子库,之后还包括:
获得目标调用表,目标调用表用于存储至少一个系统函数标识,以及与每一种系统函数标识对应的故障事件地址信息,系统函数标识用于指示对应的进程所需调用的系统函数,故障事件地址信息用于指示对应的故障事件在钩子库中的调用地址;
在钩子库中确定与目标故障方法对应的目标故障事件,包括:
确定用于指示目标进程所需调用的系统函数的目标系统函数标识;
从目标调用表中确定与目标系统函数标识对应的目标故障事件地址信息;
根据目标故障事件地址信息指示的调用地址,获得目标故障事件。
可以理解的是,系统函数有sys_exit()、sys_fork()、sys_read()、sys_write()、sys_open()和sys_close()等,比如,sys_write()这个系统函数用于实现数据写入的作用,当调用sys_write()这个系数函数时,即可实现数据的写入。
当内核态驱动模块读取了目标故障信息后,确定与目标系统函数相对应的目标系统函数标识,从目标调用表中确定目标故障事件地址信息,进而准确无误地从钩子库中调用目标故障事件,以保证目标进程运行时从调用原本的目标系统函数直接替换为调用目标故障事件,保证了故障测试时故障注入任务的准确无误,提高了故障测试的效率。
在上述各实施例的基础上,作为一种可选实施例,获得目标调用表之前包括:
确定系统调用表,系统调用表用于存储至少一个系统函数标识,以及与每个系统函数标识对应的系统函数地址信息,系统函数地址信息用于指示对应的系统函数在内核态驱动模块中的调用地址;
以故障事件的故障事件标识和对应的故障事件地址信息构建相应的索引信息,将索引信息和与故障事件对应的系统函数的系统函数标识对应存储至替换表中;
根据替换表对系统调用表进行替换,替换后的系统调用表为目标调用表。
具体地,如图2所示,其示例性地示出了一种系统调用表的结构示意图,系统调用表为一个数组,其有序存放每个系统函数地址信息,从数组中第一个系统函数开始,依次为:sys_exit()、sys_fork()、sys_read()、sys_write()、sys_open()、sys_close()…。如图3所示,其示例性地示出了一种替换表的结构示意图,索引信息为数组,替换表内有序存放每个索引信息和系统函数标识之间的对应关系。即当运行目标进程时原本需调用的系统函数是sys_read(),根据替换表则可将得到目标索引信息,即而得到目标故障事件为hooked_read()。
在上述各实施例的基础上,作为一种可选实施例,根据替换表对系统调用表进行替换,包括:
根据替换表中故障事件标识和系统函数标识的对应关系,将系统调用表中的系统函数地址信息替换成对应的故障事件地址信息。
示例性地,如图4所示,图4为示例性地示出了一种目标调用表的结构示意图,目标调用表为一个数组,其有序存放每个故障事件地址信息,其根据图2的系统调用表和图3的替换表而得。
在上述各实施例的基础上,作为一种可选实施例,故障方法包括用于导致网络故障、网络延迟、文件故障和文件延迟中的至少一种的方法。
可以理解的是,网络故障是指用户无法访问待测试服务器的在线应用程序,网络延迟是指用户无法及时访问待测试服务器的在线应用程序,文件故障是指用户无法在应用程序中进行读写和传输操作,文件延迟是指用户无法及时在应用程序中进行读写和传输操作。
在上述各实施例的基础上,作为一种可选实施例,平台向用户态探针提供目标故障信息,之前还包括:
在内核态驱动模块中创建共享内存,共享内存用于存储目标故障信息和故障执行情况;
用户态探针将目标故障信息写入内核态驱动模块的共享内存中,之前包括:
用户态探针调用共享函数,共享函数用于提供访问共享内存的接口;
用户态探针读取故障执行情况并上报给平台,之前包括:
用户态探针调用共享函数。
具体地,在内核态驱动模块创建完共享内存后,将共享内存映射为设备文件并进行挂载,从而方便用户态探针直接访问和操作这个设备文件,即用户态探针可以使用共享函数(比如Linux操作系统的标准Api-mmap函数)来映射这个设备文件,以直接操作共享内存。
可以理解的是,考虑到用户态探针在运行目标进程时往往需要调用内核态驱动模块中系统函数,通过在内核态驱动模块中创建共享内存,以及在用户态探针调用共享函数,无需考虑编译语言便可实现用户态探针和内核态驱动模块之间的目标故障信息和故障执行情况的共享。
本申请实施例提供了一种故障测试系统,如图6所示,该故障测试系统可以包括平台601和待测试服务器602,其中,待测试服务器602部署有用户态探针6021和内核态驱动模块6022,其中,
平台601用于向用户态探针6021提供目标故障信息;
用户态探针6021用于将目标故障信息写入内核态驱动模块6022的共享内存中,目标故障信息包括目标进程标识、目标故障方法、目标故障数据以及两两间的对应关系;
内核态驱动模块6022用于响应于用户态探针6021运行目标进程操作,确定目标进程对应的目标故障方法,并调用目标故障方法对应的目标故障事件;
内核态驱动模块6022还用于根据目标故障事件和目标故障数据对目标进程执行故障注入任务;
内核态驱动模块6022还用于获得故障注入任务的故障执行情况,并写入共享内存中,用户态探针6021还用于读取故障执行情况并上报给平台601。
在上述各实施例的基础上,作为一种可选实施例,平台用于向用户态探针提供目标故障信息,之前还包括:
平台获得至少一种故障方法,以及与每种故障方法对应的至少一种故障事件;
在内核态驱动模块中创建钩子库,将故障事件和故障方法存储至钩子库中;
内核态驱动模块用于调用目标故障方法对应的目标故障事件,之前包括:
内核态驱动模块用于在钩子库中确定与目标故障方法对应的目标故障事件。
在上述各实施例的基础上,作为一种可选实施例,用户在内核态驱动模块中创建钩子库,之后还包括:
内核态驱动模块用于获得目标调用表,目标调用表用于存储至少一个系统函数标识,以及与每一种系统函数标识对应的故障事件地址信息,系统函数标识用于指示对应的进程所需调用的系统函数,故障事件地址信息用于指示对应的故障事件在钩子库中的调用地址;
内核态驱动模块用于在钩子库中确定与目标故障方法对应的目标故障事件,包括:
内核态驱动模块还用于确定用于指示目标进程所需调用的系统函数的目标系统函数标识;
内核态驱动模块还用于从目标调用表中确定与目标系统函数标识对应的目标故障事件地址信息;
内核态驱动模块还用于根据目标故障事件地址信息指示的调用地址,获得目标故障事件。
在上述各实施例的基础上,作为一种可选实施例,内核态驱动模块用于获得目标调用表之前包括:
内核态驱动模块还用于确定系统调用表,系统调用表用于存储至少一个系统函数标识,以及与每个系统函数标识对应的系统函数地址信息,系统函数地址信息用于指示对应的系统函数在内核态驱动模块中的调用地址;
内核态驱动模块还用于以故障事件的故障事件标识和对应的故障事件地址信息构建相应的索引信息,将索引信息和与故障事件对应的系统函数的系统函数标识对应存储至替换表中;
内核态驱动模块还用于根据替换表对系统调用表进行替换,替换后的系统调用表为目标调用表。
在上述各实施例的基础上,作为一种可选实施例,内核态驱动模块还用于根据替换表对系统调用表进行替换,包括:
内核态驱动模块用于根据替换表中故障事件标识和系统函数标识的对应关系,将系统调用表中的系统函数地址信息替换成对应的故障事件地址信息。
在上述各实施例的基础上,作为一种可选实施例,故障方法包括用于导致网络故障、网络延迟、文件故障和文件延迟中的至少一种的方法。
在上述各实施例的基础上,作为一种可选实施例,平台向用户态探针提供目标故障信息,之前还包括:
在内核态驱动模块中创建共享内存,共享内存用于存储目标故障信息和故障执行情况;
在用户态探针上创建共享函数,共享函数用于提供访问共享内存的接口;
用户态探针用于将目标故障信息写入内核态驱动模块的共享内存中,之前包括:
用户态探针还用于调用共享函数;
用户态探针还用于读取故障执行情况并上报给平台,之前包括:
用户态探针还用于调用共享函数。
本申请实施例的故障测试系统可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的故障测试系统中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于故障测试系统的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现故障注入方法的步骤,与相关技术相比可实现:对任一进程的故障模拟测试,提高了故障测试效率,保证了待测试服务器开发的稳定性。同时,通过内核态驱动模块的共享内存,避免了用户态探针和内核态驱动模块在所用编译语言存在差异下的信息壁垒,实现了用户态探针和内核态驱动模块之间的目标故障信息以及故障执行情况的传递,保证了故障测试的准确性。
在一个可选实施例中提供了一种电子设备,如图6所示,图6所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器4003用于存储执行本申请实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
本申请实施例提供了一种可读存储介质,该可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”、“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (8)
1.一种故障注入方法,其特征在于,所述方法由故障测试系统执行,所述故障测试系统包括平台和待测试服务器,所述待测试服务器部署有用户态探针和内核态驱动模块,包括:
所述平台向所述用户态探针提供目标故障信息,所述用户态探针将所述目标故障信息写入所述内核态驱动模块的共享内存中,所述目标故障信息包括目标进程标识、目标故障方法、目标故障数据以及两两间的对应关系;
所述内核态驱动模块响应于所述用户态探针运行目标进程操作,确定所述目标进程对应的目标故障方法,并调用所述目标故障方法对应的目标故障事件;
所述内核态驱动模块根据所述目标故障事件和目标故障数据对所述目标进程执行故障注入任务;
所述内核态驱动模块获得所述故障注入任务的故障执行情况,并写入所述共享内存中,所述用户态探针读取所述故障执行情况并上报给所述平台;
所述平台向所述用户态探针提供目标故障信息,之前还包括:
获得至少一种故障方法,以及与每种故障方法对应的至少一种故障事件;
在所述内核态驱动模块中创建钩子库,将所述故障事件和所述故障方法存储至所述钩子库中;
所述调用所述目标故障方法对应的目标故障事件,之前包括:
在所述钩子库中确定与所述目标故障方法对应的目标故障事件;
所述在所述内核态驱动模块中创建钩子库,之后还包括:
获得目标调用表,所述目标调用表用于存储至少一个系统函数标识,以及与每一种系统函数标识对应的故障事件地址信息,所述系统函数标识用于指示对应的进程所需调用的系统函数,所述故障事件地址信息用于指示对应的故障事件在所述钩子库中的调用地址;
所述在所述钩子库中确定与所述目标故障方法对应的目标故障事件,包括:
确定用于指示所述目标进程所需调用的系统函数的目标系统函数标识;
从所述目标调用表中确定与所述目标系统函数标识对应的目标故障事件地址信息;
根据所述目标故障事件地址信息指示的调用地址,获得所述目标故障事件。
2.根据权利要求1所述的故障注入方法,其特征在于,所述获得目标调用表之前包括:
确定系统调用表,所述系统调用表用于存储至少一个系统函数标识,以及与每个系统函数标识对应的系统函数地址信息,所述系统函数地址信息用于指示对应的系统函数在所述内核态驱动模块中的调用地址;
以故障事件的故障事件标识和对应的故障事件地址信息构建相应的索引信息,将所述索引信息和与所述故障事件对应的系统函数的系统函数标识对应存储至替换表中;
根据所述替换表对所述系统调用表进行替换,替换后的系统调用表为所述目标调用表。
3.根据权利要求2所述的故障注入方法,其特征在于,所述根据所述替换表对所述系统调用表进行替换,包括:
根据所述替换表中所述故障事件标识和所述系统函数标识的对应关系,将所述系统调用表中的所述系统函数地址信息替换成对应的所述故障事件地址信息。
4.根据权利要求1所述的故障注入方法,其特征在于,所述故障方法包括用于导致网络故障、网络延迟、文件故障和文件延迟中的至少一种的方法。
5.根据权利要求1至4任一项所述的故障注入方法,其特征在于,所述平台向所述用户态探针提供目标故障信息,之前还包括:
在所述内核态驱动模块中创建所述共享内存,所述共享内存用于存储所述目标故障信息和所述故障执行情况;
所述用户态探针将所述目标故障信息写入所述内核态驱动模块的共享内存中,之前包括:
所述用户态探针调用共享函数,所述共享函数用于提供访问所述共享内存的接口;
所述用户态探针读取所述故障执行情况并上报给所述平台,之前包括:
所述用户态探针调用所述共享函数。
6.一种故障测试系统,其特征在于,包括平台和待测试服务器,所述待测试服务器部署有用户态探针和内核态驱动模块,其中,
所述平台用于向所述用户态探针提供目标故障信息;
所述用户态探针用于将所述目标故障信息写入所述内核态驱动模块的共享内存中,所述目标故障信息包括目标进程标识、目标故障方法、目标故障数据以及两两间的对应关系;
所述内核态驱动模块用于响应于所述用户态探针运行目标进程操作,确定所述目标进程对应的目标故障方法,并调用所述目标故障方法对应的目标故障事件;
所述内核态驱动模块还用于根据所述目标故障事件和目标故障数据对所述目标进程执行故障注入任务;
所述内核态驱动模块还用于获得所述故障注入任务的故障执行情况,并写入所述共享内存中,所述用户态探针还用于读取所述故障执行情况并上报给所述平台;
所述平台向所述用户态探针提供目标故障信息,之前还包括:
获得至少一种故障方法,以及与每种故障方法对应的至少一种故障事件;
在所述内核态驱动模块中创建钩子库,将所述故障事件和所述故障方法存储至所述钩子库中;
所述调用所述目标故障方法对应的目标故障事件,之前包括:
在所述钩子库中确定与所述目标故障方法对应的目标故障事件;
所述在所述内核态驱动模块中创建钩子库,之后还包括:
获得目标调用表,所述目标调用表用于存储至少一个系统函数标识,以及与每一种系统函数标识对应的故障事件地址信息,所述系统函数标识用于指示对应的进程所需调用的系统函数,所述故障事件地址信息用于指示对应的故障事件在所述钩子库中的调用地址;
所述在所述钩子库中确定与所述目标故障方法对应的目标故障事件,包括:
确定用于指示所述目标进程所需调用的系统函数的目标系统函数标识;
从所述目标调用表中确定与所述目标系统函数标识对应的目标故障事件地址信息;
根据所述目标故障事件地址信息指示的调用地址,获得所述目标故障事件。
7.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-5任一项所述的故障注入方法的步骤。
8.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-5任一项所述的故障注入方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211526991.8A CN115729724B (zh) | 2022-11-30 | 2022-11-30 | 故障注入方法、故障测试系统、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211526991.8A CN115729724B (zh) | 2022-11-30 | 2022-11-30 | 故障注入方法、故障测试系统、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115729724A CN115729724A (zh) | 2023-03-03 |
CN115729724B true CN115729724B (zh) | 2024-05-10 |
Family
ID=85299647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211526991.8A Active CN115729724B (zh) | 2022-11-30 | 2022-11-30 | 故障注入方法、故障测试系统、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115729724B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312041B (zh) * | 2023-11-28 | 2024-02-23 | 苏州元脑智能科技有限公司 | 内存注错方法、装置、计算机设备和存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104331324A (zh) * | 2014-11-04 | 2015-02-04 | 哈尔滨工业大学 | MapReduce故障注入套件 |
CN105528284A (zh) * | 2014-09-28 | 2016-04-27 | 华为技术有限公司 | 一种内核故障注入方法及电子设备 |
CN106598797A (zh) * | 2016-12-16 | 2017-04-26 | 郑州云海信息技术有限公司 | 一种多路径io的故障注入方法、系统及故障管理系统 |
CN106598799A (zh) * | 2016-12-16 | 2017-04-26 | 郑州云海信息技术有限公司 | 一种故障注入模拟系统及故障管理系统 |
CN106776178A (zh) * | 2016-12-16 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种cpu故障注入方法及其装置及故障管理系统 |
CN106776180A (zh) * | 2016-12-16 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种pcie故障注入方法及其装置及故障管理系统 |
CN106776175A (zh) * | 2016-12-16 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种内存的故障管理方法、系统及故障管理系统 |
CN111756575A (zh) * | 2020-06-19 | 2020-10-09 | 星辰天合(北京)数据科技有限公司 | 存储服务器的性能分析方法及装置、电子设备 |
CN114880157A (zh) * | 2022-07-08 | 2022-08-09 | 中电金信软件有限公司 | 一种故障注入方法及装置 |
CN114968694A (zh) * | 2022-05-27 | 2022-08-30 | 深信服科技股份有限公司 | 一种硬盘故障注入方法、装置、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6961874B2 (en) * | 2002-05-20 | 2005-11-01 | Sun Microsystems, Inc. | Software hardening utilizing recoverable, correctable, and unrecoverable fault protocols |
KR101266359B1 (ko) * | 2009-05-08 | 2013-05-22 | 한국전자통신연구원 | 선택적 오류 주입 활성화를 통한 저비용 소프트웨어 신뢰성 시험 방법, 소프트웨어 신뢰성 시험을 지정 대상 모듈로 한정하는 방법, 소프트웨어 신뢰성 시험을 위한 대상 모듈에 부하를 발생시키는 방법 및 이러한 방법들을 사용하여 소프트웨어 신뢰성 시험을 하는 컴퓨팅 장치 |
US9316691B2 (en) * | 2011-03-17 | 2016-04-19 | Eigenix | Method and apparatus for fault injection |
US9678816B2 (en) * | 2012-06-29 | 2017-06-13 | Vmware, Inc. | System and method for injecting faults into code for testing thereof |
-
2022
- 2022-11-30 CN CN202211526991.8A patent/CN115729724B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105528284A (zh) * | 2014-09-28 | 2016-04-27 | 华为技术有限公司 | 一种内核故障注入方法及电子设备 |
CN104331324A (zh) * | 2014-11-04 | 2015-02-04 | 哈尔滨工业大学 | MapReduce故障注入套件 |
CN106598797A (zh) * | 2016-12-16 | 2017-04-26 | 郑州云海信息技术有限公司 | 一种多路径io的故障注入方法、系统及故障管理系统 |
CN106598799A (zh) * | 2016-12-16 | 2017-04-26 | 郑州云海信息技术有限公司 | 一种故障注入模拟系统及故障管理系统 |
CN106776178A (zh) * | 2016-12-16 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种cpu故障注入方法及其装置及故障管理系统 |
CN106776180A (zh) * | 2016-12-16 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种pcie故障注入方法及其装置及故障管理系统 |
CN106776175A (zh) * | 2016-12-16 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种内存的故障管理方法、系统及故障管理系统 |
CN111756575A (zh) * | 2020-06-19 | 2020-10-09 | 星辰天合(北京)数据科技有限公司 | 存储服务器的性能分析方法及装置、电子设备 |
CN114968694A (zh) * | 2022-05-27 | 2022-08-30 | 深信服科技股份有限公司 | 一种硬盘故障注入方法、装置、设备及存储介质 |
CN114880157A (zh) * | 2022-07-08 | 2022-08-09 | 中电金信软件有限公司 | 一种故障注入方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115729724A (zh) | 2023-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6539501B1 (en) | Method, system, and program for logging statements to monitor execution of a program | |
KR101036679B1 (ko) | 애트리뷰트를 통하여 제어되는 테스트 케이스 상속 | |
US20080320071A1 (en) | Method, apparatus and program product for creating a test framework for testing operating system components in a cluster system | |
JP6111441B2 (ja) | コンピューティング環境での追跡アプリケーション使用法 | |
US9824000B1 (en) | Testing calling code dynamically with random error injection based on user-specified configuration | |
CN115729724B (zh) | 故障注入方法、故障测试系统、电子设备及可读存储介质 | |
CN111694612A (zh) | 配置检查方法、装置、计算机系统及存储介质 | |
CN113835830A (zh) | 基于ai的rpa集群管理方法、装置以及存储介质 | |
US10915426B2 (en) | Intercepting and recording calls to a module in real-time | |
US20200387370A1 (en) | Intercepting and replaying interactions with transactional and database environments | |
CN114491662B (zh) | 一种基于区块链的数据资产审计方法、系统及设备 | |
CN115617668A (zh) | 一种兼容性测试方法、装置及设备 | |
US11074069B2 (en) | Replaying interactions with transactional and database environments with re-arrangement | |
CN114281818A (zh) | 数据处理方法、装置、服务器和存储介质 | |
CN112256554A (zh) | 一种基于场景测试用例进行测试的方法及设备 | |
US7082376B1 (en) | State full test method executor | |
CN116578413B (zh) | 一种基于云+端架构的信号级仿真模型云化方法 | |
CN117234466B (zh) | 企业管理软件开发方法、系统、设备及存储介质 | |
US20240256255A1 (en) | Downgrading database software | |
CN112860224A (zh) | 一种函数执行环境构建方法、装置、电子设备及存储介质 | |
CN113608803A (zh) | 一种用于多运行环境下实现功能操作的方法与设备 | |
CN116414643A (zh) | 磁盘性能测试方法、装置、通信设备及存储介质 | |
CN118051421A (zh) | Io时延故障的注入方法、装置、电子设备及存储介质 | |
CN116610545A (zh) | 云管平台的可靠性测试方法、设备及计算机可读介质 | |
CN115878476A (zh) | 一种系统测试的方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |