CN118035087A - 一种故障注入的优化方法及终端 - Google Patents

一种故障注入的优化方法及终端 Download PDF

Info

Publication number
CN118035087A
CN118035087A CN202410153540.7A CN202410153540A CN118035087A CN 118035087 A CN118035087 A CN 118035087A CN 202410153540 A CN202410153540 A CN 202410153540A CN 118035087 A CN118035087 A CN 118035087A
Authority
CN
China
Prior art keywords
code
fault injection
codes
service system
abnormal
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.)
Pending
Application number
CN202410153540.7A
Other languages
English (en)
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.)
Fujian Tianquan Educational Technology Ltd
Original Assignee
Fujian Tianquan Educational Technology Ltd
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 Fujian Tianquan Educational Technology Ltd filed Critical Fujian Tianquan Educational Technology Ltd
Priority to CN202410153540.7A priority Critical patent/CN118035087A/zh
Publication of CN118035087A publication Critical patent/CN118035087A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明公开一种故障注入的优化方法,包括步骤:根据业务系统的代码类型配置对应的异常字节码;将所述异常字节码注入匹配的业务系统内部的代码中;运行代码进行功能验收。本发明通过配置对应业务系统中的代码的异常字节码,并将异常字节码注入到业务系统内部代码中,从而验证业务系统内部代码自身能否正常捕获异常信息,从而验证业务代码的健壮性,完善代码逻辑中的异常处理。

Description

