CN112769609B - 控制故障模拟和模拟故障的方法、系统、介质和产品 - Google Patents

控制故障模拟和模拟故障的方法、系统、介质和产品 Download PDF

Info

Publication number
CN112769609B
CN112769609B CN202011642813.2A CN202011642813A CN112769609B CN 112769609 B CN112769609 B CN 112769609B CN 202011642813 A CN202011642813 A CN 202011642813A CN 112769609 B CN112769609 B CN 112769609B
Authority
CN
China
Prior art keywords
fault
simulated
code
information
simulation
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
Application number
CN202011642813.2A
Other languages
English (en)
Other versions
CN112769609A (zh
Inventor
范鑫禹
旷亚和
叶红
姜城
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202011642813.2A priority Critical patent/CN112769609B/zh
Publication of CN112769609A publication Critical patent/CN112769609A/zh
Application granted granted Critical
Publication of CN112769609B publication Critical patent/CN112769609B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供了一种控制故障模拟的方法和一种模拟故障的方法,可应用于信息安全领域和金融领域等。控制故障模拟的方法包括:获取响应于输入操作获得的故障模拟信息,该故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息;根据故障模拟信息,生成故障模拟报文;以及向目标对象发送故障模拟报文,以使目标对象根据故障模拟报文更改目标对象中的预设应用代码,以模拟待模拟故障。还公开还提供了一种控制故障模拟的装置、模拟故障的装置、系统、设备、存储介质和程序产品。

Description

控制故障模拟和模拟故障的方法、系统、介质和产品
技术领域
本公开涉及信息技术领域,具体涉及信息安全领域和金融领域,更具体地涉及一种控制故障模拟的方法和装置、模拟故障的方法和装置、系统、设备、介质和程序产品。
背景技术
随着互联网技术的发展,伴随着海量请求、峰值流量和与日俱增的系统复杂度,若系统上线前未做好充分的故障演练,上线后很可能出现各种预料之外的问题,使企业蒙受巨大损失。因此,在系统上线前模拟产生各种可能发生的故障,观察系统的反应,验证预期策略是否可行、检验系统是否健壮、事故处理预案是否可靠成为保障应用系统安全稳定运行的重要一环。
相关技术中,需要技术人员掌握一定的模拟技巧进行故障模拟,该方法存在模拟成本高、无法精准模拟故障的问题。
发明内容
鉴于上述问题,本公开提供了能够提高模拟复杂度、提高模拟精度的控制故障模拟的方法和装置、模拟故障的方法和装置、系统、设备、介质和程序产品。
根据本发明的第一个方面,提供了一种控制故障模拟的方法,包括:获取响应于输入操作获得的故障模拟信息,该故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息;根据故障模拟信息,生成故障模拟报文;以及向目标对象发送故障模拟报文,以使目标对象根据故障模拟报文更改目标对象中的预设应用代码,以模拟待模拟故障。
根据本公开的实施例,上述控制故障模拟的方法还包括:接收目标对象模拟待模拟故障后发送的故障执行信息,该故障执行信息用于指示待模拟故障是否被执行;以及根据故障执行信息,确定针对故障模拟信息的展示信息。
根据本公开的实施例,上述故障模拟信息还包括待模拟故障的发起对象;上述根据故障执行信息,确定针对故障模拟信息的展示信息包括:确定故障执行信息与发起对象之间的关联关系;在故障执行信息指示待模拟故障被执行的情况下,确定针对故障模拟信息的展示信息包括故障执行信息和关联关系;以及在故障执行信息指示待模拟故障未被执行的情况下,确针对故障模拟信息的展示信息包括故障执行信息、关联关系和预设告警信息。
本公开的第二方面提供了一种模拟故障的方法,包括:接收根据故障模拟信息生成的故障模拟报文,该故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息;识别故障模拟报文,以得到待模拟故障的属性信息;根据待模拟故障的属性信息,确定故障注入点和插桩代码;根据故障注入点在目标对象的预设应用代码中插入插桩代码,得到更改后应用代码;以及运行更改后应用代码,以模拟待模拟故障。
根据本公开的实施例,上述待模拟故障的属性信息包括待模拟故障的故障类型和待模拟故障所针对的函数;上述根据待模拟故障的属性信息,确定故障注入点和插桩代码包括:确定预设应用代码中待模拟故障所针对的函数的第一定义代码;确定第一定义代码的起始位置为故障注入点;以及根据故障类型与故障函数之间的预设映射关系,确定与待模拟故障的故障类型具有映射关系的故障函数的第二定义代码,作为插桩代码。
根据本公开的实施例,上述根据故障注入点在目标对象的预设应用代码中插入插桩代码,得到更改后应用代码包括:根据故障注入点在目标对象的预设应用代码中插入插桩代码;以及在插桩代码的起始位置和终止位置插入预设监控代码,得到更改后应用代码。
根据本公开的实施例,上述模拟故障的方法还包括:采集运行更改后应用代码时运行监控代码的反馈信息;根据反馈信息确定待模拟故障的故障执行信息;以及向发送故障模拟报文的终端发送故障执行信息。
根据本公开的实施例,上述模拟故障的方法还包括在运行更改后应用代码之后:删除更改后应用代码中插入的插桩代码。
本公开的第三方面提供了一种模拟故障的方法,包括:获取响应于输入操作获得的故障模拟信息,该故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息;根据待模拟故障的属性信息,确定故障注入点和插桩代码;根据故障注入点在目标对象的预设应用代码中插入所述插桩代码,得到更改后应用代码;以及运行更改后应用代码,以模拟待模拟故障。
本公开的第四方面提供了一种控制故障模拟的装置,包括:模拟信息获取模块,用于获取响应于输入操作获得的故障模拟信息,该故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息;报文生成模块,用于根据故障模拟信息,生成故障模拟报文;以及报文发送模块,用于向目标对象发送故障模拟报文,以使目标对象根据故障模拟报文更改目标对象的预设应用代码,以模拟待模拟故障。
本公开的第四方面提供了一种模拟故障的装置,包括:报文接收模块,用于接收根据故障模拟信息生成的故障模拟报文,该故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息;报文识别模块,用于识别故障模拟报文,以得到待模拟故障的属性信息;代码确定模块,用于根据待模拟故障的属性信息,确定故障注入点和插桩代码;代码插入模块,用于根据故障注入点在目标对象的预设应用代码中插入插桩代码,得到更改后应用代码;以及代码运行模块,用于运行更改后应用代码,以模拟待模拟故障。
本公开的第五方面提供了一种模拟故障的系统,包括前文描述的控制故障模拟的装置和模拟故障的装置。
本公开的第六方面还提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述的控制故障模拟的方法或模拟故障的方法。
本公开的第七方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述的控制故障模拟的方法或模拟故障的方法。
本公开的第八方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的控制故障模拟的方法或模拟故障的方法。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的控制故障模拟和模拟故障的方法、装置、设备、介质和程序产品的应用场景图;
图2示意性示出了根据本公开实施例的控制故障模拟的方法流程图;
图3示意性示出了根据本公开实施例的模拟故障的方法流程图;
图4示意性示出了根据本公开实施例的确定故障注入点和插桩代码的原理图;
图5示意性示出了根据本公开实施例的在预设应用代码中插入插桩代码的原理示意图;
图6示意性示出了根据本公开另一实施例的模拟故障的方法流程图;
图7示意性示出了根据本公开另一实施例的控制故障模拟的方法流程图;
图8示意性示出了根据本公开实施例的模拟故障的原理示意图;
图9示意性示出了根据本公开实施例的控制故障模拟的装置结构框图;
图10示意性示出了根据本公开实施例的模拟故障的装置结构框图;以及
图11示意性示出了根据本公开实施例的适于实现控制故障模拟或模拟故障的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
本公开的实施例提供了一种控制故障模拟的方法。该方法先获取响应于输入操作获得的故障模拟信息,该故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息。随后根据故障模拟信息,生成故障模拟报文。最后向目标对象发送故障模拟报文,以使目标对象根据故障模拟报文更改目标对象中的预设应用代码,以模拟待模拟故障。
本公开的实施例还提供了一种模拟故障的方法。该方法先接收根据故障模拟信息生成的故障模拟报文,该故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息。随后识别故障模拟报文,以得到待模拟故障的属性信息,并根据得到的待模拟故障的属性信息来确定故障注入点和插桩代码。随后根据故障注入点在目标对象的预设应用代码中插入插桩代码,得到更改后应用代码。最后运行更改后应用代码,以模拟待模拟故障。
图1示意性示出了根据本公开实施例的控制故障模拟和模拟故障的方法、装置、设备、介质和程序产品的应用场景图。
如图1所示,该实施例的应用场景100例如可以包括测试人员101、能够访问互联网页面102的第一电子设备、具有控制故障模拟功能的第二电子设备103和应用服务器104。其中,第一电子设备与第二电子设备103之间,第二电子设备和应用服务器104之间例如可以通过网络进行通信。网络可以包括各种连接类型,例如有线或者无线通信链路等等。
测试人员101例如可以为对应用服务器104中的应用代码进行测试信息配置的工作人员。第一电子设备例如可以通过安装的客户端应用提供互联网页面102,以向测试人员101提供测试配置平台。测试人员101可以通过对互联网页面102的操作,使得第一电子设备获取到故障模拟信息。
第一电子设备例如可以通过网络将获取到的故障模拟信息发送给第二电子设备103,第二电子设备103通过调用控制故障模拟功能来控制应用服务器104,以使得应用器调用集成的模拟故障的功能来针对应用代码进行故障模拟。在一实施例中,应用代码例如可以为支持第一电子设备、第二电子设备或其他类似的任意电子设备中安装的客户端应用运行的代码。例如,该应用代码可以为支持金融类客户端应用、交互平台类应用、搜索类应用等运行的代码。
在一实施例中,第一电子设备和第二电子设备103可以是具有处理功能的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
在一实施例中,该应用服务器104可以响应于第二电子设备103发送的控制指令模拟故障。应用服务器可以通过在应用代码中插入使得应用出现故障的代码来实现故障的模拟。具体地,第二电子设备103通过调用控制故障模拟功能向应用服务器104发送控制指令,应用服务器104中的模拟故障的功能响应于该控制指令对故障进行模拟。
在一实施例中,第一电子设备例如还可以具有显示屏。应用服务器104例如可以在模拟故障后,将模拟结果反馈给第二电子设备103,由第二电子设备103生成供第一电子设备展示的故障模拟结果的展示页面,以使得测试人员101能够实时查看故障的模拟结果。
根据本申请的实施例,根据实际需求,第二电子设备中的控制故障模拟的功能例如也可以集成于应用服务器104中,且该控制故障模拟的功能和模拟故障的功能由应用服务器104中的两个独立的功能模块来实现。或者,第二电子设备中的控制故障模拟的功能也可以集成于提供互联网页面的第一电子设备中。
需要说明的是,本公开实施例所提供的控制故障模拟的方法一般可以由第二电子设备103执行,模拟故障的方法一般可以由应用服务器104执行。相应地,本公开实施例所提供的控制故障模拟的装置一般可以设置于第二电子设备103中,本公开实施例所提供的模拟故障的装置可以设置在应用服务器104中。
可以理解的是,图1描述的互联网页面102、第二电子设备103和应用服务器104的类型和数目仅作为示例以利于理解本公开,根据实际需求,该实施例可以具有任意类型和数目的互联网页面102、第二电子设备103和应用服务器104。
图2示意性示出了根据本公开实施例的控制故障模拟的方法流程图。
如图2所示,该实施例的控制故障模拟的方法200例如可以包括操作S210~操作S230。
在操作S210,获取响应于输入操作获得的故障模拟信息。
根据本公开的实施例,输入操作可以为测试人员对前文描述的互联网页面的操作。互联网页面中例如可以展示有输入框和/或选择框。输入操作例如可以为向输入框中输入信息的操作和/或对选择框提供选项的选中操作。
根据本公开的实施例,互联网页面例如可以展示有供测试人员输入待模拟故障针对的目标对象的属性信息的输入框或选择框,且展示有供测试人员输入待模拟故障的属性信息的输入框或选择框。在一次故障模拟中,测试人员需要通过输入框或选择框向展示互联网页面的电子设备提供包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息的故障模拟信息。
示例性地,提供的待模拟故障针对的目标对象的属性信息例如可以包括目标对象的互联网协议地址(Internet Protocol Address,IP地址)。其中,目标对象例如为前文描述的应用服务器。在一实施例中,若应用服务器中可以运行多个客户端应用的应用代码,该实施例的针对的目标对象的属性信息例如还可以包括待模拟故障所针对的客户端应用的标识信息。提供的待模拟故障的属性信息例如可以包括待模拟故障的类型、待模拟故障针对的函数类型、待模拟故障针对的函数名、待模拟故障的故障参数(例如可以包括延时时长、抛出的异常信息)等。可以理解的是,上述待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息仅作为示例以利于理解本公开,本公开对此不作限定。
示例性地,函数类型例如可以包括自定义类型和通用类型。其中,自定义类型的函数例如可以包括定制化hook业务函数等。通用类型的函数例如可以包括模拟数据库操作异常的函数、模拟文件读写异常的函数等。
示例性地,若函数类型为自定义类型,则需要测试人员填写待模拟故障针对的函数和函数所在位置。若函数类型为通用类型,则需要测试人员选择预先设置的函数中的任意一个作为待模拟故障针对的函数(例如JDBC(Java Database Connectivity)调用函数、文件读取函数等)。
示例性地,故障类型例如可以包括延时故障、调用异常故障等。
在操作S220,根据故障模拟信息,生成故障模拟报文。
在操作S230,向目标对象发送故障模拟报文,以使目标对象根据故障模拟报文更改目标对象中的预设应用代码,以模拟待模拟故障。
根据本公开的实施例,在获取到故障模拟信息后,例如可以将故障模拟信息组装成通信报文发往目标对象。具体可以发送给目标对象中安装的具有模拟故障的功能的模块。
示例性地,可以根据第二电子设备与应用服务器之间的通信协议,将故障模拟信息包括的多个信息根据预设规则排列,并转换排列好的多个信息,得到作为故障模拟报文的通信报文。其中,通信协议可以根据实际需求进行设定,例如可以选择应用层的HTTP协议、传输层的TCP/IP协议或UDP协议等,本公开对此不做限定。
示例性地,在故障模拟信息包括目标对象的IP地址、所针对的客户端应用的标识、待模拟故障的类型、待模拟故障的故障参数、待模拟故障针对的函数类型、待模拟故障针对的函数的情况下,可以根据下表的顺序排列故障模拟信息。
IP地址 应用标识 函数类型 函数 故障类型 故障参数
根据本公开的实施例,在生成故障模拟报文后,可以依据1P地址向目标对象发送通信报文。具体可以是与IP地址匹配的应用服务器发送通信报文,以使得该应用服务器根据接收的通信报文对应用代码进行故障函数的插桩,得到更改后应用代码。如此,通过运行该更改后应用代码可以实现对待模拟故障的模拟。
综上分析,本公开实施例通过响应于输入操作生成模拟报文,并向待模拟故障针对的目标对象发送故障模拟报文,可以便于目标对象实现故障的模拟。该故障模拟的实施无需测试人员掌握模拟技巧,仅提供故障模拟信息即可,因此可以降低故障模拟成本。
基于以上控制故障模拟的方法,本公开还提供了一种模拟故障的方法。以下将结合图3~图6对本公开提供的模拟故障的方法进行详细描述。
图3示意性示出了根据本公开实施例的模拟故障的方法流程图。
如图3所示,该实施例的模拟故障的方法300可以包括操作S310~操作S350。该模拟故障的方法300例如可以由前文描述的目标对象来执行。
在操作S310,接收根据故障模拟信息生成的故障模拟报文。
根据本公开的实施例,接收的故障模拟报文为前文描述的根据故障模拟信息生成的通信报文。故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息。
在操作S320,识别故障模拟报文,以得到待模拟故障的属性信息。
根据本公开的实施例,在接收到故障模拟报文后,例如可以对故障模拟报文进行字符识别和拆分,识别得到前文描述的待模拟故障的属性信息和待模拟故障所针对的目标对象的属性信息。其中,待模拟故障的属性信息和目标对象的属性信息与前文描述的信息类似,在此不再赘述。可以理解的是,对报文的字符识别和拆分可以采用相关技术中的方法,本公开对此不作限定。
在操作S330,根据待模拟故障的属性信息,确定故障注入点和插桩代码。
根据本公开的实施例,待模拟故障的属性信息例如可以包括待模拟故障所针对的函数所在位置,则可以确定应用代码中该函数所在位置处为故障注入点。或者,待模拟故障的属性信息例如可以包括待模拟故障所针对的函数。该实施例可以通过识别应用代码来得到该所针对的函数在应用代码中的位置,并确定该位置处为故障注入点。
根据本公开的实施例,待模拟故障的属性信息例如可以包括模拟故障的代码,则该实施例可以将该模拟故障的代码作为插桩代码。
在操作S340,根据故障注入点在目标对象的预设应用代码中插入插桩代码,得到更改后应用代码。
在操作S350,运行更改后应用代码,以模拟待模拟故障。
根据本公开的实施例,在确定插桩代码和故障注入点后,应用服务器可以先在应用代码中定位故障注入点。然后在定位的位置添加该插桩代码,使得更改后的应用代码包括模拟故障的代码。如此,在运行更改后的应用代码时,模拟故障的代码会被执行,以此可以实现对故障的模拟。
根据本公开的实施例,该预设应用代码中插入插桩代码时,例如可以采用插桩技术。插桩技术具体为在保证原有应用代码逻辑完整性的基础上,在应用代码中插入插桩代码作为探针,通过探针采集应用代码中的信息(例如方法、方法参数值、返回值等)。
综上分析,本公开实施例通过在应用代码中动态插入插桩技术来进行故障模拟,可以精准模拟生产故障。再者,通过根据接收的故障模拟报文可以转换得到故障注入点和插桩代码,无需测试人员根据经验编写插桩代码,因此可以降低故障模拟成本。
图4示意性示出了根据本公开实施例的确定故障注入点和插桩代码的原理图。
根据本公开的实施例,在待模拟故障的属性信息包括待模拟故障所针对的函数的情况下,如图4所示,该实施例400在确定故障注入点时,可以先识别预设应用代码。根据识别结果确定预设应用代码410中待模拟故障所针对的函数的定义代码的位置。随后根据该第一定义代码的位置确定故障注入点。例如,若确定待模拟故障所针对的函数的定义代码为如图4所示的代码段411,则可以确定该代码段411的起始位置为故障注入点420。
示例性地,待模拟故障针对的目标对象的属性信息例如除了应用服务器的IP地址外,例如还可以包括客户端应用的标识。相应地,预设应用代码为支持客户端应用的标识所对应的客户端应用运行的代码。在应用服务器中仅运行针对一个客户端应用的应用代码时,该预设应用代码即为应用服务器中运行的应用代码。
根据本公开的实施例,本公开例如可以在应用服务器中预先维护有故障类型和故障函数之间的预设映射关系。在待模拟故障的属性信息包括待模拟故障的故障类型的情况下,如图4所示,该实施例400在确定插桩代码时,可以先根据预先维护的预设映射关系440,确定与待模拟故障的故障类型430具有映射关系的故障函数450。然后将该故障函数的第二定义代码作为插桩代码460。其中,在确定故障函数450时,可以将故障类型430作为依据查询预设映射关系440。
示例性地,在故障类型为延时故障时,具有映射关系的故障函数450例如可以为Sleep函数。在故障类型为调用异常故障时,具有映射关系的故障函数450例如可以为ThrowException函数。在一实施例中,该故障函数450例如也可以为测试人员预先编写好后输入至第一电子设备。可以理解的是,上述具有映射关系的故障函数的类型仅作为示例以利于理解本公开,本公开对此不作限定。对于不同语言编写的应用代码,该故障函数的类型和第二定义代码可能会有不同。
根据本公开的实施例,如图4所示,在得到故障注入点420和插桩代码460后,即可在该故障注入点420的位置(即代码段411的起始位置)插入该插桩代码460,得到更改后的应用代码470。
图5示意性示出了根据本公开实施例的在预设应用代码中插入插桩代码的原理示意图。
根据本公开的实施例,在应用代码为Java代码时,考虑到Java虚拟机(JavaVirtual Machine,JVM)不能直接执行.java代码,也不能直接执行.class文件,只能执行.class文件中存储的指令码,则.class文件需要通过类加载器装载以后才能运行。基于此机制,该实施例可以在类加载器装载之前拦截修改类当中的内容。因此,该实施例可以在应用代码加载过程中,采用字节码插桩的方式,先拦截待模拟故障所针对的函数所属类的加载,再在应用代码中插入插桩代码。
示例性地,在插入插桩代码的方法中,例如需要用到两个技术javaagent与javassist。前者用于拦截类加载器装载,后者用于操作修改class文件。例如,如图5所示,该实施例500中,在应用调用方A需要调用应用服务方B(即应用服务器)提供的服务时,应用服务方B需要先加载应用代码。该实施例可以在加载应用代码时,可以先采用Javaagent技术在.calss文件被加载之前对待模拟代码所针对的filewrite函数的加载进行拦截。采用Javaassist技术在filewrite函数的起始位置插入插桩代码。该实施例中插桩代码。
示例性地,Javassist是一个开源的分析、编辑和创建Java字节码的类库。其主要的优点在于简单且快速。可以直接使用java编码的形式,不需要了解虚拟机指令,就能动态改变类的结果,或者动态生成。
根据本公开的实施例,如图5所示,该实施例500例如可以在根据故障注入点在目标对象中的预设应用代码中插入所述插桩代码的同时,在插桩代码的起始位置和/或终止位置插入预设监控代码。将插入预设监控代码和插桩代码后的应用代码作为更改后应用代码。
示例性地,监控代码例如可以用于监控插桩代码是否被执行。例如,监控代码可以定义有一个变量,该变量在插桩代码执行前后的值不相同,且监控代码可以在插桩代码运行后返回变量的值。该实施例可以根据变量的值或者根据是否返回变量值来确定插桩代码是否被运行。例如,监控代码例如可以为信息上报函数,在运行该监控代码后,可以采用HTTP协议、消息队列的方式或日志记录的方式上报插桩代码的运行信息。
示例性地,对于不同的插桩代码,可以在不同位置设置监控代码。例如,若监控代码为延迟故障对应的Sleep函数的定义代码,则在Sleep函数的定义代码的起始位置和终止位置插入监控代码。若监控代码为调用异常故障对应的Throw Exception函数的定义代码,则可以仅在Throw Exception函数的定义代码的起始位置插入监控代码。可以理解的是,监控代码的类型和监控代码的插入位置可以根据实际需求进行设定,本公开对此不作限定。
根据本公开的实施例,还可以在预设应用代码运行的过程中,采用Attach方式将插桩的引擎附加值执行应用代码的进程中,以经由该插桩的引擎对已加载至类加载器的代码进行更改。
根据本公开的实施例,可以通过在待模拟故障所针对的函数的相关类的记载过程中,通过代码托管平台提供的接口来插入插桩代码。具体地,在类加载器加载应用代码的过程中,通过代码托管平台提供的接口,以Agent插桩的方式拦截类加载过程,并经由调用接口动态修改类函数。
如图5所示,故障模拟的原理为:在通过Hook服务提供方B提供的服务接口,使用动态代码插桩技术,在服务接口中实时插入插桩代码。在服务调用方A调用服务提供方B提供的功能时,会执行更改后代码,触发插桩代码定义的故障函数,此时可以观察服务调用方A是否能够正常响应故障函数对应的故障。例如是否能够抛出异常或调用服务提供方B的备用服务器。若服务调用方A能够正常响应,则可以确定客户端应用系统的事故处理预案可靠,系统稳定健壮。
综上分析,本公开实施例通过采用字节码插桩的方式对应用代码进行故障模拟,可以提高故障模拟的精准度。通过设置监控代码,可以对故障模拟操作的过程进行记录,以此保证故障模拟的有效性。
可以理解的是,上述应用代码为Java代码的实施例仅作为示例以利于理解本公开,本公开对此不作限定。对于不同语言编写的应用代码,可以采用与前述实施例描述的类似原理和方法来实现插桩代码的插入和故障的模拟。
图6示意性示出了根据本公开另一实施例的模拟故障的方法流程图。
根据本公开的实施例,在设置监控代码的情况下,该实施例的模拟故障的方法例如还可以根据该监控代码的运行,来确定故障模拟是否被顺利执行。如图6所示,该实施例的模拟故障的方法600除了前文描述的操作S310~操作S350外,还包括操作S660~操作S680。
在操作S660,采集运行更改后应用代码时运行监控代码的反馈信息。
在操作S670,根据反馈信息确定待模拟故障的故障执行信息。
根据本公开的实施例,可以根据监控代码的反馈信息是否满足预设条件,来确定待模拟故障是否被顺利执行。例如,若监控代码定义有变量,且在插桩代码运行后会返回变量的值时,该实施例可以确定返回的变量的值是否为预设值。若为预设值,则确定插桩代码已被执行,确定待模拟故障的故障执行信息为已执行。或者,可以从应用代码的运行日志中提取到监控代码的反馈信息。在确定具有反馈信息时,则确定插桩代码已被执行,待模拟故障的故障执行信息为已执行。
根据本公开的实施例,为了便于测试人员查看测试结果,该实施例在确定了待模拟故障的故障执行信息后,可以经由操作S680向发送故障模拟报文的终端发送故障执行信息。其中,发送故障模拟报文的终端具体为执行前文描述的控制故障模拟的方法的终端。
可以理解的是,上述确定执行信息的方法仅作为示例以利于理解本公开,本公开可以根据监控代码的不同采用不同的方法来确定执行信息,本公开对此不作限定。
综上分析,本公开实施例通过根据监控代码运行后的反馈信息来确定待模拟故障的执行信息,并向具有控制故障模拟功能的终端发送执行信息,可以便于测试人员知晓待模拟故障是否真实执行,从而可以使得故障的模拟可监控,便于提高故障模拟的有效性。
根据本公开的实施例,在确定的故障执行信息为待模拟故障已执行的情况下,该实施例还可以删除更改后应用代码中插入的插桩代码。具体地,可以先识别更改后的应用代码,识别得到前文确定的插桩代码。随后对该识别到的插桩代码执行删除操作。
示例性地,在插入插桩代码的同时,若插入了监控代码,该实施例还可以采用与删除插桩代码的方法类似的方法,删除更改后的应用代码中的监控代码。
本公开实施例通过在故障模拟完成后删除插桩代码,可以使得应用代码快速恢复原状,无需测试人员参与。因此,可以进一步降低故障模拟的成本,避免故障模拟对应用代码上线后客户端应用运行的影响。
图7示意性示出了根据本公开另一实施例的控制故障模拟的方法流程图。
根据本公开的实施例,在应用服务器发送待模拟故障的故障执行信息后,具有控制故障模拟功能的终端例如还可以生成供测试人员操作的终端进行展示的页面。从而便于测试人员知晓待模拟故障是否真实执行。如图7所示,该实施例的控制故障模拟的方法700除了前文描述的操作S210~操作S230外,还包括操作S740~操作S750。
在操作S740,接收目标对象模拟待模拟故障后发送的故障执行信息,该故障执行信息用于指示待模拟故障是否被执行。
在操作S750根据故障执行信息,确定针对故障模拟信息的展示信息。
根据本公开的实施例,例如可以将故障执行信息转换为文字、图像或表格等形式,得到展示信息。为了便于展示,例如还可以将待模拟故障的属性与故障执行信息进行关联,将关联信息作为展示信息。
示例性地,故障模拟信息除了前文描述的待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息外,例如还可以包括待模拟对象的发起对象。该发起对象例如可以为测试人员的账户ID。为了便于不同的测试人员调取其发起的待模拟故障的故障执行信息,该实施例在确定展示信息时,例如还可以先确定故障执行信息与发起对象之间的关联关系。最后,将该关联关系和故障执行信息作为展示信息。
示例性地,在故障执行信息指示待模拟故障未被执行的情况下,确定的展示信息例如还可以包括预设告警信息,以起到提示测试人员的作用。可以理解的是,该展示信息例如也可以不包括预设告警信息,但待模拟故障未被执行时的展示信息相较于待模拟故障被执行时的展示信息,可以被突出展示,以此起到提示测试人员的作用。
本公开实施例通过根据故障执行信息生成展示信息,可以便于测试人员知晓待模拟故障是否真实执行,从而可以使得故障的模拟可监控,便于提高故障模拟的有效性。再者,通过将故障执行信息与故障的发起对象、故障的属性信息等进行关联,可以向测试人员提供具有多维度信息的展示页面,可以使得故障模拟过程可溯源、可监控。
图8示意性示出了根据本公开实施例的模拟故障的原理示意图。
根据本公开的实施例,如图8所示,该实施例800中可以通过测试人员810、测试人员使用的终端820、具有控制故障模拟功能的终端830和应用服务器840彼此之间的交互来实现对故障的模拟。
首先,测试人员810可以对终端820展示的互联网页面执行输入操作。终端820响应于该输入操作可以得到故障模拟信息,并将故障模拟信息发送给终端830。其中,故障模拟信息例如可以包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息。
终端830在获取到响应于测试人员的输入操作得到的故障模拟信息后,可以先通过操作S831来根据故障模拟信息生成故障模拟报文。随后将故障模拟报文发送给应用服务器840。
应用服务器在接收到故障模拟报文后,可以先通过操作S841识别故障模拟报文。随后根据识别到的待模拟故障的属性信息,执行操作S842,以确定故障注入点和插桩代码。随之根据故障注入点在目标对象的预设应用代码850中插入插桩代码,得到更改后应用代码。最后通过操作S843运行更改后应用代码,以模拟待模拟故障。
根据本公开的实施例,在终端830的功能集成于应用服务器840的情况下,该实施例还可以在应用服务器840获取到故障模拟信息后,根据故障模拟信息中的待模拟故障的属性信息来确定注入点和插桩代码。
图9示意性示出了根据本公开实施例的控制故障模拟的装置结构框图。
如图9所示,该实施例的控制故障模拟的装置900例如可以包括模拟信息获取模块910、报文生成模块920和报文发送模块930。
模拟信息获取模块910用于获取响应于输入操作获得的故障模拟信息,该故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息。在一实施例中,模拟信息获取模块910例如可以用于执行前文描述的操作S210,在此不再赘述。
报文生成模块920用于根据故障模拟信息,生成故障模拟报文。在一实施例中,报文生成模块920例如可以用于执行前文描述的操作S220,在此不再赘述。
报文发送模块930用于向目标对象发送故障模拟报文,以使目标对象根据故障模拟报文更改目标对象的预设应用代码,以模拟待模拟故障。在一实施例中,报文发送模块930例如可以用于执行前文描述的操作S230,在此不再赘述。
图10示意性示出了根据本公开实施例的模拟故障的装置结构框图。
如图10所示,该实施例的模拟故障的装置1000例如可以包括报文接收模块1010、报文识别模块1020、代码确定模块1030、代码插入模块1040和代码运行模块1050。
报文接收模块1010用于接收根据故障模拟信息生成的故障模拟报文,该故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息。在一实施例中,报文接收模块1010例如可以用于执行前文描述的操作S310,在此不再赘述。
报文识别模块1020用于识别故障模拟报文,以得到待模拟故障的属性信息。在一实施例中,报文识别模块1020例如可以用于执行前文描述的操作S320,在此不再赘述。
代码确定模块1030用于根据待模拟故障的属性信息,确定故障注入点和插桩代码。在一实施例中,代码确定模块1030例如可以用于执行前文描述的操作S330,在此不再赘述。
代码插入模块1040用于根据故障注入点在目标对象的预设应用代码中插入插桩代码,得到更改后应用代码。在一实施例中,代码插入模块1040例如可以用于执行前文描述的操作S340,在此不再赘述。
代码运行模块1050用于运行更改后应用代码,以模拟待模拟故障。在一实施例中,代码运行模块1050例如可以用于执行前文描述的操作S350,在此不再赘述。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
本公开还提供了一种模拟故障的系统,该系统包括通信连接的控制故障模拟的装置和模拟故障的装置。其中,控制故障模拟的装置与前文图9描述的结构类似,模拟故障的装置与前文图10描述的结构类似,在此不再赘述。
图11示意性示出了根据本公开实施例的适于实现控制故障模拟或模拟故障的电子设备的方框图。
如图11所示,根据本公开实施例的电子设备1100包括处理器1101,其可以根据存储在只读存储器(ROM)1102中的程序或者从存储部分1108加载到随机访问存储器(RAM)1103中的程序而执行各种适当的动作和处理。处理器1101例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器1101还可以包括用于缓存用途的板载存储器。处理器1101可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1103中,存储有电子设备1100操作所需的各种程序和数据。处理器1101、ROM 1102以及RAM 1103通过总线1104彼此相连。处理器1101通过执行ROM 1102和/或RAM1103中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM1102和RAM 1103以外的一个或多个存储器中。处理器1101也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1100还可以包括输入/输出(I/O)接口1105,输入/输出(I/O)接口1105也连接至总线1104。电子设备1100还可以包括连接至I/O接口1105的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至I/O接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1102和/或RAM 1103和/或ROM 1102和RAM 1103以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的物品推荐方法。
在该计算机程序被处理器1101执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1109被下载和安装,和/或从可拆卸介质1111被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被处理器1101执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (13)

1.一种控制故障模拟的方法,包括:
获取响应于输入操作获得的故障模拟信息,所述故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息,所述待模拟故障的属性信息包括待模拟故障的故障类型和待模拟故障所针对的函数;
根据所述故障模拟信息,生成故障模拟报文;以及
向所述目标对象发送所述故障模拟报文,以使所述目标对象根据所述故障模拟报文更改所述目标对象中的预设应用代码,以模拟所述待模拟故障,根据所述待模拟故障的属性信息,确定故障注入点和插桩代码,其中:
确定预设应用代码中所述待模拟故障所针对的函数的第一定义代码;
确定所述第一定义代码的起始位置为所述故障注入点;以及
根据故障类型与故障函数之间的预设映射关系,确定与所述待模拟故障的故障类型具有映射关系的故障函数的第二定义代码,作为所述插桩代码。
2.根据权利要求1所述的方法,还包括:
接收所述目标对象模拟所述待模拟故障后发送的故障执行信息,所述故障执行信息用于指示所述待模拟故障是否被执行;以及
根据所述故障执行信息,确定针对所述故障模拟信息的展示信息。
3.根据权利要求2所述的方法,其中,所述故障模拟信息还包括所述待模拟故障的发起对象;所述根据所述故障执行信息,确定针对所述故障模拟信息的展示信息包括:
确定所述故障执行信息与所述发起对象之间的关联关系;
在所述故障执行信息指示所述待模拟故障被执行的情况下,确定针对所述故障模拟信息的展示信息包括所述故障执行信息和所述关联关系;以及
在所述故障执行信息指示所述待模拟故障未被执行的情况下,确针对所述故障模拟信息的展示信息包括所述故障执行信息、所述关联关系和预设告警信息。
4.一种模拟故障的方法,包括:
接收根据故障模拟信息生成的故障模拟报文,所述故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息;
识别所述故障模拟报文,以得到待模拟故障的属性信息,所述待模拟故障的属性信息包括待模拟故障的故障类型和待模拟故障所针对的函数;
根据所述待模拟故障的属性信息,确定故障注入点和插桩代码,其中:
确定预设应用代码中所述待模拟故障所针对的函数的第一定义代码;
确定所述第一定义代码的起始位置为所述故障注入点;以及
根据故障类型与故障函数之间的预设映射关系,确定与所述待模拟故障的故障类型具有映射关系的故障函数的第二定义代码,作为所述插桩代码;
根据所述故障注入点在所述目标对象的预设应用代码中插入所述插桩代码,得到更改后应用代码;以及
运行所述更改后应用代码,以模拟所述待模拟故障。
5.根据权利要求4所述的方法,其中,所述根据所述故障注入点在所述目标对象的预设应用代码中插入所述插桩代码,得到更改后应用代码包括:
根据所述故障注入点在所述目标对象中的预设应用代码中插入所述插桩代码;以及
在所述插桩代码的起始位置和/或终止位置插入监控插桩代码是否被运行的预设监控代码,得到更改后应用代码。
6.根据权利要求5所述的方法,还包括:
采集运行所述更改后应用代码时运行所述监控代码的反馈信息;
根据所述反馈信息确定所述待模拟故障的故障执行信息;以及
向发送所述故障模拟报文的终端发送所述故障执行信息。
7.根据权利要求4~6中任一项所述的方法,还包括在运行所述更改后应用代码之后:
删除所述更改后应用代码中插入的所述插桩代码。
8.一种模拟故障的方法,包括:
获取响应于输入操作获得的故障模拟信息,所述故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息,所述待模拟故障的属性信息包括待模拟故障的故障类型和待模拟故障所针对的函数;
根据所述待模拟故障的属性信息,确定故障注入点和插桩代码,其中:
确定预设应用代码中所述待模拟故障所针对的函数的第一定义代码;
确定所述第一定义代码的起始位置为所述故障注入点;以及
根据故障类型与故障函数之间的预设映射关系,确定与所述待模拟故障的故障类型具有映射关系的故障函数的第二定义代码,作为所述插桩代码;
根据所述故障注入点在所述目标对象的预设应用代码中插入所述插桩代码,得到更改后应用代码;以及
运行所述更改后应用代码,以模拟所述待模拟故障。
9.一种控制故障模拟的装置,包括:
模拟信息获取模块,用于获取响应于输入操作获得的故障模拟信息,所述故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息;
报文生成模块,用于根据所述故障模拟信息,生成故障模拟报文;以及
报文发送模块,用于向所述目标对象发送所述故障模拟报文,以使所述目标对象根据所述故障模拟报文更改所述目标对象的预设应用代码,以模拟所述待模拟故障。
10.一种模拟故障的装置,包括:
报文接收模块,用于接收根据故障模拟信息生成的故障模拟报文,所述故障模拟信息包括待模拟故障针对的目标对象的属性信息和待模拟故障的属性信息;
报文识别模块,用于识别所述故障模拟报文,以得到待模拟故障的属性信息,所述待模拟故障的属性信息包括待模拟故障的故障类型和待模拟故障所针对的函数;
代码确定模块,用于根据所述待模拟故障的属性信息,确定故障注入点和插桩代码,其中:
确定预设应用代码中所述待模拟故障所针对的函数的第一定义代码;
确定所述第一定义代码的起始位置为所述故障注入点;以及
根据故障类型与故障函数之间的预设映射关系,确定与所述待模拟故障的故障类型具有映射关系的故障函数的第二定义代码,作为所述插桩代码;
代码插入模块,用于根据所述故障注入点在所述目标对象的预设应用代码中插入所述插桩代码,得到更改后应用代码;以及
代码运行模块,用于运行所述更改后应用代码,以模拟所述待模拟故障。
11.一种模拟故障的系统,包括:
根据权利要求9所述的控制故障模拟的装置;以及
根据权利要求10所述的模拟故障的装置。
12.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~3中任一项所述的方法,或者权利要求4~7中任一项所述的方法。
13.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~3中任一项所述的方法,或者权利要求4~7中任一项所述的方法。
CN202011642813.2A 2020-12-30 2020-12-30 控制故障模拟和模拟故障的方法、系统、介质和产品 Active CN112769609B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011642813.2A CN112769609B (zh) 2020-12-30 2020-12-30 控制故障模拟和模拟故障的方法、系统、介质和产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011642813.2A CN112769609B (zh) 2020-12-30 2020-12-30 控制故障模拟和模拟故障的方法、系统、介质和产品

Publications (2)

Publication Number Publication Date
CN112769609A CN112769609A (zh) 2021-05-07
CN112769609B true CN112769609B (zh) 2023-04-07

Family

ID=75698681

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011642813.2A Active CN112769609B (zh) 2020-12-30 2020-12-30 控制故障模拟和模拟故障的方法、系统、介质和产品

Country Status (1)

Country Link
CN (1) CN112769609B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114490294A (zh) * 2021-11-10 2022-05-13 统信软件技术有限公司 一种应用软件的系统性能测试方法、装置与计算设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108683553A (zh) * 2018-03-30 2018-10-19 北京华为数字技术有限公司 故障注入的方法和装置
CN110489245A (zh) * 2019-08-07 2019-11-22 上海微小卫星工程中心 基于远程过程调用rpc的故障注入方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108683553A (zh) * 2018-03-30 2018-10-19 北京华为数字技术有限公司 故障注入的方法和装置
CN110489245A (zh) * 2019-08-07 2019-11-22 上海微小卫星工程中心 基于远程过程调用rpc的故障注入方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于故障注入的信息系统安全性缺陷验证技术研究;王婷婷等;《警察技术》;20080707(第04期);第20-23页 *
面向通信协议故障的分布式软件可靠性测试技术研究;房友园等;《计算机科学》;20120715;第39卷(第07期);全文 *

Also Published As

Publication number Publication date
CN112769609A (zh) 2021-05-07

Similar Documents

Publication Publication Date Title
CN109302522B (zh) 测试方法、装置以及计算机系统和介质
AU2017258963B2 (en) Simultaneous multi-platform testing
US8306805B2 (en) Scenario generation method and scenario generation apparatus
US8893089B2 (en) Fast business process test case composition
US7861120B2 (en) Method and apparatus for runtime error handling
US8660833B2 (en) Method, computer program product and apparatus for providing an interactive network simulator
US9886369B2 (en) Dynamic data fabrication for database applications
US8510603B2 (en) Systems and methods providing an exception buffer to facilitate processing of event handler errors
WO2018184361A1 (zh) 应用程序测试方法、服务器、终端和存储介质
WO2019214109A1 (zh) 测试过程的监控装置、方法及计算机可读存储介质
WO2020096665A2 (en) System error detection
EP3333712A2 (en) Simultaneous multi-platform testing
CN112860556B (zh) 覆盖率统计方法、装置、计算机系统和可读存储介质
TW201626280A (zh) 決定受測應用程式安全活動之技術
CN111797020A (zh) 基于动态字节码的mock数据方法及装置
US11169910B2 (en) Probabilistic software testing via dynamic graphs
CN112769609B (zh) 控制故障模拟和模拟故障的方法、系统、介质和产品
US8635178B2 (en) Rule-based processing in different layers
CN113362173A (zh) 防重机制验证方法、验证系统、电子设备及存储介质
CN113535567A (zh) 软件测试方法、装置、设备和介质
US9104573B1 (en) Providing relevant diagnostic information using ontology rules
CN111858377A (zh) 测试脚本的质量评价方法、装置、电子设备及存储介质
US9354962B1 (en) Memory dump file collection and analysis using analysis server and cloud knowledge base
CN115203178A (zh) 数据质检方法、装置、电子设备及存储介质
US10977210B2 (en) Methods for implementing an administration and testing tool

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