CN116166521A - 一种应用测试方法、装置、电子设备及存储介质 - Google Patents
一种应用测试方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116166521A CN116166521A CN202111406399.XA CN202111406399A CN116166521A CN 116166521 A CN116166521 A CN 116166521A CN 202111406399 A CN202111406399 A CN 202111406399A CN 116166521 A CN116166521 A CN 116166521A
- Authority
- CN
- China
- Prior art keywords
- abnormal
- injection plug
- target
- application
- exception
- 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
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种应用测试方法、装置、电子设备及存储介质,该方法包括:加载与业务功能对应的若干个异常注入插件;在被测应用的启动过程中,判断被测应用中的各业务功能是否存在对应的异常注入插件;若一个目标业务功能存在对应的目标异常注入插件,则为目标业务功能注入目标异常注入插件中包含的异常模拟逻辑;异常模拟逻辑被配置为:若待响应的请求是与测试相关的请求,则进行异常模拟,否则不进行异常模拟,以测试被测应用的异常应对功能。通过在其他业务功能正常实现的情况下,测试被测应用针对某业务功能的异常应对功能,既能在正常运行环境中执行测试用例,正确地模拟异常,同时不影响其他正常用例,提高了应用测试效率。
Description
技术领域
本申请涉及计算机应用技术领域,尤其涉及一种应用测试方法、装置、电子设备及存储介质。
背景技术
在进行应用测试时,往往需要模拟诸多异常场景,以金融业务应用为例,需要模拟交易保存失败、交易流水号重复、Dubbo调用超时等异常场景。为提高测试效率,测试人员希望在一个系统运行正常的交易环境中模拟这些异常,因此,如何既能在该环境中执行测试用例,正确地模拟异常,同时不影响其他正常用例的执行,是一个待解决的问题。
需要说明的是,这里的陈述仅提供与本申请有关的背景信息,而不必然地构成现有技术。
发明内容
本申请提供一种应用测试方法、装置、电子设备及存储介质,以解决如何既能在正常运行环境中执行测试用例,正确地模拟异常,同时不影响其他正常用例的执行的技术问题。
本申请第一个方面提供一种应用测试方法,由被测应用所在的终端执行,包括:
加载与业务功能对应的若干个异常注入插件;
在被测应用的启动过程中,判断被测应用中的各业务功能是否存在对应的异常注入插件;
若一个目标业务功能存在对应的目标异常注入插件,则为所述目标业务功能注入所述目标异常注入插件中包含的异常模拟逻辑;所述异常模拟逻辑被配置为:若待响应的请求是与测试相关的请求,则进行异常模拟,否则不进行异常模拟,以测试被测应用的异常应对功能。
可选的,所述加载与业务功能对应的若干个异常注入插件,包括:
利用系统类加载器,在被测应用启动前加载异常注入代理插件;
利用加载的异常注入代理插件,启动异常插件类加载器;
基于服务发现机制,利用所述异常插件类加载器加载与业务功能对应的若干个异常注入插件。
可选的,所述基于服务发现机制,利用所述异常插件类加载器加载与业务功能对应的若干个异常注入插件,包括:
控制所述异常插件类加载器按照预设路径读取若干个异常注入插件包;
对读取的所述异常注入插件包进行解析,得到各所述异常注入插件的属性信息;
根据各所述异常注入插件的属性信息,加载并实例化相应的异常注入插件。
可选的,所述异常注入插件中设置有与对应业务功能的类加载信息相匹配的拦截规则,所述在被测应用的启动过程中,判断被测应用中的各业务功能是否存在对应的异常注入插件,包括:
在被测应用的启动过程中,获取当前启动的目标业务功能的类加载信息;
判断所述类加载信息是否存在相匹配的拦截规则,若存在,则将所述拦截规则对应的异常注入插件作为与所述目标业务功能对应的目标异常注入插件。
可选的,所述为所述目标业务功能注入所述目标异常注入插件中包含的异常模拟逻辑,包括:
根据所述目标异常注入插件中包含的拦截点信息,为目标业务功能中的目标组件设置拦截点,使所述异常模拟逻辑能够根据所述拦截点信息获取待响应的请求。
可选的,所述为所述目标业务功能注入所述目标异常注入插件中包含的异常模拟逻辑,包括:
基于ByteBuddy字节码修改方式,将所述异常模拟逻辑注入到目标业务功能中。
可选的,所述与测试相关的请求为包含测试标识的业务请求;
所述异常模拟逻辑被配置为:在进行异常模拟时,模拟与所述测试标识对应的异常。
本申请第二个方面提供一种应用测试装置,包括:
插件加载模块,用于加载与业务功能对应的若干个异常注入插件;
判断模块,用于在被测应用的启动过程中,判断被测应用中的各业务功能是否存在对应的异常注入插件;
测试模块,用于若一个目标业务功能存在对应的目标异常注入插件,则为所述目标业务功能注入所述目标异常注入插件中包含的异常模拟逻辑;所述异常模拟逻辑被配置为:若待响应的请求是与测试相关的请求,则进行异常模拟,否则不进行异常模拟,以测试被测应用的异常应对功能。
可选的,所述插件加载模块,具体用于:
利用系统类加载器,在被测应用启动前加载异常注入代理插件;
利用加载的异常注入代理插件,启动异常插件类加载器;
基于服务发现机制,利用所述异常插件类加载器加载与业务功能对应的若干个异常注入插件。
可选的,所述插件加载模块,具体用于:
控制所述异常插件类加载器按照预设路径读取若干个异常注入插件包;
对读取的所述异常注入插件包进行解析,得到各所述异常注入插件的属性信息;
根据各所述异常注入插件的属性信息,加载并实例化相应的异常注入插件。
可选的,所述异常注入插件中设置有与对应业务功能的类加载信息相匹配的拦截规则,所述判断模块,具体用于:
在被测应用的启动过程中,获取当前启动的目标业务功能的类加载信息;
判断所述类加载信息是否存在相匹配的拦截规则,若存在,则将所述拦截规则对应的异常注入插件作为与所述目标业务功能对应的目标异常注入插件。
可选的,所述测试模块,具体用于:
根据所述目标异常注入插件中包含的拦截点信息,为目标业务功能中的目标组件设置拦截点,使所述异常模拟逻辑能够根据所述拦截点信息获取待响应的请求。
可选的,所述测试模块,具体用于:
基于ByteBuddy字节码修改方式,将所述异常模拟逻辑注入到目标业务功能中。
可选的,所述与测试相关的请求为包含测试标识的业务请求;
所述异常模拟逻辑被配置为:在进行异常模拟时,模拟与所述测试标识对应的异常。
本申请第三个方面提供一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一个方面以及第一个方面各种可能的设计所述的方法。
本申请第四个方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一个方面以及第一个方面各种可能的设计所述的方法。
本申请技术方案,具有如下优点:
本申请提供的应用测试方法、装置、电子设备及存储介质,通过加载与业务功能对应的若干个异常注入插件;在被测应用的启动过程中,判断被测应用中的各业务功能是否存在对应的异常注入插件;若一个目标业务功能存在对应的目标异常注入插件,则为目标业务功能注入目标异常注入插件中包含的异常模拟逻辑;异常模拟逻辑被配置为:若待响应的请求是与测试相关的请求,则进行异常模拟,否则不进行异常模拟,以测试被测应用的异常应对功能。上述方案提供的方法,通过在被测应用启动过程中,利用异常注入插件对对应的业务功能进行异常模拟,以在其他业务功能正常实现的情况下,测试被测应用针对某业务功能的异常应对功能,既能在正常运行环境中执行测试用例,正确地模拟异常,同时不影响其他正常用例,提高了应用测试效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例基于的应用测试系统的结构示意图;
图2为本申请实施例提供的应用测试方法的流程示意图;
图3为本申请实施例提供的一种示例性的应用测试方法的流程示意图;
图4为本申请实施例提供的另一种示例性的应用测试方法的流程示意图;
图5为本申请实施例提供的示例性的应用测试系统的结构示意图;
图6为本申请实施例提供的应用测试装置的结构示意图;
图7为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
在进行应用测试时,往往需要模拟诸多异常场景,以金融业务应用为例,需要模拟交易保存失败、交易流水号重复、Dubbo调用超时等异常场景。为提高测试效率,测试人员希望在一个系统运行正常的交易环境中模拟这些异常,因此,如何既能在该环境中执行测试用例,正确地模拟异常,同时不影响其他正常用例的执行,是一个待解决的问题。
针对上述问题,本申请实施例提供的应用测试方法、装置、电子设备及存储介质,通过加载与业务功能对应的若干个异常注入插件;在被测应用的启动过程中,判断被测应用中的各业务功能是否存在对应的异常注入插件;若一个目标业务功能存在对应的目标异常注入插件,则为目标业务功能注入目标异常注入插件中包含的异常模拟逻辑;异常模拟逻辑被配置为:若待响应的请求是与测试相关的请求,则进行异常模拟,否则不进行异常模拟,以测试被测应用的异常应对功能。上述方案提供的方法,通过在被测应用启动过程中,利用异常注入插件对对应的业务功能进行异常模拟,以在其他业务功能正常实现的情况下,测试被测应用针对某业务功能的异常应对功能,既能在正常运行环境中执行测试用例,正确地模拟异常,同时不影响其他正常用例,提高了应用测试效率。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明实施例进行描述。
首先,对本申请所基于的应用测试系统结构进行说明:
本申请实施例提供的应用测试方法、装置、电子设备及存储介质,适用于对交易系统中的应用进行检测。如图1所示,为本申请实施例基于的应用测试系统的结构示意图,主要包括异常注入插件库、交易系统和用于应用测试装置,其中,交易系统中包括多个应用。具体地,当交易系统中有应用要进入运行状态时,应用测试装置可以从异常注入插件库为该应用加载与业务功能对应的若干个异常注入插件,以在应用的启动过程中,利用该异常注入插件对该应用的异常应对功能进行测试。
本申请实施例提供了一种应用测试方法,用于对交易系统中的应用进行测试。本申请实施例的执行主体为被测应用所在的终端,比如服务器、台式电脑、笔记本电脑、平板电脑及其他可用于对应用进行测试的电子设备。
如图2所示,为本申请实施例提供的应用测试方法的流程示意图,该方法包括:
步骤201,加载与业务功能对应的若干个异常注入插件。
具体地,安装有多个被测应用的终端,可以在预设的异常注入插件库中,加载与不同业务功能相对应的若干个异常注入插件。其中,这些异常注入插件可以分别对应不同的被测应用。
步骤202,在被测应用的启动过程中,判断被测应用中的各业务功能是否存在对应的异常注入插件。
需要说明的是,任意一个被测应用都是可以实现多种业务功能的,而应用测试一般都是对该应用的部分业务进行异常测试,因此本申请实施例加载的异常注入插件并不一定要覆盖该被测应用的所有业务功能。
具体地,一个终端可以安装多个应用,每个应用又包括多种业务功能,在终端需要对任一被测应用进行测试时,可以在该被测应用启动过程中,判断该被测应用中的各业务功能是否存在对应的异常注入插件,即判断步骤201加载的异常注入插件是否有与该被测应用的业务功能相对应的。
步骤203,若一个目标业务功能存在对应的目标异常注入插件,则为目标业务功能注入目标异常注入插件中包含的异常模拟逻辑。
其中,异常模拟逻辑被配置为:若待响应的请求是与测试相关的请求,则进行异常模拟,否则不进行异常模拟,以测试被测应用的异常应对功能。
需要说明的是,待响应的请求是被测应用在交易系统中随机的一条交易请求,如将数据x存储到某指定数据库等。
具体地,当被测应用中的某个目标业务功能存在对应的目标异常注入插件,则利用该目标异常注入插件,对该目标业务功能对应的待响应的请求进行异常模拟,以使该待响应请求得不到响应,也就是使被测应用无法完成目标交易任务(待响应的请求),进而触发该被测应用的异常处理进程,具体可以根据被测应用的异常处理进程执行情况,确定被测应用的异常应对功能,即可以根据被测应用对异常处理进程的执行情况,确定该被测应用的测试结果。
具体地,在一实施例中,可以基于ByteBuddy字节码修改方式,将异常模拟逻辑注入到目标业务功能中。
具体地,可以基于ByteBuddy字节码修改类库把加载到的异常模拟逻辑(异常模拟器)织入到目标业务功能中,实现将异常模拟器加载到应用的目标,这样,不需要在开发阶段对目标业务功能的代码进行大幅修改,而是在应用启动过程中动态注入异常模拟逻辑,减少了开发阶段的代码侵入,使异常模拟逻辑具有低耦合的特点。
其中,与测试相关的请求为包含测试标识的业务请求;异常模拟逻辑被配置为:在进行异常模拟时,模拟与测试标识对应的异常。
例如,对于网络支付交易等业务,在业务请求中会带有流水号,则可以利用这一点,将测试标识嵌入在流水号中,以快速识别与测试相关的请求。其中,测试标识可以表征测试类型,因此在进行异常模拟时,模拟与测试标识所表征的测试类型对应的异常。
在上述实施例的基础上,为了提高异常注入插件的加载效率,以进一步提高应用测试效率,作为一种可实施的方式,在一实施例中,加载与业务功能对应的若干个异常注入插件,包括:
步骤2011,利用系统类加载器,在被测应用启动前加载异常注入代理插件;
步骤2012,利用加载的异常注入代理插件,启动异常插件类加载器;
步骤2013,基于服务发现机制,利用异常插件类加载器加载与业务功能对应的若干个异常注入插件。
其中,图3为本申请实施例提供的一种示例性的应用测试方法的流程示意图,可以利用系统类加载器在被测应用启动前,加载异常注入代理插件,然后再利用加载的异常注入代理插件,启动异常插件类加载器,异常插件类加载器基于预设的服务发现机制,在预设的异常注入插件库中,加载与业务功能对应的若干个异常注入插件,如数据库异常注入插件和redis异常注入插件等。进一步地,在应用启动运行时,将该异常注入插件的异常模拟逻辑添加到该应用的业务功能(业务应用)中,以在业务应用类加载器加载该业务应用后,对加载到的业务应用进行异常模拟。其中,如图3所示的方法是JVM启动时加载Java Agent触发核心引擎工作,其工作机制是使用故障模拟器加载器去指定插槽加载。
具体地,在一实施例中,可以控制异常插件类加载器按照预设路径读取若干个异常注入插件包;对读取的异常注入插件包进行解析,得到各异常注入插件的属性信息;根据各异常注入插件的属性信息,加载并实例化相应的异常注入插件。
其中,图4为本申请实施例提供的另一种示例性的应用测试方法的流程示意图,JVM表示Java虚拟机,其中包含了本申请实施例中的系统类加载器,系统类加载器启动时加载异常注入核心程序(异常注入代理插件),并利用加载的异常注入代理插件,启动异常插件类加载器并进行进行初始化,然后基于异常插件类加载器按照预设路径读取若干个异常注入插件包,即去异常注入插件库的指定位置读取异常注入插件Jar包程序。然后由异常插件类加载器对异常注入插件包进行解析,以得到合法的异常注入插件的属性信息(定义),其中,合法的判断标准可以根据实际应用场景来确定,本申请实施例不做限定。最后由异常插件类加载器根据异常注入插件的属性信息,加载并实例化相应的异常注入插件,以得到多个异常注入插件。
在上述实施例的基础上,异常注入插件中设置有与对应业务功能的类加载信息相匹配的拦截规则,作为一种可实施的方式,在一实施例中,在被测应用的启动过程中,判断被测应用中的各业务功能是否存在对应的异常注入插件,包括:
步骤2021,在被测应用的启动过程中,获取当前启动的目标业务功能的类加载信息;
步骤2022,判断类加载信息是否存在相匹配的拦截规则,若存在,则将拦截规则对应的异常注入插件作为与目标业务功能对应的目标异常注入插件。
其中,目标业务功能的类加载信息表征该业务功能的执行原理,以数据库存储业务功能为例,其对应的类加载信息可以包括数据库访问地址。
具体地,如图4所示,判断被测应用基于JVM加载的目标业务功能对应类(目标业务功能的类加载信息)是否匹配当前异常注入插件中的拦截规则,如根据目标业务功能的类加载信息,确定该目标业务功能需要加载数据库A,则与其匹配的异常注入插件中的拦截规则可以是拦截被测应用与数据库A之间的数据传输。进一步地,若匹配,则将该异常注入插件作为与该目标业务功能对应的目标异常注入插件,并在该被测应用中注入该目标异常注入插件定义的拦截程序(异常模拟逻辑)。
在上述实施例的基础上,作为一种可实施的方式,在一实施例中,为目标业务功能注入目标异常注入插件中包含的异常模拟逻辑,包括:根据目标异常注入插件中包含的拦截点信息,为目标业务功能中的目标组件设置拦截点,使异常模拟逻辑能够根据拦截点信息获取待响应的请求。
其中,目标组件的状态可以决定目标业务功能是否可以实现,如目标业务功能是访问数据库,则目标组件可以是数据库驱动层。
具体地,当目标业务功能对应的目标数据库为某一Mysql数据库时,则利用目标异常注入插件加载故障模拟器,并模拟Mysql数据库故障,具体可以在目标数据库的驱动层设置拦截点,以使异常模拟逻辑能够根据拦截点信息获取待响应的请求,并使该目标业务功能对应的目标数据库不响应目标业务功能的请求,以拦截该目标业务功能与目标数据库之间的交易,从而导致目标业务功能无法实现。
其中,拦截点信息可以是待拦截的目标数据库的驱动层信息,具体可以是该目标数据库为目标业务功能提供的接口信息。该异常模拟逻辑支持在拦截点执行前、执行后、执行异常时自定义操作,即拦截点执行前、执行后、执行异常时的对应的测试操作可以根据实际场景设置,本申请实施例不做限定。以数据库异常为例,可以在数据库驱动层设置拦截点,并在执行拦截点之前,判断流水号是否含有对应的异常标记,如有则,确定该业务功能存在对应的异常注入插件,进而对其进行异常模拟,反之,则正常保存交易。
示例性的,如图5所示,为本申请实施例提供的示例性的应用测试系统的结构示意图,其中,APP表示被测应用,故障模拟器表示异常模拟逻辑,异常注入Agent表示异常注入代理插件。当业务功能对应的目标数据库为某一Mysql数据库时,则利用故障模拟器模拟Mysql数据库故障,具体可以在目标数据库的驱动层设置拦截点,使目标数据库不响应该目标业务功能的请求,以拦截该目标交易功能与目标数据库之间的交易,从而导致目标交易功能执行失败。如图5所示,以交易保存数据库失败异常场景为例,终端发起交易时在报文的流水号中标记DBXX,业务应用启动时JVM加载了异常注入插件,同时将故障模拟器加载到业务功能中,使该被测应用处理交易时,该模拟器根据流水号信息标记模拟异常。
其中,在本申请实施例中,故障模拟器所模拟的异常故障只应用于指定的作用域(目标业务功能),即期望的异常交易用例,异常故障不应影响其他用例正常执行。举例来说,用例A描述了交易保存数据库失败的异常场景,用例B描述了正常处理的场景,为了让用例A按照预期执行,故障模拟器所模拟的数据库异常只应用于用例A,用例B将按照预期正常的执行完成。本申请实施例提供的应用测试方法能够在交易运行时模拟异常环境,丰富用例场景,提高了代码覆盖率。
本申请实施例提供的应用测试方法,通过加载与业务功能对应的若干个异常注入插件;在被测应用的启动过程中,判断被测应用中的各业务功能是否存在对应的异常注入插件;若一个目标业务功能存在对应的目标异常注入插件,则为目标业务功能注入目标异常注入插件中包含的异常模拟逻辑;异常模拟逻辑被配置为:若待响应的请求是与测试相关的请求,则进行异常模拟,否则不进行异常模拟,以测试被测应用的异常应对功能。上述方案提供的方法,通过在被测应用启动过程中,利用异常注入插件对对应的业务功能进行异常模拟,以在其他业务功能正常实现的情况下,测试被测应用针对某业务功能的异常应对功能,既能在正常运行环境中执行测试用例,正确地模拟异常,同时不影响其他正常用例,提高了应用测试效率,为提高交易系统的安全性奠定了基础。并且,对被测应用的控制效率较高,为进一步提高应用测试效率奠定了基础。
本申请实施例提供了一种应用测试装置,用于执行上述实施例提供的应用测试方法。
如图6所示,为本申请实施例提供的应用测试装置的结构示意图。该应用测试装置60包括:插件加载模块601、判断模块602和测试模块603。
其中,插件加载模块,用于加载与业务功能对应的若干个异常注入插件;判断模块,用于在被测应用的启动过程中,判断被测应用中的各业务功能是否存在对应的异常注入插件;测试模块,用于若一个目标业务功能存在对应的目标异常注入插件,则为目标业务功能注入目标异常注入插件中包含的异常模拟逻辑;异常模拟逻辑被配置为:若待响应的请求是与测试相关的请求,则进行异常模拟,否则不进行异常模拟,以测试被测应用的异常应对功能。
具体地,在一实施例中,插件加载模块,具体用于:
利用系统类加载器,在被测应用启动前加载异常注入代理插件;
利用加载的异常注入代理插件,启动异常插件类加载器;
基于服务发现机制,利用异常插件类加载器加载与业务功能对应的若干个异常注入插件。
具体地,在一实施例中,插件加载模块,具体用于:
控制异常插件类加载器按照预设路径读取若干个异常注入插件包;
对读取的异常注入插件包进行解析,得到各异常注入插件的属性信息;
根据各异常注入插件的属性信息,加载并实例化相应的异常注入插件。
具体地,在一实施例中,异常注入插件中设置有与对应业务功能的类加载信息相匹配的拦截规则,判断模块,具体用于:
在被测应用的启动过程中,获取当前启动的目标业务功能的类加载信息;
判断类加载信息是否存在相匹配的拦截规则,若存在,则将拦截规则对应的异常注入插件作为与目标业务功能对应的目标异常注入插件。
具体地,在一实施例中,测试模块,具体用于:
根据目标异常注入插件中包含的拦截点信息,为目标业务功能中的目标组件设置拦截点,使异常模拟逻辑能够根据拦截点信息获取待响应的请求。
具体地,在一实施例中,测试模块,具体用于:
基于ByteBuddy字节码修改方式,将异常模拟逻辑注入到目标业务功能中。
具体地,在一实施例中,与测试相关的请求为包含测试标识的业务请求;
异常模拟逻辑被配置为:在进行异常模拟时,模拟与测试标识对应的异常。
关于本实施例中的应用测试装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例提供的应用测试装置,用于执行上述实施例提供的应用测试方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种电子设备,用于执行上述实施例提供的应用测试方法。
如图7所示,为本申请实施例提供的电子设备的结构示意图。该电子设备70包括:至少一个处理器71和存储器72;
存储器存储计算机执行指令;至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如上实施例提供的应用测试方法。
本申请实施例提供的一种电子设备,用于执行上述实施例提供的应用测试方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上任一实施例提供的应用测试方法。
本申请实施例的包含计算机可执行指令的存储介质,可用于存储前述实施例中提供的应用测试方法的计算机执行指令,其实现方式与原理相同,不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种应用测试方法,其特征在于,由被测应用所在的终端执行,包括:
加载与业务功能对应的若干个异常注入插件;
在被测应用的启动过程中,判断被测应用中的各业务功能是否存在对应的异常注入插件;
若一个目标业务功能存在对应的目标异常注入插件,则为所述目标业务功能注入所述目标异常注入插件中包含的异常模拟逻辑;所述异常模拟逻辑被配置为:若待响应的请求是与测试相关的请求,则进行异常模拟,否则不进行异常模拟,以测试被测应用的异常应对功能。
2.根据权利要求1所述的方法,其特征在于,所述加载与业务功能对应的若干个异常注入插件,包括:
利用系统类加载器,在被测应用启动前加载异常注入代理插件;
利用加载的异常注入代理插件,启动异常插件类加载器;
基于服务发现机制,利用所述异常插件类加载器加载与业务功能对应的若干个异常注入插件。
3.根据权利要求2所述的方法,其特征在于,所述基于服务发现机制,利用所述异常插件类加载器加载与业务功能对应的若干个异常注入插件,包括:
控制所述异常插件类加载器按照预设路径读取若干个异常注入插件包;
对读取的所述异常注入插件包进行解析,得到各所述异常注入插件的属性信息;
根据各所述异常注入插件的属性信息,加载并实例化相应的异常注入插件。
4.根据权利要求1所述的方法,其特征在于,所述异常注入插件中设置有与对应业务功能的类加载信息相匹配的拦截规则,所述在被测应用的启动过程中,判断被测应用中的各业务功能是否存在对应的异常注入插件,包括:
在被测应用的启动过程中,获取当前启动的目标业务功能的类加载信息;
判断所述类加载信息是否存在相匹配的拦截规则,若存在,则将所述拦截规则对应的异常注入插件作为与所述目标业务功能对应的目标异常注入插件。
5.根据权利要求1所述的方法,其特征在于,所述为所述目标业务功能注入所述目标异常注入插件中包含的异常模拟逻辑,包括:
根据所述目标异常注入插件中包含的拦截点信息,为目标业务功能中的目标组件设置拦截点,使所述异常模拟逻辑能够根据所述拦截点信息获取待响应的请求。
6.根据权利要求1所述的方法,其特征在于,所述为所述目标业务功能注入所述目标异常注入插件中包含的异常模拟逻辑,包括:
基于ByteBuddy字节码修改方式,将所述异常模拟逻辑注入到目标业务功能中。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述与测试相关的请求为包含测试标识的业务请求;
所述异常模拟逻辑被配置为:在进行异常模拟时,模拟与所述测试标识对应的异常。
8.一种应用测试装置,其特征在于,包括:
插件加载模块,用于加载与业务功能对应的若干个异常注入插件;
判断模块,用于在被测应用的启动过程中,判断被测应用中的各业务功能是否存在对应的异常注入插件;
测试模块,用于若一个目标业务功能存在对应的目标异常注入插件,则为所述目标业务功能注入所述目标异常注入插件中包含的异常模拟逻辑;所述异常模拟逻辑被配置为:若待响应的请求是与测试相关的请求,则进行异常模拟,否则不进行异常模拟,以测试被测应用的异常应对功能。
9.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111406399.XA CN116166521A (zh) | 2021-11-24 | 2021-11-24 | 一种应用测试方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111406399.XA CN116166521A (zh) | 2021-11-24 | 2021-11-24 | 一种应用测试方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116166521A true CN116166521A (zh) | 2023-05-26 |
Family
ID=86420548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111406399.XA Pending CN116166521A (zh) | 2021-11-24 | 2021-11-24 | 一种应用测试方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116166521A (zh) |
-
2021
- 2021-11-24 CN CN202111406399.XA patent/CN116166521A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112035314B (zh) | 内存泄漏的监控方法、装置及电子设备 | |
US20060129880A1 (en) | Method and system for injecting faults into a software application | |
CN112286828B (zh) | 一种区块链智能合约的测试方法和系统 | |
CN111523097B (zh) | 基于安卓系统的app刷子用户识别方法、设备及存储介质 | |
CN111427792A (zh) | 测试方法、装置、电子设备和可读存储介质 | |
CN113779578A (zh) | 移动端应用的智能混淆方法和系统 | |
CN111625225A (zh) | 一种程序指定数据输出方法和装置 | |
CN112668008A (zh) | 一种基于lsm来实现动态的系统调用劫持的方法 | |
CN112214267A (zh) | 一种安卓脱壳加速方法、装置、存储介质及计算机设备 | |
CN116150739A (zh) | 一种基于关键地址动态保护的栈溢出自动防御方法 | |
Xu et al. | BofAEG: Automated stack buffer overflow vulnerability detection and exploit generation based on symbolic execution and dynamic analysis | |
CN110414218B (zh) | 内核检测方法、装置、电子设备及存储介质 | |
CN116414722B (zh) | 模糊测试处理方法、装置、模糊测试系统及存储介质 | |
CN113127331B (zh) | 一种基于故障注入的测试方法、装置及计算机设备 | |
CN108073411A (zh) | 一种补丁的内核加载方法及装置 | |
CN111428240A (zh) | 一种用于检测软件的内存违规访问的方法及装置 | |
CN113791824B (zh) | 一种终端设备的外设驱动加载方法、系统及介质 | |
CN116166521A (zh) | 一种应用测试方法、装置、电子设备及存储介质 | |
CN116541847A (zh) | 一种应用程序的安全检测方法及装置 | |
CN107844703B (zh) | 一种基于Android平台Unity3D游戏的客户端安全检测方法及装置 | |
Amusuo et al. | Preventing Supply Chain Vulnerabilities in Java with a Fine-Grained Permission Manager | |
CN115758356A (zh) | 一种对Android应用实施可信静态度量的方法、存储介质及设备 | |
CN115292708A (zh) | 基于字节码的执行权限分析方法及装置 | |
CN114386047A (zh) | 应用漏洞检测方法、装置、电子设备及存储介质 | |
CN109597662B (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 |