一种故障注入的优化方法及终端
技术领域
本发明涉及数据处理领域,特别涉及一种故障注入的优化方法及终端。
背景技术
目前各种服务端系统为了满足高并发,高吞吐的要求,都会采用微服务的分布式的架构,其会采用较多的服务器实例来满足这些业务要求。但是,随着创建的实例增多,各种基础组件的增多,比如mq、redis、mysql等基础组件的增多,会给系统的安全性及稳定性带来较大的影响。
为了能够进一步的测试这些组件以及实例的功能,通常业务测试人员会不间断的进行业务测试,或者使用测试工具来进行自动化的拨测,或者采用更高级别的监控系统,来进行实例以及基础组件的监控工作。其中,为了更进一步的验证系统功能,会采用混沌工程的方式,来生成特定的故障,进行整个系统的降级演练或者组件的降级。所谓的特定故障,就是直接关闭某些组件,比如redis、mysql等,或者调整网络配置等等这些外部的因素,由此来进行系统内部降级的功能,以及是否能够正常提供服务。但目前这种方法只是针对系统外部的组件进行的,系统自身业务缺陷无法通过混沌工程进行自身业务验证。
发明内容
本发明所要解决的技术问题是:提供一种故障注入的优化方法及终端,实现业务系统内部的故障生成并进行对业务系统进行功能测试。
为了解决上述技术问题,本发明采用的技术方案为:
一种故障注入的优化方法,包括步骤:
S1、根据业务系统的代码类型配置对应的异常字节码;
S2、将所述异常字节码注入匹配的业务系统内部的代码中;
S3、运行代码并进行功能验收。
为了解决上述技术问题,本发明采用的另一技术方案为:
一种故障注入的优化终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时完成以下步骤:
S1、根据业务系统的代码类型配置对应的异常字节码;
S2、将所述异常字节码注入匹配的业务系统内部的代码中;
S3、运行代码并进行功能验收。
本发明的有益效果在于:提供一种故障注入的优化方法及终端,通过配置对应业务系统中的代码的异常字节码,并将异常字节码注入到业务系统内部代码中,从而验证业务系统内部代码自身能否正常捕获异常信息,从而验证业务代码的健壮性,完善代码逻辑中的异常处理。
附图说明
图1为本发明实施例中一种故障注入的优化方法的流程图;
图2为本发明实施例中一种故障注入的优化终端的示意图;
标号说明:
1、故障注入的优化终端;2、存储器;3、处理器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图1,一种故障注入的优化方法,包括步骤:
S1、根据业务系统的代码类型配置对应的异常字节码;
S2、将所述异常字节码注入匹配的业务系统内部的代码中;
S3、运行代码并进行功能验收。
从上述描述可知,本发明的有益效果在于:通过配置对应业务系统中的代码的异常字节码,并将异常字节码注入到业务系统内部代码中,从而验证业务系统内部代码自身能否正常捕获异常信息,从而验证业务代码的健壮性,完善代码逻辑中的异常处理。
在本发明的某些实施例中,所述步骤S3具体为:
运行代码进行功能回归测试,若代码运行过程中捕获异常,则说明被测试代码健壮性良好;否则,认为被测试代码存在漏洞。
从上述描述可知,通过在原内部业务代码中注入异常字节码,若代码运行过程中识别到该种异常场景,从而抛出异常,是正常捕获到了这种异常场景而给出的提示。而代码运行过程显示未知的异常,或者未考虑到这种异常场景,从而抛出的异常,说明程序漏了这一块的异常捕获,程序不健壮,需要修改程序补充这一块的内容。
具体地,所述代码运行过程中捕获异常具体为:
代码运行过程中,业务系统搭载的服务器显示400的异常码。
从上述描述可知,代码正常捕获异常时,系统通过搭载的服务器显示400表达异常,其意义在于,由于传递参数与接收参数中有类型不一致或字段不匹配造成的,代码运行时有识别到这种异常场景,从而输出400;优选地,若代码未能正常捕获异常,则服务器显示500的异常码或其他异常码,其意义在于,传入的参数在业务处理中出现了异常,可能是由于程序出错、服务器配置问题或服务器资源不足等原因导致,即代码未能识别到这种异常,健壮性不佳。
在本发明的某些实施例中,所述步骤S2之前还包括步骤S20:
将代码类型与异常字节码的配置关系保存在集群中,并设置故障注入SDK,所述业务系统接入所述故障注入SDK;
所述步骤S2具体为:
利用所述故障注入SDK获取所述配置关系,并将所述异常字节码注入匹配的业务系统内部的代码中。
从上述描述可知,将S1中生成的配置关系保存在集群中,优选为redis集群,并设置故障注入SDK,通过故障注入SDK将配置好的异常字节码注入业务系统的内部的代码中,在不同的系统和应用中统一故障注入的方法,提高了测试的灵活性和一致性。具体举例如下:以java语言为例,配置了一个分母为0的异常代码Int a=10/0,以及一个空指针代码:Long aa=null;aa.toString(),通过管理系统匹配业务代码和异常字节码,并配置如add*()语句,表示配置add前缀内部,第一行代码注入配置的异常字节码,后续配置的信息都会同步保存至redis集群中,方便业务系统获取。集成了SDK的业务系统启动后,首先,SDK会从redis集群中获取故障的配置信息并拉取到本地缓存中,然后SDK采用对应的字节码向对应的业务代码进行注入。
请参照图2,一种故障注入的优化终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时完成一种故障注入的优化方法中的步骤。
从上述描述可知,提供一种故障注入的优化方法的执行载体,在执行上述方法时,通过配置对应业务系统中的代码的异常字节码,并将异常字节码注入到业务系统内部代码中,从而验证业务系统内部代码自身能否正常捕获异常信息,从而验证业务代码的健壮性,完善代码逻辑中的异常处理。
本发明公开一种故障注入的优化方法及终端,主要应用于业务系统内部代码健壮性的检测,下面结合实施例进行具体说明:
请参照图1,本发明的实施例一为:
一种故障注入的优化方法,包括步骤:
S1、根据业务系统的代码类型配置对应的异常字节码;
S2、将所述异常字节码注入匹配的业务系统内部的代码中;
S3、运行代码并进行功能验收。
即在本实施例中,通过配置对应业务系统中的代码的异常字节码,并将异常字节码注入到业务系统内部代码中,从而验证业务系统内部代码自身能否正常捕获异常信息,从而验证业务代码的健壮性,完善代码逻辑中的异常处理。
本发明的实施例二为:
在实施例一的基础上,所述步骤S3具体为:
运行代码进行功能回归测试,若代码运行过程中,业务系统搭载的服务器显示400的异常码,则说明被测试代码健壮性良好;否则,认为被测试代码存在漏洞。通过在原内部业务代码中注入异常字节码,若代码运行过程中识别到该种异常场景,从而抛出异常,是正常捕获到了这种异常场景而给出的提示。而代码运行过程显示未知的异常,或者未考虑到这种异常场景,从而抛出的异常,说明程序漏了这一块的异常捕获,程序不健壮,需要修改程序补充这一块的内容。
具体地,代码正常捕获异常时,系统通过搭载的服务器显示400表达异常,其意义在于,由于传递参数与接收参数中有类型不一致或字段不匹配造成的,代码运行时有识别到这种异常场景,从而输出400;优选地,若代码未能正常捕获异常,则服务器显示500的异常码或其他异常码,其意义在于,传入的参数在业务处理中出现了异常,可能是由于程序出错、服务器配置问题或服务器资源不足等原因导致,即代码未能识别到这种异常,健壮性不佳。
本发明的实施例三为:
在实施例一的基础上,所述步骤S2之前还包括步骤S20:
将代码类型与异常字节码的配置关系保存在集群中,并设置故障注入SDK,所述业务系统接入所述故障注入SDK;
所述步骤S2具体为:
利用所述故障注入SDK获取所述配置关系,并将所述异常字节码注入匹配的业务系统内部的代码中。
即在本实施例中,将S1中生成的配置关系保存在集群中,优选为redis集群,并设置故障注入SDK,通过故障注入SDK将配置好的异常字节码注入业务系统的内部的代码中,在不同的系统和应用中统一故障注入的方法,提高了测试的灵活性和一致性。具体举例如下:以java语言为例,配置了一个分母为0的异常代码Int a=10/0,以及一个空指针代码:Long aa=null;aa.toString(),通过管理系统匹配业务代码和异常字节码,并配置如add*()语句,表示配置add前缀内部,第一行代码注入配置的异常字节码,后续配置的信息都会同步保存至redis集群中,方便业务系统获取。集成了SDK的业务系统启动后,首先,SDK会从redis集群中获取故障的配置信息并拉取到本地缓存中,然后SDK采用对应的字节码向对应的业务代码进行注入。
本发明的实施例四为:
一种故障注入的优化方法实际应用如下:
1.通过故障配置的管理台配置各种对应业务代码类型的故障字节码,例如:
空指针故障,配置内容为:
Long aa=null;
aa.toString();
分母为0的故障:
Int a=10/0;
同时,管理台根据场景类型配置注入关系,比如配置add*()字节码,表示add开头的方法可以注入某种类型的故障。
2.集成故障SDK之后,会把步骤1中的各种故障信息缓存在本地内存中。假设业务代码中有这样的片段:
Public void addName(){
具体业务代码内容a
具体业务代码内容b
}
则此段代码就满足步骤1中的add*()规则,则应用启动后,故障SDK会自动注册添加故障代码,此处添加后的额结果为:
Public void addName(){
Long aa=null;
aa.toString();
具体业务代码内容a
具体业务代码内容b
}
则当程序执行至该业务内容时,会出现空指针的错误。如果有考虑捕获到该异常,则正常会抛出400错误,否则,将会抛出500这种未定义的错误,进而就能够知晓该段程序是否健壮。
请参照图2,本发明的实施例五为:
一种故障注入的优化终端1,包括存储器2、处理器3以及存储在存储器2上并可在处理器3上运行的计算机程序,处理器3执行计算机程序时完成实施例一至四中任一一种故障注入的优化方法中的步骤。
综上所述,本发明提供的一种故障注入的优化方法及终端,提供一个额外的SDK工具包集成至项目中,通过该工具包对于特定的方法或者语句,以动态添加字节码的方式来进行故障的注入,同时,可以针对不同的代码类型注入不同类型的业务异常,通过此种方式,可以来进行验证业务代码是否完善,是否已捕获正常的异常信息等,能够验证业务代码的健壮性,完善代码逻辑中的异常处理功能。
本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种故障注入的优化方法,其特征在于:包括步骤:
S1、根据业务系统的代码类型配置对应的异常字节码;
S2、将所述异常字节码注入匹配的业务系统内部的代码中;
S3、运行代码并进行功能验收。
2.根据权利要求1所述的一种故障注入的优化方法,其特征在于:所述步骤S3具体为:
运行代码进行功能回归测试,若代码运行过程中捕获异常,则说明被测试代码健壮性良好;否则,认为被测试代码存在漏洞。
3.根据权利要求2所述的一种故障注入的优化方法,其特征在于:所述代码运行过程中捕获异常具体为:
代码运行过程中,业务系统搭载的服务器显示400的异常码。
4.根据权利要求1所述的一种故障注入的优化方法,其特征在于:所述步骤S2之前还包括步骤S20:
将代码类型与异常字节码的配置关系保存在集群中,并设置故障注入SDK,所述业务系统接入所述故障注入SDK;
所述步骤S2具体为:
利用所述故障注入SDK获取所述配置关系,并将所述异常字节码注入匹配的业务系统内部的代码中。
5.根据权利要求1所述的一种故障注入的优化方法,其特征在于:所述异常字节码包括空指针代码或零分母代码中的至少一种。
6.一种故障注入的优化终端,其特征在于:包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时完成以下步骤:
S1、根据业务系统的代码类型配置对应的异常字节码;
S2、将所述异常字节码注入匹配的业务系统内部的代码中;
S3、运行代码并进行功能验收。
7.根据权利要求6所述的一种故障注入的优化终端,其特征在于:所述步骤S3具体为:
运行代码进行功能回归测试,若代码运行过程中捕获异常,则说明被测试代码健壮性良好;否则,认为被测试代码存在漏洞。
8.根据权利要求7所述的一种故障注入的优化终端,其特征在于:所述代码运行过程中捕获异常具体为:
代码运行过程中,业务系统搭载的服务器显示400的异常码。
9.根据权利要求6所述的一种故障注入的优化终端,其特征在于:所述步骤S2之前还包括步骤S20:
将代码类型与异常字节码的配置关系保存在集群中,并设置故障注入SDK,所述业务系统接入所述故障注入SDK;
所述步骤S2具体为:
利用所述故障注入SDK获取所述配置关系,并将所述异常字节码注入匹配的业务系统内部的代码中。
10.根据权利要求6所述的一种故障注入的优化终端,其特征在于:所述异常字节码包括空指针代码或零分母代码中的至少一种。
CN202410153540.7A 2024-02-02 2024-02-02 一种故障注入的优化方法及终端 Pending CN118035087A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410153540.7A CN118035087A (zh) 2024-02-02 2024-02-02 一种故障注入的优化方法及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410153540.7A CN118035087A (zh) 2024-02-02 2024-02-02 一种故障注入的优化方法及终端

