CN112965896A - 基于动态字节码的测试环境故障检测方法及装置 - Google Patents
基于动态字节码的测试环境故障检测方法及装置 Download PDFInfo
- Publication number
- CN112965896A CN112965896A CN202110184005.4A CN202110184005A CN112965896A CN 112965896 A CN112965896 A CN 112965896A CN 202110184005 A CN202110184005 A CN 202110184005A CN 112965896 A CN112965896 A CN 112965896A
- Authority
- CN
- China
- Prior art keywords
- application
- environment
- file
- fault detection
- test environment
- 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
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 190
- 238000001514 detection method Methods 0.000 title claims abstract description 63
- 238000000034 method Methods 0.000 claims abstract description 84
- 230000007613 environmental effect Effects 0.000 claims abstract description 60
- 239000000523 sample Substances 0.000 claims abstract description 59
- 230000006870 function Effects 0.000 claims description 90
- 230000008439 repair process Effects 0.000 claims description 75
- 238000011084 recovery Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 16
- 238000003860 storage Methods 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 10
- 238000004140 cleaning Methods 0.000 claims description 8
- 238000002360 preparation method Methods 0.000 claims description 8
- 238000007689 inspection Methods 0.000 abstract description 20
- 238000005516 engineering process Methods 0.000 abstract description 19
- 230000004048 modification Effects 0.000 abstract description 8
- 238000012986 modification Methods 0.000 abstract description 8
- 230000008569 process Effects 0.000 description 24
- 230000003993 interaction Effects 0.000 description 16
- 239000003795 chemical substances by application Substances 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 13
- 238000012423 maintenance Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 238000002347 injection Methods 0.000 description 6
- 239000007924 injection Substances 0.000 description 6
- 238000011144 upstream manufacturing Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000013522 software testing Methods 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000005067 remediation Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000009960 carding Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供的一种基于动态字节码的测试环境故障检测方法及装置,可用于数据安全技术领域,方法包括:在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。本发明通过采用字节码技术,可不需要涉及源代码的修改,对源代码无感式插入,不需要修改源代码。同时效率高效,实时通知,实时修复,方便检查与恢复。
Description
技术领域
本申请涉及数据安全领域,可用于人工智能领域,具体涉及一种基于动态字节码的测试环境故障检测方法及装置。
背景技术
一个大型的软件系统,通常由多个子系统中构成,各个系统之间通常由网络层面的数据通信进行交互。在软件测试领域,测试环境的稳定性一直是一个痛点问题。由于受到成本的限制,通常的做法一般是软件的一个版本有一套测试环境,所有团队共同使用该测试环境进行测试。但是,使用该方案会导致以下几个问题。
1.故障定位难,如今一个业务操作涉及到的后台服务过于复杂。例如一个简单转账业务,涉及到的后台服务可能包括十几个甚至数十个系统之间的交互,而这几个系统由不同的团队去维护。一旦出现问题,那么最坏的情况下,需要十几个团队一同查看问题,进行维护。
2.链路复杂,梳理困难,一个成熟的软件系统往往不是一个单机程序,而是由多个模块以及多个上下游依赖组成,各个模块及上下游软件之间通过HTTP请求,RPC请求,socket长连接等进行交互,构成了一个错综复杂的交易链路,梳理往往比较困难。
3.定位故障后修复成本过于大。测试人员不同于运维人员,对于应用中的各种逻辑可能了然于心,但是对于各种主机,Linux环境,数据库环境等可能并不是十分了解。当发现测试环境发生故障时,可能完全对其不知从何入手,只能等待运维或者开发人员对其进行修复,这其中的成本,将大大影响测试进度,导致测试进度滞后。
发明内容
如上述描述可以得知,目前测试环境测试时存在故障定位难,链路复杂,梳理困难,定位故障后修复成本过于大等问题,为解决以上问题,本发明提供了一种基于动态字节码的测试环境故障检测方法、装置、电子设备及存储介质。具体构思为:基于字节码技术,在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。本发明通过在网络请求发送之前开启,进而截获在网络交互过程中产生调用日志,部署便捷,多种部署方式,可采用java的attach模式以及agent方式启动,同时效率高效,实时通知,实时修复,方便检查与恢复。
为解决上述技术问题,本申请提供以下技术方案:
第一方面,本发明提供一种基于动态字节码的测试环境故障检测方法,包括:
在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;
解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。
在优选的实施例中,将至少一个探针注入至所述被测应用的步骤包括:
将被测应用编译为第一类文件,将检测代码编译为第二类文件;
将所述第一类文件的加载请求发送至第一子类加载器,第二类文件的加载请求发送至第二子类加载器,以使所述第一子类加载器和第二子类加载器对应地将所述第一类文件和所述第二类文件委派至顶层的父类加载器进行加载;
当监测到所述第一类文件被加载时,拦截并获取所述第一类文件的代码,将所述第二类文件的代码注入到第一类文件的代码中,重新编译形成合并类文件。
在优选的实施例中,还包括:
根据所述错误码调用对应的环境功能修复工具,对所述环境功能进行修复。
在优选的实施例中,所述错误码为msg字段。
在优选的实施例中,所述解析所述调用日志,包括:
利用hadoop对所述调用日志进行分析,得到解析结果。
在优选的实施例中,所述对所述环境功能进行修复的步骤包括如下步骤的至少一个:
对服务器接口进行修复;
对服务器功能进行重启;
对应用程序配置文件进行修复;
对数据库进行数据准备、数据清洗以及数据恢复。
在优选的实施例中,所述对所述环境功能进行修复具体包括:采用HTTP接口的形式对所述应用提供修复功能。
第二方面,本发明实施例提供一种基于动态字节码的测试环境故障检测装置,包括:
调用日志产生模块,在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;
故障检测模块,解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。
在优选的实施例中,将至少一个探针注入至所述被测应用的步骤包括:
将被测应用编译为第一类文件,将检测代码编译为第二类文件;
将所述第一类文件的加载请求发送至第一子类加载器,第二类文件的加载请求发送至第二子类加载器,以使所述第一子类加载器和第二子类加载器对应地将所述第一类文件和所述第二类文件委派至顶层的父类加载器进行加载;
当监测到所述第一类文件被加载时,拦截并获取所述第一类文件的代码,将所述第二类文件的代码注入到第一类文件的代码中,重新编译形成合并类文件。
在优选的实施例中,还包括:
修复模块,根据所述错误码调用对应的环境功能修复工具,对所述环境功能进行修复。
在优选的实施例中,所述错误码为msg字段。
在优选的实施例中,所述故障检测模块具体用于利用hadoop对所述调用日志进行分析,得到解析结果。
在优选的实施例中,所述修复模块用于进行下述步骤的至少一个:
对服务器接口进行修复;
对服务器功能进行重启;
对应用程序配置文件进行修复;
对数据库进行数据准备、数据清洗以及数据恢复。
在优选的实施例中,所述对所述环境功能进行修复具体包括:采用HTTP接口的形式对所述应用提供修复功能。
第三方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的测试环境故障检测方法。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的测试环境故障检测方法。
由上述技术方案可知,本申请提供的一种基于动态字节码的测试环境故障检测方法及装置,方法包括:在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。本发明通过采用字节码技术,可不需要涉及源代码的修改,对源代码无感式插入,不需要修改源代码。通过在网络请求发送之前开启,进而截获在网络交互过程中产生调用日志,部署便捷,多种部署方式,可采用java的attach模式以及agent方式启动,同时效率高效,实时通知,实时修复,方便检查与恢复。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例中一种基于动态字节码的测试环境故障检测方法中日志解析过程示意图。
图2是本申请实施例中一种基于动态字节码的测试环境故障检测方法中环境功能修复流程示意图之一。
图3是本申请实施例中一种基于动态字节码的测试环境故障检测方法中环境功能修复流程示意图之二。
图4是本申请实施例中一种基于动态字节码的测试环境故障检测方法中的交互流程示意图。
图5是本申请实施例中一种基于动态字节码的测试环境故障修复具体流程示意图。
图6是本申请实施例中一种基于动态字节码的测试环境故障检测方法的流程示意图。
图7是本申请实施例中一种基于动态字节码的测试环境故障检测装置的结构示意图。
图8是本申请实施例中的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请公开的一种基于动态字节码的测试环境故障检测方法及装置可用于数据安全技术领域,也可用于除数据安全领域之外的任意领域,本申请公开的一种基于动态字节码的测试环境故障检测方法及装置的应用领域不做限定。
对于环境测试而言,一个大型的软件系统,通常由多个子系统中构成,各个系统之间通常由网络层面的数据通信进行交互。在软件测试领域,测试环境的稳定性一直是一个痛点问题。由于受到成本的限制,通常的做法一般是软件的一个版本有一套测试环境,所有团队共同使用该测试环境进行测试。但是,使用该方案会导致以下几个问题。1、故障定位难,如今一个业务操作涉及到的后台服务过于复杂。例如一个简单转账业务,涉及到的后台服务可能包括十几个甚至数十个系统之间的交互,而这几个系统由不同的团队去维护。一旦出现问题,那么最坏的情况下,需要十几个团队一同查看问题,进行维护。2.链路复杂,梳理困难,一个成熟的软件系统往往不是一个单机程序,而是由多个模块以及多个上下游依赖组成,各个模块及上下游软件之间通过HTTP请求,RPC请求,socket长连接等进行交互,构成了一个错综复杂的交易链路,梳理往往比较困难。3.定位故障后修复成本过于大。测试人员不同于运维人员,对于应用中的各种逻辑可能了然于心,但是对于各种主机,Linux环境,数据库环境等可能并不是十分了解。当发现测试环境发生故障时,可能完全对其不知从何入手,只能等待运维或者开发人员对其进行修复,这其中的成本,将大大影响测试进度,导致测试进度滞后。
基于此,本发明提供了一种基于动态字节码的测试环境故障检测方法、装置、电子设备及存储介质。具体构思为:基于字节码技术,在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。本发明通过在网络请求发送之前开启,进而截获在网络交互过程中产生调用日志,部署便捷,多种部署方式,可采用java的attach模式以及agent方式启动,同时效率高效,实时通知,实时修复,方便检查与恢复。
基于上述内容,具体的,本申请首先提供一种用于实现本申请一个或多个实施例中提供的测试环境故障检测装置,该测试环境故障检测装置可以与测试人员的终端设备之间通信连接,所述终端设备可以设有多个,测试环境故障检测装置具体可以通过应用服务器访问所述终端设备。
其中,所述测试环境故障检测装置可以自测试人员的终端设备接收测试环境故障检测指令,并自该测试环境故障检测指令中在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;并解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障,所述终端设备为一搭载分析程序的设备,所述终端设备根据测试环境故障检测装置提供的解析出的日志,对故障进行分类或展示。
可以理解的是,测试人员的所述终端设备可以包括智能手机、平板电子设备、便携式计算机、台式电脑、个人数字助理(PDA)。
上述的测试人员终端设备可以具有通信模块(即通信单元),可以与远程的测试环境故障检测装置进行通信连接,实现解析出的日志的数据传输。所述测试环境故障检测装置与所述终端设备之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。所述网络协议例如可以包括TCP/IP协议、UDP/IP协议、HTTP协议、HTTPS协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的RPC协议(RemoteProcedure Call Protocol,远程过程调用协议)、REST协议(Representational StateTransfer,表述性状态转移协议)等。
本申请提供的一种基于动态字节码的测试环境故障检测方法、装置、电子设备和计算机可读存储介质,通过在网络请求发送之前开启,进而截获在网络交互过程中产生调用日志,部署便捷,多种部署方式,可采用java的attach模式以及agent方式启动,同时效率高效,实时通知,实时修复,方便检查与恢复。
具体通过下述多个实施例及应用实例分别进行说明。
对于环境测试而言,一个大型的软件系统,通常由多个子系统中构成,各个系统之间通常由网络层面的数据通信进行交互。在软件测试领域,测试环境的稳定性一直是一个痛点问题。由于受到成本的限制,通常的做法一般是软件的一个版本有一套测试环境,所有团队共同使用该测试环境进行测试。但是,使用该方案会导致以下几个问题。1、故障定位难,如今一个业务操作涉及到的后台服务过于复杂。例如一个简单转账业务,涉及到的后台服务可能包括十几个甚至数十个系统之间的交互,而这几个系统由不同的团队去维护。一旦出现问题,那么最坏的情况下,需要十几个团队一同查看问题,进行维护。2.链路复杂,梳理困难,一个成熟的软件系统往往不是一个单机程序,而是由多个模块以及多个上下游依赖组成,各个模块及上下游软件之间通过HTTP请求,RPC请求,socket长连接等进行交互,构成了一个错综复杂的交易链路,梳理往往比较困难。3.定位故障后修复成本过于大。测试人员不同于运维人员,对于应用中的各种逻辑可能了然于心,但是对于各种主机,Linux环境,数据库环境等可能并不是十分了解。当发现测试环境发生故障时,可能完全对其不知从何入手,只能等待运维或者开发人员对其进行修复,这其中的成本,将大大影响测试进度,导致测试进度滞后。为了解决这一问题,第一方面,本申请提供一种基于动态字节码的测试环境故障检测方法,参见图6,包括:
步骤100:在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;
可以理解的是,字节码(Byte-code)是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,是一种中间码。字节码的核心在于利用规范中的规则去解析这些代码,可以得出关于这个类的全部信息,包括:
1.这个类的版本号;
2.这个类的常量池大小,以及常量池中的常量;
3.这个类的访问权限;
4.这个类的全限定名、直接父类全限定名、类的直接实现的接口信息;
5.这个类的类变量和实例变量的信息;
6.这个类的方法信息;
7.其它的这个类的附加信息,如来自哪个源文件等。
具体的,在步骤100中,探针是在被测应用启动之后被注入的,例如当被测应用启动并初始化时,响应于被测应用发送的一数据信号,或者被测应用内部执行的一操作请求,则判定被测应用启动,然后基于字节码技术将代码注入至被测应用。
举例而言,有关本发明的字节码注入过程可以将Java方法分解为执行前(Before),返回(Return)以及抛出异常(Throws)三个环节(如下伪代码所示),由此在三个环节上引申出对应环节的事件探测和流程控制。基于执行前(Before),返回(Return)以及抛出异常(Throws)三个环节事件分离,此技术可以完成如下功能。
感知方法调用参数的变化以及改变入参。
感知方法的返回值,抛出的异常以及返回值。
改变方法执行的流程。
在被测应用启动后,会对程序进行注入探针,给每次网络请求发送前注入探针(即在报文中添加traceId),利用该探针id,实现对各个环境之间的交互进跟踪,并且将生成日志。其中,伪代码如下:
日志的基本数据结构如表1所示:
表1
步骤200:解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。
具体而言,本步骤主要负责解析各个测试环境中产生的调用日志,并且为了实时性,将全量日志保存在分布式文件系统(HDSF)以及实时日志保存在HBase中,以便查询。对于全量日志,为了后续找寻问题以及修复环境,有以下两步操作:①.将日志存入HDSF。②.利用hadoop进行分析,并且将分析结果存入HBase,以便后续汇总指标。详细流程见图1。对于实时结果,进行如下两步操作:①.将实时计算后的结果存入Hbase中。②.如果出现环境问题,那么根据问题调用环境修复模块。
从上述描述可知,本申请提供的一种基于动态字节码的测试环境故障检测方法,方法包括:在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。本发明通过采用字节码技术,可不需要涉及源代码的修改,对源代码无感式插入,不需要修改源代码。通过在网络请求发送之前开启,进而截获在网络交互过程中产生调用日志,部署便捷,多种部署方式,可采用java的attach模式以及agent方式启动,同时效率高效,实时通知,实时修复,方便检查与恢复。
在一些具体实施例中,将至少一个探针注入至所述被测应用的步骤包括:
将被测应用编译为第一类文件,将检测代码编译为第二类文件;
将所述第一类文件的加载请求发送至第一子类加载器,第二类文件的加载请求发送至第二子类加载器,以使所述第一子类加载器和第二子类加载器对应地将所述第一类文件和所述第二类文件委派至顶层的父类加载器进行加载;
当监测到所述第一类文件被加载时,拦截并获取所述第一类文件的代码,将所述第二类文件的代码注入到第一类文件的代码中,重新编译形成合并类文件。
上述实施例是基于字节码技术进行,可以理解,本发明的上述步骤无需修改原始被测应用的代码,仅仅是做合并式整合,因此对程序而言是无感的。
为了进一步修复环境故障,在本申请提供一种基于动态字节码的测试环境故障检测方法的一个实施例中,提供一种测试环境故障检测方法的优选方式,所述测试环境故障检测方法还包括:
步骤300:根据所述错误码调用对应的环境功能修复工具,对所述环境功能进行修复。
具体的,所述错误码为msg字段。所述解析所述调用日志,包括:利用hadoop对所述调用日志进行分析,得到解析结果。
为了对各环境功能进行修复,所述对所述环境功能进行修复的步骤包括如下步骤的至少一个:
对服务器接口进行修复;
对服务器功能进行重启;
对应用程序配置文件进行修复;
对数据库进行数据准备、数据清洗以及数据恢复。
此外,所述对所述环境功能进行修复具体包括:采用HTTP接口的形式对所述应用提供修复功能。
可以理解的是,日志中出现错误码时,结合日志的具体报错信息(msg字段),分析对应报错原因,调用相应环境中的环境修复功能对其修复,修复包括服务器接口修复,服务器功能重启,应用程序配置文件修复,数据库数据准备,数据库数据清洗,数据库数据恢复等,所以修复功能可以采用HTTP接口的形式对外提供调用方法,接口参数定义如表2所示。
表2
如果修复失败,则将相应的调用链路和环境问题通知到环境维护人员以及对应开发人员或者测试人员进行手工修复,详细流程见图2。
上述实施例对产生一笔实际的业务链路的时候才会产生的相应的一系列操作,但是为了环境的稳定,而不是发生问题之后才去进行修复,可以对各个环境进行批量定时检查。
该实施例中,根据预先设置好的检查点,对各个测试子环境进行环境检查,检查点全部采用HTTP接口的方式,如果发现不可用,则调用环境修复模块对其进行修复。针对环境修复,现有两种处理方法。1.环境维护人员根据环境检查的对应环境报错,根据特定的报错编号,如环境修复模块3中的接口定义表格中的Code字段,编写对应的环境修复功能模块代码,而后修复模块检测到指定的报错编号后,自动运行相应的程序。2.针对系统级别的错误,尝试重启对应系统,例如tomcat异常,nginx异常,则先进行修复对应容器,如果无法修复,尝试重启对应的服务。具体流程如图3。
更具体的,本发明还可进行不同等级的告警,将不同的报警进行了分级,提供了三种级别的告警定义:一、Disaster(灾难级):触发后需要立即处理,如不处理会直接影响生产系统的告警。二、Warning(警告级):触发后需要尽快处理,短期不处理不会直接影响系统。三、Info(信息级):提示性的告警。不同的报警会对应不同的策略。Disaster级别告警会立即发送给IT负责人和系统环境管理员,Warning告警只会发给系统环境管理员,Info级别的不会发送告警,但会在监控大屏上展现。对于告警的呈现方式,主要有邮件、短信和监控大屏等几种,多渠道确保的告警不会被遗漏。同时也会对报警内容进行精细化的定制,包含报警状态,具体的问题,出现问题的服务器和IP,问题具体的值等信息。
在本发明的一个场景中,图4,图5分别是本装置两大功能的整体工作流程和数据流向,具体分为1.根据链路实现环境修复功能和2.批量功能。
其中1共分为3个阶段:
阶段S1:启动被测应用系统阶段,该阶段中实现代理模块启动,探针注入等操作,具体如下:
步骤S101:测试人员启动测试环境中相应的应用。
步骤S102:在被测环境中的被测应用启动时,注入模块java agent或者attach模式一同启动。
步骤S103:注入模块在程序中添加探针程序。
步骤S104:该环境中的应用发生具体网络请求时,探针开始记录日志,并且调用日志模块。
阶段S2:日志模块从应用服务器上拿到对应的日志,并且进行分析。
阶段S201:日志模块获取S103中产生的全量日志,将其存入HDFS,并且利用探针标记进行数据分析,将分析后的结果存入Hbase中。
阶段S202:日志模块将S103中产生的实时结果进行分析存入hadoop中。
阶段S3:环境修复模块对结果进行分析。
阶段S301:利用S202存入在hadoop中的结果进行环境分析,如果环境产生错误问题,则进行修复工作。
阶段S302:调用对应测试环境中的修复环境功能。
阶段S303:如果修复失败,则通知手工进行修复。
2.批量功能则分为1个阶段。
阶段S1:环境检查与修复阶段。
阶段S101:根据提前定义好的各个环境的检查功能,批量模块会定时去调用对应应用服务器上的检查接口或者对应部署应用的一次业务测试。
阶段S102:根据S101中的结果,对产生错误的环境,调用环境恢复模块中的对应功能进行修复,如果修复失败,则将相应的调用链路和环境问题通知到环境维护人员以及对其开发人员或者测试人员进行手工修复。
从上述描述可知,本申请提供的一种基于动态字节码的测试环境故障检测方法,方法包括:在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。本发明通过采用字节码技术,可不需要涉及源代码的修改,对源代码无感式插入,不需要修改源代码。通过在网络请求发送之前开启,进而截获在网络交互过程中产生调用日志,部署便捷,多种部署方式,可采用java的attach模式以及agent方式启动,同时效率高效,实时通知,实时修复,方便检查与恢复。
第二方面,本申请提供一种基于动态字节码的测试环境故障检测装置,参见图7,所述测试环境故障检测装置包括:
调用日志产生模块01,在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;
可以理解的是,字节码(Byte-code)是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,是一种中间码。字节码的核心在于利用规范中的规则去解析这些代码,可以得出关于这个类的全部信息,包括:
1.这个类的版本号;
2.这个类的常量池大小,以及常量池中的常量;
3.这个类的访问权限;
4.这个类的全限定名、直接父类全限定名、类的直接实现的接口信息;
5.这个类的类变量和实例变量的信息;
6.这个类的方法信息;
7.其它的这个类的附加信息,如来自哪个源文件等。
具体的,探针是在被测应用启动之后被注入的,例如当被测应用启动并初始化时,响应于被测应用发送的一数据信号,或者被测应用内部执行的一操作请求,则判定被测应用启动,然后基于字节码技术将代码注入至被测应用。
举例而言,有关本发明的字节码注入过程可以将Java方法分解为执行前(Before),返回(Return)以及抛出异常(Throws)三个环节(如下伪代码所示),由此在三个环节上引申出对应环节的事件探测和流程控制。基于执行前(Before),返回(Return)以及抛出异常(Throws)三个环节事件分离,此技术可以完成如下功能。
感知方法调用参数的变化以及改变入参。
感知方法的返回值,抛出的异常以及返回值。
改变方法执行的流程。
在被测应用启动后,会对程序进行注入探针,给每次网络请求发送前注入探针(即在报文中添加traceId),利用该探针id,实现对各个环境之间的交互进跟踪,并且将生成日志。
伪代码如下:
日志的基本数据结构如表3所示。
表3
故障检测模块02,解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。
具体而言,本步骤主要负责解析各个测试环境中产生的调用日志,并且为了实时性,将全量日志保存在分布式文件系统(HDSF)以及实时日志保存在HBase中,以便查询。对于全量日志,为了后续找寻问题以及修复环境,有以下两步操作:①.将日志存入HDSF。②.利用hadoop进行分析,并且将分析结果存入HBase,以便后续汇总指标。详细流程见图1。对于实时结果,进行如下两步操作:①.将实时计算后的结果存入Hbase中。②.如果出现环境问题,那么根据问题调用环境修复模块。
从上述描述可知,本申请提供的一种基于动态字节码的测试环境故障检测方法及装置,方法包括:在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。本发明通过采用字节码技术,可不需要涉及源代码的修改,对源代码无感式插入,不需要修改源代码。通过在网络请求发送之前开启,进而截获在网络交互过程中产生调用日志,部署便捷,多种部署方式,可采用java的attach模式以及agent方式启动,同时效率高效,实时通知,实时修复,方便检查与恢复。
在一些具体实施例中,将至少一个探针注入至所述被测应用的步骤包括:
将被测应用编译为第一类文件,将检测代码编译为第二类文件;
将所述第一类文件的加载请求发送至第一子类加载器,第二类文件的加载请求发送至第二子类加载器,以使所述第一子类加载器和第二子类加载器对应地将所述第一类文件和所述第二类文件委派至顶层的父类加载器进行加载;
当监测到所述第一类文件被加载时,拦截并获取所述第一类文件的代码,将所述第二类文件的代码注入到第一类文件的代码中,重新编译形成合并类文件。
上述实施例是基于字节码技术进行,可以理解,本发明的上述步骤无需修改原始被测应用的代码,仅仅是做合并式整合,因此对程序而言是无感的。
为了进一步修复环境故障,在本申请提供一种基于动态字节码的测试环境故障检测方法的一个实施例中,提供一种测试环境故障检测装置的优选方式,所述测试环境故障检测装置还包括:修复模块03,根据所述错误码调用对应的环境功能修复工具,对所述环境功能进行修复。
具体的,所述错误码为msg字段。所述解析所述调用日志,包括:利用hadoop对所述调用日志进行分析,得到解析结果。
为了对各环境功能进行修复,所述对所述环境功能进行修复的步骤包括如下步骤的至少一个:
对服务器接口进行修复;
对服务器功能进行重启;
对应用程序配置文件进行修复;
对数据库进行数据准备、数据清洗以及数据恢复。
此外,所述对所述环境功能进行修复具体包括:采用HTTP接口的形式对所述应用提供修复功能。
可以理解的是,日志中出现错误码时,结合日志的具体报错信息(msg字段),分析对应报错原因,调用相应环境中的环境修复功能对其修复,修复包括服务器接口修复,服务器功能重启,应用程序配置文件修复,数据库数据准备,数据库数据清洗,数据库数据恢复等,所以修复功能可以采用HTTP接口的形式对外提供调用方法,接口参数定义如表4所示。
表4
如果修复失败,则将相应的调用链路和环境问题通知到环境维护人员以及对应开发人员或者测试人员进行手工修复,详细流程见图2。
上述实施例对产生一笔实际的业务链路的时候才会产生的相应的一系列操作,但是为了环境的稳定,而不是发生问题之后才去进行修复,可以对各个环境进行批量定时检查。
该实施例中,根据预先设置好的检查点,对各个测试子环境进行环境检查,检查点全部采用HTTP接口的方式,如果发现不可用,则调用环境修复模块对其进行修复。针对环境修复,现有两种处理方法。1.环境维护人员根据环境检查的对应环境报错,根据特定的报错编号,如环境修复模块3中的接口定义表格中的Code字段,编写对应的环境修复功能模块代码,而后修复模块检测到指定的报错编号后,自动运行相应的程序。2.针对系统级别的错误,尝试重启对应系统,例如tomcat异常,nginx异常,则先进行修复对应容器,如果无法修复,尝试重启对应的服务。具体流程如图3。
更具体的,本发明还可进行不同等级的告警,将不同的报警进行了分级,提供了三种级别的告警定义:一、Disaster(灾难级):触发后需要立即处理,如不处理会直接影响生产系统的告警。二、Warning(警告级):触发后需要尽快处理,短期不处理不会直接影响系统。三、Info(信息级):提示性的告警。不同的报警会对应不同的策略。Disaster级别告警会立即发送给IT负责人和系统环境管理员,Warning告警只会发给系统环境管理员,Info级别的不会发送告警,但会在监控大屏上展现。对于告警的呈现方式,主要有邮件、短信和监控大屏等几种,多渠道确保的告警不会被遗漏。同时也会对报警内容进行精细化的定制,包含报警状态,具体的问题,出现问题的服务器和IP,问题具体的值等信息。
在本发明的一个场景中,图4,图5分别是本装置两大功能的整体工作流程和数据流向,具体分为1.根据链路实现环境修复功能和2.批量功能,
其中1共分为3个阶段
阶段S1:启动被测应用系统阶段,该阶段中实现代理模块启动,探针注入等操作,具体如下:
步骤S101:测试人员启动测试环境中相应的应用。
步骤S102:在被测环境中的被测应用启动时,注入模块java agent或者attach模式一同启动
步骤S103:注入模块在程序中添加探针程序
步骤S104:该环境中的应用发生具体网络请求时,探针开始记录日志,并且调用日志模块。
阶段S2:日志模块从应用服务器上拿到对应的日志,并且进行分析。
阶段S201:日志模块获取S103中产生的全量日志,将其存入HDFS,并且利用探针标记进行数据分析,将分析后的结果存入Hbase中。
阶段S202:日志模块将S103中产生的实时结果进行分析存入hadoop中。
阶段S3:环境修复模块对结果进行分析。
阶段S301:利用S202存入在hadoop中的结果进行环境分析,如果环境产生错误问题,则进行修复工作。
阶段S302:调用对应测试环境中的修复环境功能
阶段S303:如果修复失败,则通知手工进行修复
2.批量功能则分为1个阶段
阶段S1:环境检查与修复阶段
阶段S101:根据提前定义好的各个环境的检查功能,批量模块会定时去调用对应应用服务器上的检查接口或者对应部署应用的一次业务测试。
阶段S102:根据S101中的结果,对产生错误的环境,调用环境恢复模块中的对应功能进行修复,如果修复失败,则将相应的调用链路和环境问题通知到环境维护人员以及对其开发人员或者测试人员进行手工修复。
从上述描述可知,本申请提供的一种基于动态字节码的测试环境故障检测装置,器具体用于:在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。本发明通过采用字节码技术,可不需要涉及源代码的修改,对源代码无感式插入,不需要修改源代码。通过在网络请求发送之前开启,进而截获在网络交互过程中产生调用日志,部署便捷,多种部署方式,可采用java的attach模式以及agent方式启动,同时效率高效,实时通知,实时修复,方便检查与恢复。
从硬件层面来说,目前测试环境测试时存在故障定位难,链路复杂,梳理困难,定位故障后修复成本过于大等问题,为解决以上问题。本申请提供一种用于实现所述测试环境故障检测方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内容:
图8为本申请实施例的电子设备9600的系统构成的示意框图。如图8所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图8是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
在一实施例中,测试环境故障检测功能可以被集成到中央处理器中。其中,中央处理器可以被配置为进行如下控制:
步骤100:在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;
可以理解的是,字节码(Byte-code)是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,是一种中间码。字节码的核心在于利用规范中的规则去解析这些代码,可以得出关于这个类的全部信息,包括:
1.这个类的版本号;
2.这个类的常量池大小,以及常量池中的常量;
3.这个类的访问权限;
4.这个类的全限定名、直接父类全限定名、类的直接实现的接口信息;
5.这个类的类变量和实例变量的信息;
6.这个类的方法信息;
7.其它的这个类的附加信息,如来自哪个源文件等。
具体的,在步骤100中,探针是在被测应用启动之后被注入的,例如当被测应用启动并初始化时,响应于被测应用发送的一数据信号,或者被测应用内部执行的一操作请求,则判定被测应用启动,然后基于字节码技术将代码注入至被测应用。
步骤200:解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。
具体而言,本步骤主要负责解析各个测试环境中产生的调用日志,并且为了实时性,将全量日志保存在分布式文件系统(HDSF)以及实时日志保存在HBase中,以便查询。对于全量日志,为了后续找寻问题以及修复环境,有以下两步操作:①.将日志存入HDSF。②.利用hadoop进行分析,并且将分析结果存入HBase,以便后续汇总指标。详细流程见图1。对于实时结果,进行如下两步操作:①.将实时计算后的结果存入Hbase中。②.如果出现环境问题,那么根据问题调用环境修复模块。
从上述描述可知,本申请提供的一种基于动态字节码的测试环境故障检测方法的电子设备,方法包括:在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。本发明通过采用字节码技术,可不需要涉及源代码的修改,对源代码无感式插入,不需要修改源代码。通过在网络请求发送之前开启,进而截获在网络交互过程中产生调用日志,部署便捷,多种部署方式,可采用java的attach模式以及agent方式启动,同时效率高效,实时通知,实时修复,方便检查与恢复。
如图8所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。
其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。
输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。
存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。
本申请的实施例还提供能够实现上述实施例中的测试环境故障检测方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的执行主体为服务器的测试环境故障检测方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤100:在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;
可以理解的是,字节码(Byte-code)是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,是一种中间码。字节码的核心在于利用规范中的规则去解析这些代码,可以得出关于这个类的全部信息,包括:
1.这个类的版本号;
2.这个类的常量池大小,以及常量池中的常量;
3.这个类的访问权限;
4.这个类的全限定名、直接父类全限定名、类的直接实现的接口信息;
5.这个类的类变量和实例变量的信息;
6.这个类的方法信息;
7.其它的这个类的附加信息,如来自哪个源文件等。
具体的,在步骤100中,探针是在被测应用启动之后被注入的,例如当被测应用启动并初始化时,响应于被测应用发送的一数据信号,或者被测应用内部执行的一操作请求,则判定被测应用启动,然后基于字节码技术将代码注入至被测应用。
步骤200:解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。
具体而言,本步骤主要负责解析各个测试环境中产生的调用日志,并且为了实时性,将全量日志保存在分布式文件系统(HDSF)以及实时日志保存在HBase中,以便查询。对于全量日志,为了后续找寻问题以及修复环境,有以下两步操作:①.将日志存入HDSF。②.利用hadoop进行分析,并且将分析结果存入HBase,以便后续汇总指标。详细流程见图1。对于实时结果,进行如下两步操作:①.将实时计算后的结果存入Hbase中。②.如果出现环境问题,那么根据问题调用环境修复模块。
从上述描述可知,本申请提供的一种基于动态字节码的测试环境故障检测方法的可读介质,方法包括:在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。本发明通过采用字节码技术,可不需要涉及源代码的修改,对源代码无感式插入,不需要修改源代码。通过在网络请求发送之前开启,进而截获在网络交互过程中产生调用日志,部署便捷,多种部署方式,可采用java的attach模式以及agent方式启动,同时效率高效,实时通知,实时修复,方便检查与恢复。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (16)
1.一种基于动态字节码的测试环境故障检测方法,其特征在于,包括:
在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;
解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。
2.根据权利要求1所述的测试环境故障检测方法,其特征在于,将至少一个探针注入至所述被测应用的步骤包括:
将被测应用编译为第一类文件,将检测代码编译为第二类文件;
将所述第一类文件的加载请求发送至第一子类加载器,第二类文件的加载请求发送至第二子类加载器,以使所述第一子类加载器和第二子类加载器对应地将所述第一类文件和所述第二类文件委派至顶层的父类加载器进行加载;
当监测到所述第一类文件被加载时,拦截并获取所述第一类文件的代码,将所述第二类文件的代码注入到第一类文件的代码中,重新编译形成合并类文件。
3.根据权利要求1所述的测试环境故障检测方法,其特征在于,还包括:
根据所述错误码调用对应的环境功能修复工具,对所述环境功能进行修复。
4.根据权利要求1所述的测试环境故障检测方法,其特征在于,所述错误码为msg字段。
5.根据权利要求1所述的测试环境故障检测方法,其特征在于,所述解析所述调用日志,包括:
利用hadoop对所述调用日志进行分析,得到解析结果。
6.根据权利要求3所述的测试环境故障检测方法,其特征在于,所述对所述环境功能进行修复的步骤包括如下步骤的至少一个:
对服务器接口进行修复;
对服务器功能进行重启;
对应用程序配置文件进行修复;
对数据库进行数据准备、数据清洗以及数据恢复。
7.根据权利要求3所述的测试环境故障检测方法,其特征在于,所述对所述环境功能进行修复具体包括:采用HTTP接口的形式对所述应用提供修复功能。
8.一种基于动态字节码的测试环境故障检测装置,其特征在于,包括:
调用日志产生模块,在被测应用发送网络请求之前,基于至少一个探针记录该被测应用的在测试环境中产生的调用日志;所述至少一个探针在所述被测应用启动之后注入所述被测应用;
故障检测模块,解析所述调用日志,若所述日志中包括错误码,则根据所述错误码确定对应环境功能故障;其中所述错误码与所述环境功能故障一一对应。
9.根据权利要求8所述的测试环境故障检测装置,其特征在于,将至少一个探针注入至所述被测应用的步骤包括:
将被测应用编译为第一类文件,将检测代码编译为第二类文件;
将所述第一类文件的加载请求发送至第一子类加载器,第二类文件的加载请求发送至第二子类加载器,以使所述第一子类加载器和第二子类加载器对应地将所述第一类文件和所述第二类文件委派至顶层的父类加载器进行加载;
当监测到所述第一类文件被加载时,拦截并获取所述第一类文件的代码,将所述第二类文件的代码注入到第一类文件的代码中,重新编译形成合并类文件。
10.根据权利要求8所述的测试环境故障检测装置,其特征在于,还包括:
修复模块,根据所述错误码调用对应的环境功能修复工具,对所述环境功能进行修复。
11.根据权利要求8所述的测试环境故障检测装置,其特征在于,所述错误码为msg字段。
12.根据权利要求8所述的测试环境故障检测装置,其特征在于,所述故障检测模块具体用于利用hadoop对所述调用日志进行分析,得到解析结果。
13.根据权利要求10所述的测试环境故障检测装置,其特征在于,所述修复模块用于进行下述步骤的至少一个:
对服务器接口进行修复;
对服务器功能进行重启;
对应用程序配置文件进行修复;
对数据库进行数据准备、数据清洗以及数据恢复。
14.根据权利要求10所述的测试环境故障检测装置,其特征在于,所述对所述环境功能进行修复具体包括:采用HTTP接口的形式对所述应用提供修复功能。
15.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述测试环境故障检测方法的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述测试环境故障检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110184005.4A CN112965896A (zh) | 2021-02-10 | 2021-02-10 | 基于动态字节码的测试环境故障检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110184005.4A CN112965896A (zh) | 2021-02-10 | 2021-02-10 | 基于动态字节码的测试环境故障检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112965896A true CN112965896A (zh) | 2021-06-15 |
Family
ID=76284833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110184005.4A Pending CN112965896A (zh) | 2021-02-10 | 2021-02-10 | 基于动态字节码的测试环境故障检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112965896A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360419A (zh) * | 2021-08-11 | 2021-09-07 | 云智慧(北京)科技有限公司 | 一种应用的数据处理方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795357A (zh) * | 2019-11-04 | 2020-02-14 | 中国工商银行股份有限公司 | 程序监控方法及装置 |
CN110941528A (zh) * | 2019-11-08 | 2020-03-31 | 支付宝(杭州)信息技术有限公司 | 一种基于故障的日志埋点设置方法、装置及系统 |
CN111797015A (zh) * | 2020-06-30 | 2020-10-20 | 中国工商银行股份有限公司 | 一种基于动态字节码的测试方法及装置 |
CN112181784A (zh) * | 2020-10-21 | 2021-01-05 | 中国工商银行股份有限公司 | 基于字节码注入的代码故障分析方法及系统 |
-
2021
- 2021-02-10 CN CN202110184005.4A patent/CN112965896A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795357A (zh) * | 2019-11-04 | 2020-02-14 | 中国工商银行股份有限公司 | 程序监控方法及装置 |
CN110941528A (zh) * | 2019-11-08 | 2020-03-31 | 支付宝(杭州)信息技术有限公司 | 一种基于故障的日志埋点设置方法、装置及系统 |
CN111797015A (zh) * | 2020-06-30 | 2020-10-20 | 中国工商银行股份有限公司 | 一种基于动态字节码的测试方法及装置 |
CN112181784A (zh) * | 2020-10-21 | 2021-01-05 | 中国工商银行股份有限公司 | 基于字节码注入的代码故障分析方法及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360419A (zh) * | 2021-08-11 | 2021-09-07 | 云智慧(北京)科技有限公司 | 一种应用的数据处理方法、装置及设备 |
CN113360419B (zh) * | 2021-08-11 | 2022-06-07 | 云智慧(北京)科技有限公司 | 一种应用的数据处理方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108334436B (zh) | 应用软件的优化方法、装置、设备及计算机可读存储介质 | |
US7788540B2 (en) | Tracking down elusive intermittent failures | |
US20190227917A1 (en) | Adaptive system for mobile device testing | |
US10698797B2 (en) | Mobile application program testing method, server, terminal, and storage medium | |
CN111245900B (zh) | 一种分布式消息发送的处理系统及其处理方法 | |
CN108134708B (zh) | 监控第三方接口的方法和装置 | |
CN111782525B (zh) | Java方法远程调试方法及装置 | |
CN107644075B (zh) | 收集页面信息的方法和装置 | |
US20180159724A1 (en) | Automatic task tracking | |
US10795793B1 (en) | Method and system for simulating system failures using domain-specific language constructs | |
CN111767208A (zh) | 一种自动测试方法及装置 | |
CN112463634A (zh) | 微服务架构下的软件测试方法及装置 | |
CN113557499A (zh) | 动态监控基于云的应用服务 | |
CN110795353B (zh) | 快应用的调试方法、装置、设备及存储介质 | |
CN113760611B (zh) | 系统站点切换方法、装置、电子设备及存储介质 | |
CN112965896A (zh) | 基于动态字节码的测试环境故障检测方法及装置 | |
CN114328250A (zh) | 软件系统自动自检方法、介质和装置 | |
CN112506793A (zh) | 嵌入式软件单元测试方法、系统、可读介质及电子设备 | |
CN116841902A (zh) | 健康状态检查方法、装置、设备及存储介质 | |
CN111782520A (zh) | 测试方法、装置和电子设备 | |
CN109408133B (zh) | 一种启动组件的方法和设备 | |
CN117149476A (zh) | 故障上报方法及相关装置 | |
CN111162960B (zh) | 启动调试面板的方法和服务器 | |
CN115658500A (zh) | 一种混合开发中基于vue的前端错误日志上传方法及系统 | |
CN112596750B (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 |