一种基于动态字节码的测试方法及装置制造方法及图纸

技术编号:25988692 阅读:17 留言:0更新日期:2020-10-20 18:56
本发明专利技术提供的一种基于动态字节码的测试方法及装置,首先将预设的测试场景代码注入到待测试工程程序的代码文件中;然后通过类加载器加载所述代码文件,进而将所述待测试工程程序在所述测试场景下运行。本发明专利技术支持根据工程的实际情况,在不改动原有代码的情况下扩展程序的功能、改造适应需求的复杂场景,本发明专利技术不仅满足测试需求,同时满足使用简单,对测试工程影响小,可以随时使用以及关闭该工程的需求,为测试提供简单的方式去处理复杂的测试场景。

【技术实现步骤摘要】
一种基于动态字节码的测试方法及装置
本专利技术涉及测试
,尤其涉及基于动态字节码的测试方法及装置。
技术介绍
本部分旨在为权利要求书中陈述的本专利技术实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。随着互联网的高速发展,越来越多的非功能性测试领域在业界诞生,同时随着需求的增多,测试结构环境的复杂,需要测试的工程越来越复杂,对于测试需要的准备也更复杂,测试所需要的时间也越来越长。现在测试需要的数据往往需要自己造数据,所以在测试中往往存在某些分支无法测试到,或者测试分支场景难以模拟的问题,测试往往花费大量时间或者难以完成一些异常情况,从而导致一些错误无法在测试过程中发现,导致在实际生产中发生严重的错误,这些问题虽然根据测试方法设计好了相关的测试场景,却难以执行,存在诸多不足。
技术实现思路
为了解决上述问题的至少一个,本专利技术实施例提供一种基于动态字节码的测试方法及装置,为测试提供简单的方式去处理复杂的测试场景。第一方面,一种基于动态字节码的测试方法,包括:将预设的测试场景代码注入到待测试工程程序的代码文件中;通过类加载器加载所述代码文件,以使所述待测试工程程序在所述测试场景下运行。在优选的实施例中,还包括:根据测试需求信息和所述待测试工程程序的代码结构,生成对应每个测试需求信息的所述测试场景代码;根据当前测试需求信息选取对应的所述测试场景代码;其中,所述将预设的测试场景代码注入到待测试工程程序的代码文件中,包括:将选取的所述测试场景代码注入到待测试工程程序的代码文件中。在优选的实施例中,所述测试场景为并发执行日志回放;所述通过类加载器加载所述代码文件,包括:根据并发执行的线程数量,在内存中临时存储对应数量的key值,所述key值为所述待测试工程程序的代码文件中频率高于设定阈值的字段;或者,所述key值为进行测试的线程名和线程的唯一标识。在优选的实施例中,所述通过类加载器加载所述代码文件,还包括:在多次上机时,从所述代码文件中获取传递通道,所述传递通道包括当前上主机的报文入口,或者上一次上主机的获取报文信息的位置;通过所述传递通道将处于同一线程池中所有线程对应的key值传递到当前上主机的报文信息中。第二方面,一种基于动态字节码的测试装置,包括:代码注入模块,将预设的测试场景代码注入到待测试工程程序的代码文件中;加载模块,通过类加载器加载所述代码文件,以使所述待测试工程程序在所述测试场景下运行。在优选的实施例中,还包括:测试场景代码生成模块,根据测试需求信息和所述待测试工程程序的代码结构,生成对应每个测试需求信息的所述测试场景代码;测试场景代码选取模块,根据当前测试需求信息选取对应的所述测试场景代码;其中,所述代码注入模块将选取的所述测试场景代码注入到待测试工程程序的代码文件中。在优选的实施例中,所述测试场景为并发执行日志回放;所述加载模块根据并发执行的线程数量,在内存中临时存储对应数量的key值,所述key值为所述待测试工程程序的代码文件中频率高于设定阈值的字段;或者,所述key值为进行测试的线程名和线程的唯一标识。在优选的实施例中,所述加载模块还用于在多次上机时,从所述代码文件中获取传递通道,所述传递通道包括当前上主机的报文入口,或者上一次上主机的获取报文信息的位置;通过所述传递通道将处于同一线程池中所有线程对应的key值传递到当前上主机的报文信息中。第三方面,本专利技术实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一所述方法。第四方面,本专利技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述第一方面任一所述方法的计算机程序。本专利技术的有益效果如下本专利技术提供的一种基于动态字节码的测试方法及装置,首先将预设的测试场景代码注入到待测试工程程序的代码文件中;然后通过类加载器加载所述代码文件,进而将所述待测试工程程序在所述测试场景下运行。本专利技术支持根据工程的实际情况,在不改动原有代码的情况下扩展程序的功能、改造适应需求的复杂场景,本专利技术不仅满足测试需求,同时满足使用简单,对测试工程影响小,可以随时使用以及关闭该工程的需求,为测试提供简单的方式去处理复杂的测试场景。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1为本专利技术实施例中提供的一种基于动态字节码的测试方法流程示意图。图2为本专利技术实施例中提供的一具体场景的流程示意图。图3为本专利技术实施例中提供的一种基于动态字节码的测试装置结构示意图。图4为适用于实现本专利技术中的基于动态字节码的测试方法的计算机设备结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。下面参考本专利技术的若干代表性实施方式,详细阐释本专利技术的原理和精神。虽然本专利技术提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本专利技术实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行。图1示出了本专利技术实施例中一种基于动态字节码的测试方法,包括:S1:将预设的测试场景代码注入到待测试工程程序的代码文件中。S2:通过类加载器加载所述代码文件,以使所述待测试工程程序在所述测试场景下运行。本专利技术提供的一种基于动态字节码的测试方法,首先将预设的测试场景代码注入到待测试工程程序的代码文件中;然后通过类加载器加载所述代码文件,进而将所述待测试工程程序在所述测试场景下运行。本专利技术支持根据工程的实际情况,在不改动原有代码的情况下扩展程序的功能、改造适应需求的复杂场景,本专利技术不仅满足测试需求,同时满足使用简单,对测试工程影响小,可以随时使用以及关闭该工程的需求,为测试提供简单的方式去处理复杂的测试场景。具体而言,在步骤S1中,通过修改注入工程的代码使用javassit的方式对工程进行相应的注入,输入注入的行数,以及需要注入的模块,然后通过类加载器加载注入后的代码。<本文档来自技高网...

【技术保护点】
1.一种基于动态字节码的测试方法,其特征在于,包括:/n将预设的测试场景代码注入到待测试工程程序的代码文件中;/n通过类加载器加载所述代码文件,以使所述待测试工程程序在所述测试场景下运行。/n

【技术特征摘要】
1.一种基于动态字节码的测试方法,其特征在于,包括:
将预设的测试场景代码注入到待测试工程程序的代码文件中;
通过类加载器加载所述代码文件,以使所述待测试工程程序在所述测试场景下运行。


2.根据权利要求1所述的测试方法,其特征在于,还包括:
根据测试需求信息和所述待测试工程程序的代码结构,生成对应每个测试需求信息的所述测试场景代码;
根据当前测试需求信息选取对应的所述测试场景代码;
其中,所述将预设的测试场景代码注入到待测试工程程序的代码文件中,包括:将选取的所述测试场景代码注入到待测试工程程序的代码文件中。


3.根据权利要求1所述的测试方法,其特征在于,所述测试场景为并发执行日志回放;所述通过类加载器加载所述代码文件,包括:
根据并发执行的线程数量,在内存中临时存储对应数量的key值,所述key值为所述待测试工程程序的代码文件中频率高于设定阈值的字段;或者,所述key值为进行测试的线程名和线程的唯一标识。


4.根据权利要求3所述的测试方法,其特征在于,所述通过类加载器加载所述代码文件,还包括:
在多次上机时,从所述代码文件中获取传递通道,所述传递通道包括当前上主机的报文入口,或者上一次上主机的获取报文信息的位置;
通过所述传递通道将处于同一线程池中所有线程对应的key值传递到当前上主机的报文信息中。


5.一种基于动态字节码的测试装置,其特征在于,包括:
代码注入模块,将预设的测试场景代码注入到待测试工程程序的代码文件中...

【专利技术属性】
技术研发人员:项旗立杨卓俊黄俊文谢林洁
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1