Publications (1)

Publication Number Publication Date
CN118035087A true CN118035087A (zh) 2024-05-14

Family

ID=90983501

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410153540.7A Pending CN118035087A (zh) 2024-02-02 2024-02-02 一种故障注入的优化方法及终端

Country Status (1)

Country Link
CN (1) CN118035087A (zh)

Similar Documents

Publication Publication Date Title
US7165191B1 (en) Automated verification of user interface tests on low-end emulators and devices
US7882495B2 (en) Bounded program failure analysis and correction
US20120167054A1 (en) Collecting Program Runtime Information
US20060253837A1 (en) Using a call stack hash to record the state of a process
CN111897724B (zh) 一种适用于云平台的自动化测试方法及装置
US20110078798A1 (en) Remote procedure call (rpc) services fuzz attacking tool
US20200117587A1 (en) Log File Analysis
CN103049373B (zh) 一种崩溃的定位方法和装置
CN110688313B (zh) 一种VxWorks操作系统下软件测试的故障注入方法
CN110704314A (zh) 一种嵌入式软件测试的故障注入方法
US8327189B1 (en) Diagnosing an incident on a computer system using a diagnostics analyzer database
CN108009085B (zh) 渠道包测试方法
CN111782526A (zh) 一种接口测试方法、装置、电子设备及存储介质
CN110704315B (zh) 一种嵌入式软件测试的故障注入装置
CN110737985A (zh) 运行数据验证方法、装置、计算机设备和可读存储介质
US8533544B2 (en) System for tree sequence testing of a device and method for tree sequence testing of a device in a test framework architecture
CN107562565A (zh) 一种验证内存Patrol Scurb功能的方法
CN118035087A (zh) 一种故障注入的优化方法及终端
CN115934559A (zh) 表单智能测试系统的测试方法
CN113467815A (zh) 热更新的应用修复方法、装置、终端设备及存储介质
CN112597007A (zh) 一种嵌入式软件集成测试完整性分析方法
CN111950252A (zh) Http响应报文格式校验方法、装置和设备
CN111966589A (zh) 基于功能测试的bug处理方法、装置和设备
CN112527265A (zh) 一种日志自动注入的方法和计算机设备
EP2246789A1 (en) Method and system for verifying a system operation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination