CN111797015A - 一种基于动态字节码的测试方法及装置 - Google Patents
一种基于动态字节码的测试方法及装置 Download PDFInfo
- Publication number
- CN111797015A CN111797015A CN202010612627.8A CN202010612627A CN111797015A CN 111797015 A CN111797015 A CN 111797015A CN 202010612627 A CN202010612627 A CN 202010612627A CN 111797015 A CN111797015 A CN 111797015A
- Authority
- CN
- China
- Prior art keywords
- code
- test
- tested
- code file
- testing
- 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.)
- Granted
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 138
- 238000000034 method Methods 0.000 claims abstract description 33
- 238000004590 computer program Methods 0.000 claims description 16
- 238000010998 test method Methods 0.000 claims description 16
- 238000003860 storage Methods 0.000 claims description 14
- 230000005540 biological transmission Effects 0.000 claims description 13
- 238000002347 injection Methods 0.000 claims description 13
- 239000007924 injection Substances 0.000 claims description 13
- 238000012546 transfer Methods 0.000 claims description 7
- 238000002407 reforming Methods 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 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/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/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- 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)
- Debugging And Monitoring (AREA)
Abstract
本发明提供的一种基于动态字节码的测试方法及装置,首先将预设的测试场景代码注入到待测试工程程序的代码文件中;然后通过类加载器加载所述代码文件,进而将所述待测试工程程序在所述测试场景下运行。本发明支持根据工程的实际情况,在不改动原有代码的情况下扩展程序的功能、改造适应需求的复杂场景,本发明不仅满足测试需求,同时满足使用简单,对测试工程影响小,可以随时使用以及关闭该工程的需求,为测试提供简单的方式去处理复杂的测试场景。
Description
技术领域
本发明涉及测试技术领域,尤其涉及基于动态字节码的测试方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
随着互联网的高速发展,越来越多的非功能性测试领域在业界诞生,同时随着需求的增多,测试结构环境的复杂,需要测试的工程越来越复杂,对于测试需要的准备也更复杂,测试所需要的时间也越来越长。
现在测试需要的数据往往需要自己造数据,所以在测试中往往存在某些分支无法测试到,或者测试分支场景难以模拟的问题,测试往往花费大量时间或者难以完成一些异常情况,从而导致一些错误无法在测试过程中发现,导致在实际生产中发生严重的错误,这些问题虽然根据测试方法设计好了相关的测试场景,却难以执行,存在诸多不足。
发明内容
为了解决上述问题的至少一个,本发明实施例提供一种基于动态字节码的测试方法及装置,为测试提供简单的方式去处理复杂的测试场景。
第一方面,一种基于动态字节码的测试方法,包括:
将预设的测试场景代码注入到待测试工程程序的代码文件中;
通过类加载器加载所述代码文件,以使所述待测试工程程序在所述测试场景下运行。
在优选的实施例中,还包括:
根据测试需求信息和所述待测试工程程序的代码结构,生成对应每个测试需求信息的所述测试场景代码;
根据当前测试需求信息选取对应的所述测试场景代码;
其中,所述将预设的测试场景代码注入到待测试工程程序的代码文件中,包括:将选取的所述测试场景代码注入到待测试工程程序的代码文件中。
在优选的实施例中,所述测试场景为并发执行日志回放;所述通过类加载器加载所述代码文件,包括:
根据并发执行的线程数量,在内存中临时存储对应数量的key值,所述key值为所述待测试工程程序的代码文件中频率高于设定阈值的字段;或者,所述key值为进行测试的线程名和线程的唯一标识。
在优选的实施例中,所述通过类加载器加载所述代码文件,还包括:
在多次上机时,从所述代码文件中获取传递通道,所述传递通道包括当前上主机的报文入口,或者上一次上主机的获取报文信息的位置;
通过所述传递通道将处于同一线程池中所有线程对应的key值传递到当前上主机的报文信息中。
第二方面,一种基于动态字节码的测试装置,包括:
代码注入模块,将预设的测试场景代码注入到待测试工程程序的代码文件中;
加载模块,通过类加载器加载所述代码文件,以使所述待测试工程程序在所述测试场景下运行。
在优选的实施例中,还包括:
测试场景代码生成模块,根据测试需求信息和所述待测试工程程序的代码结构,生成对应每个测试需求信息的所述测试场景代码;
测试场景代码选取模块,根据当前测试需求信息选取对应的所述测试场景代码;
其中,所述代码注入模块将选取的所述测试场景代码注入到待测试工程程序的代码文件中。
在优选的实施例中,所述测试场景为并发执行日志回放;所述加载模块根据并发执行的线程数量,在内存中临时存储对应数量的key值,所述key值为所述待测试工程程序的代码文件中频率高于设定阈值的字段;或者,所述key值为进行测试的线程名和线程的唯一标识。
在优选的实施例中,所述加载模块还用于在多次上机时,从所述代码文件中获取传递通道,所述传递通道包括当前上主机的报文入口,或者上一次上主机的获取报文信息的位置;通过所述传递通道将处于同一线程池中所有线程对应的key值传递到当前上主机的报文信息中。
第三方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一所述方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述第一方面任一所述方法的计算机程序。
本发明的有益效果如下
本发明提供的一种基于动态字节码的测试方法及装置,首先将预设的测试场景代码注入到待测试工程程序的代码文件中;然后通过类加载器加载所述代码文件,进而将所述待测试工程程序在所述测试场景下运行。本发明支持根据工程的实际情况,在不改动原有代码的情况下扩展程序的功能、改造适应需求的复杂场景,本发明不仅满足测试需求,同时满足使用简单,对测试工程影响小,可以随时使用以及关闭该工程的需求,为测试提供简单的方式去处理复杂的测试场景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中提供的一种基于动态字节码的测试方法流程示意图。
图2为本发明实施例中提供的一具体场景的流程示意图。
图3为本发明实施例中提供的一种基于动态字节码的测试装置结构示意图。
图4为适用于实现本发明中的基于动态字节码的测试方法的计算机设备结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
虽然本发明提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本发明实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行。
图1示出了本发明实施例中一种基于动态字节码的测试方法,包括:
S1:将预设的测试场景代码注入到待测试工程程序的代码文件中。
S2:通过类加载器加载所述代码文件,以使所述待测试工程程序在所述测试场景下运行。
本发明提供的一种基于动态字节码的测试方法,首先将预设的测试场景代码注入到待测试工程程序的代码文件中;然后通过类加载器加载所述代码文件,进而将所述待测试工程程序在所述测试场景下运行。本发明支持根据工程的实际情况,在不改动原有代码的情况下扩展程序的功能、改造适应需求的复杂场景,本发明不仅满足测试需求,同时满足使用简单,对测试工程影响小,可以随时使用以及关闭该工程的需求,为测试提供简单的方式去处理复杂的测试场景。
具体而言,在步骤S1中,通过修改注入工程的代码使用javassit的方式对工程进行相应的注入,输入注入的行数,以及需要注入的模块,然后通过类加载器加载注入后的代码。
在某些实施例中,还包括:
根据测试需求信息和所述待测试工程程序的代码结构,生成对应每个测试需求信息的所述测试场景代码;
根据当前测试需求信息选取对应的所述测试场景代码;
该实施例中,步骤S1包括:将选取的所述测试场景代码注入到待测试工程程序的代码文件中。也即在本实施例中,可以通过根据测试需求信息来对应生成需要的场景代码,进而将场景需求“模板化”。
在一些实施例中,为了能将日志回放能够并发执行,需要在工程中,将相关字段置入报文中的时候,能够进行并发操作。该实施例中,所述测试场景为并发执行日志回放;步步骤S2,包括:
根据并发执行的线程数量,在内存中临时存储对应数量的key值,所述key值为所述待测试工程程序的代码文件中频率高于设定阈值的字段;或者,所述key值为进行测试的线程名和线程的唯一标识。
此外,有一些工程存在二次上主机的需求。为了能解决二次上主机或者多次上主机的要求,同时解决在多次上主机的时候,一些线程和前两次上主机的线程异步方式,不来自一个线程池中,无法读取到报文信息的问题。步骤S2,还包括:
在多次上机时,从所述代码文件中获取传递通道,所述传递通道包括当前上主机的报文入口,或者上一次上主机的获取报文信息的位置;
通过所述传递通道将处于同一线程池中所有线程对应的key值传递到当前上主机的报文信息中。
下面以具体场景为例,进行详细说明,如图1所示,测试日志回放并发响应场景,将需要注入的代码转化为字节码的形式,注入到工程中的class文件中,动态修改工程中的class文件,将class修改,随后通过类加载器重新加载,完成将代码动态注入到工程之中。此过程不需要重新启动工程,所有步骤由架包自动完成。
如图2所示,原来的日志回放功能为串行执行。主要原因在于日志里没有可以用于区分并发执行的字段。为了能够使得日志回放能够动态分布化的执行,主机中的日志需要有字段能够支持报文进行分片,这样报文才能从原来的串行的执行,改变为并行化的执行。但是往往主机报文中,并没有能够支持报文进行分片的字段,因此,需要通过动态注入代码,将这些字段从报文中截取出来,置入返回的报文中,这样,可以并发执行不同的日志回访进程,加快日志回放速度。
为了能将日志回放能够并发执行,需要在工程中,将相关字段置入报文中的时候,能够进行并发操作。通常并发的操作有两种方法,第一种可以报文中在前后都能用到的字段,将这个字段作为内存中临时储存的key值,另一种方法是把线程名+线程id作为内存中临时储存的key值。因为可能存在一个工程使用多个线程池进行并发情况,为了确保key值唯一性,所以使用线程名+线程id作为key值。其中key值作用为判断内存中,不同线程储存字段的标识符。在内存中储存不同线程的相关字段后,在上主机前,通过key值从内存中取出对应的字段,将其送入主机中。通过上述两种方式,可以完成日志回访工作的并发执行的工作。使用第一种方法可以减少注入代码的复杂程度,方便日志回访效果的进行,报文以及工程能够满足每个报文中有字段能一一对应一个日志中的一些字段的时候,可以优先使用方法一来完成工程的并发需求。在一些应用主机返回日志中没有可以用于并发的字段,同时报文中字段也没有可以与主机返回日志中一一对应的字段时,使用方法二来满足并发的要求。
有一些工程存在二次上主机的需求。为了能解决二次上主机或者多次上主机的要求,同时解决在多次上主机的时候,一些线程和前两次上主机的线程异步方式,不来自一个线程池中,无法读取到报文信息的问题。这里,为了把相关字段传递过来,这里需要从代码中找到二次上主机时候报文的入口,或者二次上主机从一次上主机的获取报文信息的位置。如果后面上主机的报文与一次上主机处于同一个线程,或者有相同的可以一一对应的报文信息,在一次上主机报文输入的时候,对报文进行判断。如果报文有多次上主机的报文,并且这些执行多次上主机报文的线程来自同一个线程池中,则存储多个相关信息,在多次执行的方式中,每次使用根据相关中的报文中的字段,或者线程名加线程ID的方式,取出字段,满足一些应用一次交易会多次上主机的情况下,返回多次日志的情况下的,将工程在满足日志回放的情况下,提高程序的并发效果。一般可以通过上述的两种方法,日志回放可以完成动态分布式的方法,将原来串行的日志回放工作,现在可以根据相关字段进行串行执行,提高日志回放工作的效率。
为了实现该方法使用的便利性,这里将具体工具打包成服务化的注入架包。第一步,使用现有工具实现将架包实现自己打包放入工程所在容器内,减少实际操作人员需要输入复杂的命令将具体工具放入工程所在容器内。第二部,通过配置化的方法,即写好需要注入的代码,以及注入代码的位置,工具读取上述信息后可以实现注入。这需要实际操作人员在首先理解实际工程实际代码情况下,将代码注入到报文输入的位置,以及日志上主机的所在方法中。这部分代码可以有实际操作人员进行书写,根据工程实际情况,进行获取报文以及将报文送上主机,具体并发化的方法参考上文的并发的需求,编写后指定每一段代码注入的位置,随后运行改服务化注册配置装置。即可完成工程日志回访的动态分布式方案,减少实际操作人员的操作复杂度。
本领域技术人员明了,使用动态字节码技术不仅可以解决日志回放并发执行的问题的解决,这里只是举了一个例子,同时,也可以解决其他代码层测试适配性问题,具体解决方案和解决日志回访并发的问题类似,在输入工程代码的所有测试的需求场景的情况下,生成解决问题所需要的代码,并通过上述的服务化注册配置装置,将代码注入带代码层,解决当前的问题。所以,本文的针对日志回放并发执行的服务化注册配置装置,也可以同样运用于解决其他代码层适配性的问题。提高因为代码层原因所引起的测试问题,提高测试效率。
可以理解,本发明通过解析工程的代码,根据不同工程的不同情况自动生成相应的代码,帮助实际使用人员完成复杂的测试场景。其优点如下:
1.注入代码得使用方便:需要在工程增加代码时,可以在工程正在运行得时候加入代码。
2.对工程影响小:如果不需要重新部署工程。如果之后需要清除注入得代码,直接将被注入节点滚动重启,对工程影响小。
3.注入位置灵活:可以根据行进行注入,注入灵活,便于进行复杂逻辑的代码注入,完成复杂的功能
基于相同的发明构思,本发明实施例提供一种基于动态字节码的测试装置,如图3,包括:
代码注入模块1,将预设的测试场景代码注入到待测试工程程序的代码文件中;
加载模块2,通过类加载器加载所述代码文件,以使所述待测试工程程序在所述测试场景下运行。
本发明提供的一种基于动态字节码的测试装置,首先将预设的测试场景代码注入到待测试工程程序的代码文件中;然后通过类加载器加载所述代码文件,进而将所述待测试工程程序在所述测试场景下运行。本发明支持根据工程的实际情况,在不改动原有代码的情况下扩展程序的功能、改造适应需求的复杂场景,本发明不仅满足测试需求,同时满足使用简单,对测试工程影响小,可以随时使用以及关闭该工程的需求,为测试提供简单的方式去处理复杂的测试场景。
在某些实施例中,还包括:
测试场景代码生成模块,根据测试需求信息和所述待测试工程程序的代码结构,生成对应每个测试需求信息的所述测试场景代码;
测试场景代码选取模块,根据当前测试需求信息选取对应的所述测试场景代码;
其中,所述代码注入模块将选取的所述测试场景代码注入到待测试工程程序的代码文件中。
在某些实施例中,所述测试场景为并发执行日志回放;所述加载模块根据并发执行的线程数量,在内存中临时存储对应数量的key值,所述key值为所述待测试工程程序的代码文件中频率高于设定阈值的字段;或者,所述key值为进行测试的线程名和线程的唯一标识。
在某些实施例中,所述加载模块还用于在多次上机时,从所述代码文件中获取传递通道,所述传递通道包括当前上主机的报文入口,或者上一次上主机的获取报文信息的位置;通过所述传递通道将处于同一线程池中所有线程对应的key值传递到当前上主机的报文信息中。
从硬件层面来说,为了本发明提供一种用于实现所述基于动态字节码的测试方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内容:
处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现服务器、装置、分布式消息中间件集群装置、各类数据库以及用户终端等相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例中的基于动态字节码的测试方法的实施例,以及,基于动态字节码的测试方法装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。
图4为本发明实施例的电子设备9600的***构成的示意框图。如图4所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图4是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
一实施例中,基于动态字节码的测试方法功能可以被集成到中央处理器9100中。例如,中央处理器9100可以被配置为进行如下控制:
S1:将预设的测试场景代码注入到待测试工程程序的代码文件中。
S2:通过类加载器加载所述代码文件,以使所述待测试工程程序在所述测试场景下运行。
从上述描述可知,本发明的实施例提供的电子设备,首先将预设的测试场景代码注入到待测试工程程序的代码文件中;然后通过类加载器加载所述代码文件,进而将所述待测试工程程序在所述测试场景下运行。本发明支持根据工程的实际情况,在不改动原有代码的情况下扩展程序的功能、改造适应需求的复杂场景,本发明不仅满足测试需求,同时满足使用简单,对测试工程影响小,可以随时使用以及关闭该工程的需求,为测试提供简单的方式去处理复杂的测试场景。
在另一个实施方式中,基于动态字节码的测试方法装置可以与中央处理器9100分开配置,例如可以将基于动态字节码的测试方法配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现基于动态字节码的测试方法功能。
如图4所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图4中所示的所有部件;此外,电子设备9600还可以包括图4中没有示出的部件,可以参考现有技术。
如图4所示,中央处理器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来播放本机上存储的声音。
本发明的实施例还提供能够实现上述实施例中方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的基于动态字节码的测试方法的全部步骤。
从上述描述可知,本发明的实施例提供的计算机可读存储介质,首先将预设的测试场景代码注入到待测试工程程序的代码文件中;然后通过类加载器加载所述代码文件,进而将所述待测试工程程序在所述测试场景下运行。本发明支持根据工程的实际情况,在不改动原有代码的情况下扩展程序的功能、改造适应需求的复杂场景,本发明不仅满足测试需求,同时满足使用简单,对测试工程影响小,可以随时使用以及关闭该工程的需求,为测试提供简单的方式去处理复杂的测试场景。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种基于动态字节码的测试方法,其特征在于,包括:
将预设的测试场景代码注入到待测试工程程序的代码文件中;
通过类加载器加载所述代码文件,以使所述待测试工程程序在所述测试场景下运行。
2.根据权利要求1所述的测试方法,其特征在于,还包括:
根据测试需求信息和所述待测试工程程序的代码结构,生成对应每个测试需求信息的所述测试场景代码;
根据当前测试需求信息选取对应的所述测试场景代码;
其中,所述将预设的测试场景代码注入到待测试工程程序的代码文件中,包括:将选取的所述测试场景代码注入到待测试工程程序的代码文件中。
3.根据权利要求1所述的测试方法,其特征在于,所述测试场景为并发执行日志回放;所述通过类加载器加载所述代码文件,包括:
根据并发执行的线程数量,在内存中临时存储对应数量的key值,所述key值为所述待测试工程程序的代码文件中频率高于设定阈值的字段;或者,所述key值为进行测试的线程名和线程的唯一标识。
4.根据权利要求3所述的测试方法,其特征在于,所述通过类加载器加载所述代码文件,还包括:
在多次上机时,从所述代码文件中获取传递通道,所述传递通道包括当前上主机的报文入口,或者上一次上主机的获取报文信息的位置;
通过所述传递通道将处于同一线程池中所有线程对应的key值传递到当前上主机的报文信息中。
5.一种基于动态字节码的测试装置,其特征在于,包括:
代码注入模块,将预设的测试场景代码注入到待测试工程程序的代码文件中;
加载模块,通过类加载器加载所述代码文件,以使所述待测试工程程序在所述测试场景下运行。
6.根据权利要求5所述的测试装置,其特征在于,还包括:
测试场景代码生成模块,根据测试需求信息和所述待测试工程程序的代码结构,生成对应每个测试需求信息的所述测试场景代码;
测试场景代码选取模块,根据当前测试需求信息选取对应的所述测试场景代码;
其中,所述代码注入模块将选取的所述测试场景代码注入到待测试工程程序的代码文件中。
7.根据权利要求5所述的测试装置,其特征在于,所述测试场景为并发执行日志回放;所述加载模块根据并发执行的线程数量,在内存中临时存储对应数量的key值,所述key值为所述待测试工程程序的代码文件中频率高于设定阈值的字段;或者,所述key值为进行测试的线程名和线程的唯一标识。
8.根据权利要求7所述的测试装置,其特征在于,所述加载模块还用于在多次上机时,从所述代码文件中获取传递通道,所述传递通道包括当前上主机的报文入口,或者上一次上主机的获取报文信息的位置;通过所述传递通道将处于同一线程池中所有线程对应的key值传递到当前上主机的报文信息中。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4任一所述的测试方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至4任一所述的测试方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010612627.8A CN111797015B (zh) | 2020-06-30 | 2020-06-30 | 一种基于动态字节码的测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010612627.8A CN111797015B (zh) | 2020-06-30 | 2020-06-30 | 一种基于动态字节码的测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111797015A true CN111797015A (zh) | 2020-10-20 |
CN111797015B CN111797015B (zh) | 2024-02-09 |
Family
ID=72811532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010612627.8A Active CN111797015B (zh) | 2020-06-30 | 2020-06-30 | 一种基于动态字节码的测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111797015B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506782A (zh) * | 2020-12-08 | 2021-03-16 | 北京指掌易科技有限公司 | 一种应用程序的测试方法、装置、设备及存储介质 |
CN112948258A (zh) * | 2021-03-26 | 2021-06-11 | 杭州万高科技股份有限公司 | 一种代码测试方法、装置、设备及计算机可读存储介质 |
CN112965896A (zh) * | 2021-02-10 | 2021-06-15 | 中国工商银行股份有限公司 | 基于动态字节码的测试环境故障检测方法及装置 |
US20240118991A1 (en) * | 2022-10-07 | 2024-04-11 | The Bank Of New York Mellon | Application scenario injection and validation system |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106909498A (zh) * | 2015-12-22 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种Java程序注入故障的方法和*** |
CN110008224A (zh) * | 2019-03-08 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据库事务处理方法及装置 |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN110058990A (zh) * | 2019-03-12 | 2019-07-26 | 平安普惠企业管理有限公司 | 性能测试方法及装置、计算机设备、存储介质 |
CN110245019A (zh) * | 2019-06-17 | 2019-09-17 | 广东金赋科技股份有限公司 | 一种自适应***资源的线程并发方法及装置 |
US10430321B1 (en) * | 2018-08-21 | 2019-10-01 | International Business Machines Corporation | White box code concurrency testing for transaction processing |
CN110309067A (zh) * | 2019-06-14 | 2019-10-08 | 吉旗(成都)科技有限公司 | 基于安卓***的固定场景压力测试方法及装置 |
CN110795357A (zh) * | 2019-11-04 | 2020-02-14 | 中国工商银行股份有限公司 | 程序监控方法及装置 |
WO2020119422A1 (zh) * | 2018-12-15 | 2020-06-18 | 深圳壹账通智能科技有限公司 | 测试数据的加载方法、装置、计算机设备及存储介质 |
-
2020
- 2020-06-30 CN CN202010612627.8A patent/CN111797015B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106909498A (zh) * | 2015-12-22 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种Java程序注入故障的方法和*** |
US10430321B1 (en) * | 2018-08-21 | 2019-10-01 | International Business Machines Corporation | White box code concurrency testing for transaction processing |
WO2020119422A1 (zh) * | 2018-12-15 | 2020-06-18 | 深圳壹账通智能科技有限公司 | 测试数据的加载方法、装置、计算机设备及存储介质 |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN110008224A (zh) * | 2019-03-08 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据库事务处理方法及装置 |
CN110058990A (zh) * | 2019-03-12 | 2019-07-26 | 平安普惠企业管理有限公司 | 性能测试方法及装置、计算机设备、存储介质 |
CN110309067A (zh) * | 2019-06-14 | 2019-10-08 | 吉旗(成都)科技有限公司 | 基于安卓***的固定场景压力测试方法及装置 |
CN110245019A (zh) * | 2019-06-17 | 2019-09-17 | 广东金赋科技股份有限公司 | 一种自适应***资源的线程并发方法及装置 |
CN110795357A (zh) * | 2019-11-04 | 2020-02-14 | 中国工商银行股份有限公司 | 程序监控方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506782A (zh) * | 2020-12-08 | 2021-03-16 | 北京指掌易科技有限公司 | 一种应用程序的测试方法、装置、设备及存储介质 |
CN112965896A (zh) * | 2021-02-10 | 2021-06-15 | 中国工商银行股份有限公司 | 基于动态字节码的测试环境故障检测方法及装置 |
CN112948258A (zh) * | 2021-03-26 | 2021-06-11 | 杭州万高科技股份有限公司 | 一种代码测试方法、装置、设备及计算机可读存储介质 |
US20240118991A1 (en) * | 2022-10-07 | 2024-04-11 | The Bank Of New York Mellon | Application scenario injection and validation system |
Also Published As
Publication number | Publication date |
---|---|
CN111797015B (zh) | 2024-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111797015B (zh) | 一种基于动态字节码的测试方法及装置 | |
CN101368991A (zh) | 电子装置测试装置及方法 | |
CN108228628B (zh) | 一种结构化查询语言数据库中的宽表生成方法及其装置 | |
CN112463634A (zh) | 微服务架构下的软件测试方法及装置 | |
CN113051163A (zh) | 单元测试方法、装置、电子设备及存储介质 | |
CN111984239A (zh) | 一种页面配置方法、装置、服务器及存储介质 | |
CN111414303B (zh) | 一种用于脚本性能测试的辅助***及方法 | |
CN111679790A (zh) | 远程软件开发存储空间分配方法及装置 | |
CN112860585A (zh) | 一种测试脚本断言生成方法及装置 | |
CN105577828A (zh) | 一种远程重定向方法和装置 | |
CN112905461A (zh) | 自动化接口测试案例执行方法及装置 | |
CN113626099B (zh) | 应用程序的启动方法、装置及电子设备 | |
CN114416101A (zh) | 前端项目调试方法及*** | |
CN111698337B (zh) | 建立通信连接的方法、装置及设备 | |
CN112423068A (zh) | 智能电视调试方法、装置、移动终端和可读存储介质 | |
CN111538660A (zh) | 云上容器内程序代码覆盖率统计方法及装置 | |
CN113741946B (zh) | 公共接口函数库的裁剪方法、装置、设备及可读存储介质 | |
CN113687879B (zh) | 跨平台框架与平台交互库的交互方法及装置 | |
CN112988603B (zh) | 大数据测试用例生成方法及装置 | |
CN112306844B (zh) | 软件开发***的接口测试方法、装置、设备及存储介质 | |
CN112114904B (zh) | ***配置信息的处理方法及装置 | |
CN108628750B (zh) | 一种测试代码处理方法及装置 | |
CN113609017A (zh) | 接口测试案例生成方法及装置 | |
CN113987048A (zh) | 一种数据库接口的生成方法及装置 | |
CN116820973A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |