CN113468072A - 基于字节码增强技术的动态单元测试系统及方法 - Google Patents
基于字节码增强技术的动态单元测试系统及方法 Download PDFInfo
- Publication number
- CN113468072A CN113468072A CN202110848016.8A CN202110848016A CN113468072A CN 113468072 A CN113468072 A CN 113468072A CN 202110848016 A CN202110848016 A CN 202110848016A CN 113468072 A CN113468072 A CN 113468072A
- Authority
- CN
- China
- Prior art keywords
- test
- mock
- testing
- module
- unit
- 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 306
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000005516 engineering process Methods 0.000 title claims abstract description 33
- 230000008569 process Effects 0.000 claims abstract description 18
- 230000000007 visual effect Effects 0.000 claims abstract description 10
- 238000007726 management method Methods 0.000 claims description 22
- 238000004891 communication Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 13
- 238000013500 data storage Methods 0.000 claims description 12
- 239000003795 chemical substances by application Substances 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 10
- 238000012800 visualization Methods 0.000 claims description 10
- 238000002347 injection Methods 0.000 claims description 9
- 239000007924 injection Substances 0.000 claims description 9
- 238000004220 aggregation Methods 0.000 claims description 8
- 230000002776 aggregation Effects 0.000 claims description 8
- 238000007781 pre-processing Methods 0.000 claims description 8
- 238000010276 construction Methods 0.000 claims description 7
- 238000003860 storage Methods 0.000 claims description 7
- 230000010354 integration Effects 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 4
- 239000000126 substance Substances 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 19
- 239000000306 component Substances 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000007547 defect Effects 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 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/368—Test management for test version control, e.g. updating test cases to a new software version
-
- 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/3684—Test management for test design, e.g. generating new test cases
-
- 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/3672—Test management
- G06F11/3692—Test management for test results analysis
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
本发明提出了一种基于字节码增强技术的动态单元测试系统及方法,涉及自动化测试技术领域,该系统包括:源码管理模块,用于建立Maven离线中央仓库,对Mock工程的源码进行版本管理;Mock源码测试模块,用于通过Pom文件的配置方式,使用Maven工具对目标工程进行构建,将源码嵌入目标工程中;从测试案例库托管模块拉取测试案例,并启动测试;在测试过程中,根据源码及测试案例,对目标工程进行Mock测试操作,并根据字节码增强对运行态字节码进行修改;当测试完成后,生成测试报告,并将测试报告流式传输至测试案例库托管模块;测试案例库托管模块,用于存储测试案例,并在接收到测试报告后,通过可视化操作界面进行展示。
Description
技术领域
本发明涉及自动化测试技术领域,尤指一种基于字节码增强技术的动态单元测试系统及方法。
背景技术
目前针对Java的主流Mock工具有Mockito,Spock,PowerMock,JMockit等,然而这些工具存在以下问题:Mockito与Spock均基于动态代理实现,但是不能Mock私有/静态和构造方法,并且使用复杂,学习成本高;PowerMock是基于自定义类加载器进行实现,虽然可以对私有方法进行Mock,但同样存在易用性低的问题,不利于开发人员使用;JMockit基于运行时字节码修改实现,无法针对Java构造方法进行Mock,并且对IDE支持性较低。
综上所述,目前Java开发测试过程中采用的Mock工具,具有无法Mock私有/静态和构造方法,Mock最小级别限于类,使用成本高,动态执行效率低等问题,大大降级项目开发速度与测试效率,因此,亟需一种可以克服上述缺陷的动态单元测试方案。
发明内容
为解决现有技术存在的问题,本发明提出了一种基于字节码增强技术的动态单元测试系统及方法。本发明基于字节码增强技术,实现方法级别Mock,针对所有方法均可进行低侵入性Mock实现。其中,字节码增强技术具备运行时动态优化特性,针对运行态字节码修改,具备高度灵活性。方法级Mock,实现Mock方法定义与单元测试用例解耦,可建立独立管理的可复用测试用例库,复用性高,大大提升项目实施效率。基于目前开发者Mock编写习惯,可以定制封装易用性高的调用API,解决当前使用难,学习成本高等缺点。
在本发明实施例的第一方面,提出了一种基于字节码增强技术的动态单元测试系统,该系统包括:源码管理模块、Mock源码测试模块及测试案例库托管模块;其中,
所述源码管理模块,用于建立Maven离线中央仓库,对Mock工程的源码进行版本管理;
所述Mock源码测试模块,用于通过Pom文件的配置方式,使用Maven工具对目标工程进行构建,将源码嵌入目标工程中;
从测试案例库托管模块拉取测试案例,并启动测试;在测试过程中,根据源码及测试案例,对目标工程进行Mock测试操作,并根据字节码增强对运行态字节码进行修改;当测试完成后,生成测试报告,并将所述测试报告流式传输至测试案例库托管模块;
所述测试案例库托管模块,用于存储测试案例,并在接收到测试报告后,通过可视化操作界面进行展示。
进一步的,所述源码管理模块具体用于:
在Maven库中建立源码坐标及源码快照信息点,供Mock工程通过Pom文件引入构建。
进一步的,所述Mock源码测试模块包括:
嵌入代理端单元,用于提供低侵入代码集成,提供Mock测试功能;
Maven插件单元,用于联合Maven工具使用,进行工程注入与构建;
代码预处理编译单元,用于提供字节码增强,运行态动态注入测试代码,辅助测试;
依赖聚合单元,用于辅助Maven工具进行工程依赖子组件一次性注入;
案例库通讯单元,用于从测试案例库托管模块拉取测试案例;
测试报告生成单元,用于生成测试报告,并向测试案例库托管模块推送所述测试报告。
进一步的,所述Mock源码测试模块具体用于:
由开发人员通过Pom文件的配置方式,使用Maven工具对目标工程进行构建;其中,利用Maven离线中央仓库,根据依赖聚合单元及Maven插件单元,将代码嵌入目标工程中;
在测试过程中,通过代码预处理编译单元,依据源码及案例库通讯单元拉取的测试案例,驱动嵌入代理端单元,对目标工程进行方法级别的Mock测试操作,并根据字节码增强对运行态字节码进行修改;
当测试完成后,启动测试报告生成单元,生成测试报告,并通过案例库通讯单元,将测试报告流式传输至测试案例库托管模块。
进一步的,所述Mock源码测试模块还包括:
公共基础单元,用于提供Mock注解解析与工具类库;
源码仓库锚点集合单元,用于提供子组件的公共父类Pom文件;
文档说明单元,用于存储项目使用文档说明,在测试过程中按照项目使用文档说明对制品进行规范化处理。
进一步的,所述测试案例库托管模块包括:
数据存储单元,用于按照Mock工程输出制品标准化要求,托管开发人员编写的测试案例;
可视化单元,用于向开发人员提供可视化操作界面;
通讯单元,用于提供文件拉取接口,供Mock源码测试模块动态调取测试案例,还用于提供文件推送接口,支持Mock源码测试模块回传测试结果的文件。
进一步的,所述测试案例库托管模块具体用于:
通过通讯单元与Mock源码测试模块进行通讯,支持Mock源码测试模块的拉取模式与主动推送模式;其中,在拉取模式下,向Mock源码测试模块提供测试案例;在主动推送模式下,接收Mock源码测试模块推送的测试报告,写入数据存储单元;
通过可视化操作界面,向开发人员展示测试案例及测试结果,并根据输入的操作指令对数据存储单元进行读写处理。
在本发明实施例的第二方面,提出了一种基于字节码增强技术的动态单元测试方法,该方法包括:
设置源码管理模块,建立Maven离线中央仓库,对Mock工程的源码进行版本管理;
设置Mock源码测试模块,通过Pom文件的配置方式,使用Maven工具对目标工程进行构建,将源码嵌入目标工程中;
从测试案例库托管模块拉取测试案例,并启动测试;
在测试过程中,根据源码及测试案例,对目标工程进行Mock测试操作,并根据字节码增强对运行态字节码进行修改;
当测试完成后,生成测试报告,并将所述测试报告流式传输至测试案例库托管模块;
设置测试案例库托管模块,存储测试案例,并在接收到测试报告后,通过可视化操作界面进行展示。
在本发明实施例的第三方面,提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现基于字节码增强技术的动态单元测试方法。
在本发明实施例的第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现基于字节码增强技术的动态单元测试方法。
本发明提出的基于字节码增强技术的动态单元测试系统及方法通过字节码增强技术,能够实现对运行态字节码的修改,降低Mock级别最小限制,聚焦单个方法级别Mock,将Mock方法定义与单元测试用例解耦,大幅度提高Mock方法可复用性,编写单元测试用例过程更加高效独立;对Mock方法定义进行集中管理,提升生命周期管理程度,针对开发者的Mock编写习惯,建立可复用的,统一驱动及管理的动态单元测试系统,使用成本低,动态执行效率高,易用性高,有效提高项目开发速度与测试效率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明一实施例的基于字节码增强技术的动态单元测试系统架构示意图。
图2是本发明一实施例的Mock源码测试模块的详细架构示意图。
图3是本发明另一实施例的所述Mock源码测试模块的架构示意图。
图4是本发明一实施例的测试案例库托管模块的架构示意图。
图5是本发明一具体实施例的基于字节码增强技术的动态单元测试系统的架构关系示意图。
图6是本发明一实施例的基于字节码增强技术的动态单元测试方法流程示意图。
图7是本发明一实施例的计算机设备结构示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种基于字节码增强技术的动态单元测试系统及方法,涉及自动化测试技术领域。本发明基于字节码增强技术,实现方法级别Mock,针对所有方法均可进行低侵入性Mock实现。其中,字节码增强技术具备运行时动态优化特性,针对运行态字节码修改,具备高度灵活性。方法级Mock,实现Mock方法定义与单元测试用例解耦,可建立独立管理的可复用测试用例库,复用性高,大大提升项目实施效率。基于目前开发者Mock编写习惯,可以定制封装易用性高的调用API,解决当前使用难,学习成本高等缺点。
在本发明实施例中,需要说明的术语有:
字节码:包含执行程序,由一序列op代码/数据对组成的二进制文件,是一种中间码。
Mock:在测试过程中,对于某些不易构造或不易获取的对象,使用一个虚拟的对象创建以便测试的测试方法。
Maven:目前最流行的java项目构建系统,可通过描述信息来管理项目构建,报告和文档的软件项目管理工具。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
图1是本发明一实施例的基于字节码增强技术的动态单元测试系统架构示意图。如图1所示,该系统包括:
源码管理模块110、Mock源码测试模块120及测试案例库托管模块130;其中,
所述源码管理模块110,用于建立Maven离线中央仓库,对Mock工程的源码进行版本管理;
所述Mock源码测试模块120,用于通过Pom文件的配置方式,使用Maven工具对目标工程进行构建,将源码嵌入目标工程中;
从测试案例库托管模块130拉取测试案例,并启动测试;在测试过程中,根据源码及测试案例,对目标工程进行Mock测试操作,并根据字节码增强对运行态字节码进行修改;当测试完成后,生成测试报告,并将所述测试报告流式传输至测试案例库托管模块130;
所述测试案例库托管模块130,用于存储测试案例,并在接收到测试报告后,通过可视化操作界面进行展示。
为了对上述基于字节码增强技术的动态单元测试方法进行更为清楚的解释,下面结合每一步骤来进行详细说明。
源码管理模块110具体用于:
在Maven库中建立源码坐标及源码快照信息点,供Mock工程通过Pom文件引入构建。
参考图2,为本发明一实施例的Mock源码测试模块的详细架构示意图。如图2所示,Mock源码测试模块120包括:
嵌入代理端单元121,用于提供低侵入代码集成,提供Mock测试功能;
Maven插件单元122,用于联合Maven工具使用,进行工程注入与构建;
代码预处理编译单元123,用于提供字节码增强,运行态动态注入测试代码,辅助测试;
依赖聚合单元124,用于辅助Maven工具进行工程依赖子组件一次性注入;
案例库通讯单元125,用于从测试案例库托管模块拉取测试案例;
测试报告生成单元126,用于生成测试报告,并向测试案例库托管模块推送所述测试报告。
Mock源码测试模块120具体用于:
由开发人员通过Pom文件的配置方式,使用Maven工具对目标工程进行构建;其中,利用Maven离线中央仓库,根据依赖聚合单元及Maven插件单元,将代码嵌入目标工程中;
在测试过程中,通过代码预处理编译单元,依据源码及案例库通讯单元拉取的测试案例,驱动嵌入代理端单元,对目标工程进行方法级别的Mock测试操作,并根据字节码增强对运行态字节码进行修改;
当测试完成后,启动测试报告生成单元,生成测试报告,并通过案例库通讯单元,将测试报告流式传输至测试案例库托管模块。
进一步的,参考图3,为本发明另一实施例的所述Mock源码测试模块的架构示意图。如图3所示,Mock源码测试模块120还包括:
公共基础单元127,用于提供Mock注解解析与工具类库;
源码仓库锚点集合单元128,用于提供子组件的公共父类Pom文件;
文档说明单元129,用于存储项目使用文档说明,在测试过程中按照项目使用文档说明对制品进行规范化处理。
参考图4,为本发明一实施例的测试案例库托管模块的架构示意图。如图4所示,测试案例库托管模块130包括:
数据存储单元131,用于按照Mock工程输出制品标准化要求,托管开发人员编写的测试案例;
可视化单元132,用于向开发人员提供可视化操作界面;
通讯单元133,用于提供文件拉取接口,供Mock源码测试模块动态调取测试案例,还用于提供文件推送接口,支持Mock源码测试模块回传测试结果的文件。
测试案例库托管模块130具体用于:
通过通讯单元与Mock源码测试模块进行通讯,支持Mock源码测试模块的拉取模式与主动推送模式;其中,在拉取模式下,向Mock源码测试模块提供测试案例;在主动推送模式下,接收Mock源码测试模块推送的测试报告,写入数据存储单元;
通过可视化操作界面,向开发人员展示测试案例及测试结果,并根据输入的操作指令对数据存储单元进行读写处理。
为了对上述基于字节码增强技术的动态单元测试系统进行更为清楚的解释,下面结合一个具体的实施例来进行说明,然而值得注意的是该实施例仅是为了更好地说明本发明,并不构成对本发明不当的限定。
参考图5,为本发明一具体实施例的基于字节码增强技术的动态单元测试系统的架构关系示意图。
如图5所示,在该系统中,项目工程源码模块主要用于:
建立Maven离线中央仓库,负责对Mock工程源码进行版本管理,在Maven库中建立源码坐标,源码快照Snapshot等信息点,以供工程通过Pom文件引入构建。
Mock源码核心模块,具备以下核心功能组件:
公共基础单元,提供Mock注解解析与工具类库。
嵌入代理端单元,提供低侵入代码集成,提供Mock测试功能。
Maven插件单元,与Maven工具联合使用,便于工程注入与构建。
代码预处理编译单元(核心组件),提供字节码增强,运行态动态注入测试代理代码块,辅助测试实现。
源码仓库锚点集合单元,提供各子组件公共父类Pom文件。
依赖聚合单元,辅助Maven工具完成工程依赖子组件一次性注入。
demo文档单元,项目使用文档说明,开发规范化制品。
案例库通讯单元,执行测试前,向测试案例库托管模块主动拉取测试案例。
测试报告生成单元,具备I/O高性能,测试完成后,生成临时测试报告,并向测试案例库托管模块推送结果。
操作人员通过Pom文件配置方式,使用Maven工具对工程进行构建,Maven离线中央仓库根据Mock源码核心模块中的依赖聚合单元及Maven插件单元,将Mock源码核心模块中所有代码嵌入目标工程中。
启动测试后,代码预处理编译单元,依据源码及案例库通讯单元拉取来的测试案例,驱动嵌入代理端单元,对目标工程进行方法级别的Mock测试操作,并提供运行态修改特性;其中,集成实现了字节码增强技术,依据本地Naive字节进行实现;当测试完成后,启动测试报告生成单元,并通过案例库通讯单元,将测试报告流式传输至测试案例库托管模块中。
测试案例库托管模块,具备以下核心功能组件:
数据存储单元,针对Mock工程输出制品标准化要求,托管开发人员编写的案例,具备数据库增删改查功能。
可视化单元,向操作人员提供可视化H5界面,提供操作易用性。
通讯单元,具备以下两个功能:提供文件拉取接口,供Mock源码核心模块动态调取;提供文件推送接口,支持Mock源码核心模块回传测试结果文件。
通讯单元与Mock源码核心模块进行通讯,支持Mock源码核心模块的拉取模式与主动推送模式,接收到Mock源码核心模块推送的测试报告后,向数据存储单元进行写入;可视化单元部署了可视化操作H5界面,向开发测试人员提供维护测试案例,查看测试结果的功能,其同样具备对数据存储单元的读写功能。
应当注意,尽管在上文详细描述中提及了基于字节码增强技术的动态单元测试系统的若干模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
在介绍了本发明示例性实施方式的系统之后,接下来,参考图6对本发明示例性实施方式的基于字节码增强技术的动态单元测试方法进行介绍。
基于字节码增强技术的动态单元测试方法的实施可以参见上述系统的实施,重复之处不再赘述。
基于同一发明构思,本发明还提出了一种基于字节码增强技术的动态单元测试方法,如图6所示,该方法包括:
S601,设置源码管理模块,建立Maven离线中央仓库,对Mock工程的源码进行版本管理;
S602,设置Mock源码测试模块,通过Pom文件的配置方式,使用Maven工具对目标工程进行构建,将源码嵌入目标工程中;
S603,从测试案例库托管模块拉取测试案例,并启动测试;
S604,在测试过程中,根据源码及测试案例,对目标工程进行Mock测试操作,并根据字节码增强对运行态字节码进行修改;
S605,当测试完成后,生成测试报告,并将所述测试报告流式传输至测试案例库托管模块;
S606,设置测试案例库托管模块,存储测试案例,并在接收到测试报告后,通过可视化操作界面进行展示。
需要说明的是,尽管在上述实施例及附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
基于前述发明构思,如图7所示,本发明还提出了一种计算机设备700,包括存储器710、处理器720及存储在存储器710上并可在处理器720上运行的计算机程序730,所述处理器720执行所述计算机程序730时实现前述基于字节码增强技术的动态单元测试方法。
基于前述发明构思,本发明提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现前述基于字节码增强技术的动态单元测试方法。
本发明提出的基于字节码增强技术的动态单元测试系统及方法通过字节码增强技术,能够实现对运行态字节码的修改,降低Mock级别最小限制,聚焦单个方法级别Mock,将Mock方法定义与单元测试用例解耦,大幅度提高Mock方法可复用性,编写单元测试用例过程更加高效独立;对Mock方法定义进行集中管理,提升生命周期管理程度,针对开发者的Mock编写习惯,建立可复用的,统一驱动及管理的动态单元测试系统,使用成本低,动态执行效率高,易用性高,有效提高项目开发速度与测试效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种基于字节码增强技术的动态单元测试系统,其特征在于,该系统包括:源码管理模块、Mock源码测试模块及测试案例库托管模块;其中,
所述源码管理模块,用于建立Maven离线中央仓库,对Mock工程的源码进行版本管理;
所述Mock源码测试模块,用于通过Pom文件的配置方式,使用Maven工具对目标工程进行构建,将源码嵌入目标工程中;
从测试案例库托管模块拉取测试案例,并启动测试;在测试过程中,根据源码及测试案例,对目标工程进行Mock测试操作,并根据字节码增强对运行态字节码进行修改;当测试完成后,生成测试报告,并将所述测试报告流式传输至测试案例库托管模块;
所述测试案例库托管模块,用于存储测试案例,并在接收到测试报告后,通过可视化操作界面进行展示。
2.根据权利要求1所述的基于字节码增强技术的动态单元测试系统,其特征在于,所述源码管理模块具体用于:
在Maven库中建立源码坐标及源码快照信息点,供Mock工程通过Pom文件引入构建。
3.根据权利要求1所述的基于字节码增强技术的动态单元测试系统,其特征在于,所述Mock源码测试模块包括:
嵌入代理端单元,用于提供低侵入代码集成,提供Mock测试功能;
Maven插件单元,用于联合Maven工具使用,进行工程注入与构建;
代码预处理编译单元,用于提供字节码增强,运行态动态注入测试代码,辅助测试;
依赖聚合单元,用于辅助Maven工具进行工程依赖子组件一次性注入;
案例库通讯单元,用于从测试案例库托管模块拉取测试案例;
测试报告生成单元,用于生成测试报告,并向测试案例库托管模块推送所述测试报告。
4.根据权利要求3所述的基于字节码增强技术的动态单元测试系统,其特征在于,所述Mock源码测试模块具体用于:
由开发人员通过Pom文件的配置方式,使用Maven工具对目标工程进行构建;其中,利用Maven离线中央仓库,根据依赖聚合单元及Maven插件单元,将代码嵌入目标工程中;
在测试过程中,通过代码预处理编译单元,依据源码及案例库通讯单元拉取的测试案例,驱动嵌入代理端单元,对目标工程进行方法级别的Mock测试操作,并根据字节码增强对运行态字节码进行修改;
当测试完成后,启动测试报告生成单元,生成测试报告,并通过案例库通讯单元,将测试报告流式传输至测试案例库托管模块。
5.根据权利要求3或4所述的基于字节码增强技术的动态单元测试系统,其特征在于,所述Mock源码测试模块还包括:
公共基础单元,用于提供Mock注解解析与工具类库;
源码仓库锚点集合单元,用于提供子组件的公共父类Pom文件;
文档说明单元,用于存储项目使用文档说明,在测试过程中按照项目使用文档说明对制品进行规范化处理。
6.根据权利要求1所述的基于字节码增强技术的动态单元测试系统,其特征在于,所述测试案例库托管模块包括:
数据存储单元,用于按照Mock工程输出制品标准化要求,托管开发人员编写的测试案例;
可视化单元,用于向开发人员提供可视化操作界面;
通讯单元,用于提供文件拉取接口,供Mock源码测试模块动态调取测试案例,还用于提供文件推送接口,支持Mock源码测试模块回传测试结果的文件。
7.根据权利要求6所述的基于字节码增强技术的动态单元测试系统,其特征在于,所述测试案例库托管模块具体用于:
通过通讯单元与Mock源码测试模块进行通讯,支持Mock源码测试模块的拉取模式与主动推送模式;其中,在拉取模式下,向Mock源码测试模块提供测试案例;在主动推送模式下,接收Mock源码测试模块推送的测试报告,写入数据存储单元;
通过可视化操作界面,向开发人员展示测试案例及测试结果,并根据输入的操作指令对数据存储单元进行读写处理。
8.一种基于字节码增强技术的动态单元测试方法,其特征在于,该方法包括:
设置源码管理模块,建立Maven离线中央仓库,对Mock工程的源码进行版本管理;
设置Mock源码测试模块,通过Pom文件的配置方式,使用Maven工具对目标工程进行构建,将源码嵌入目标工程中;
从测试案例库托管模块拉取测试案例,并启动测试;
在测试过程中,根据源码及测试案例,对目标工程进行Mock测试操作,并根据字节码增强对运行态字节码进行修改;
当测试完成后,生成测试报告,并将所述测试报告流式传输至测试案例库托管模块;
设置测试案例库托管模块,存储测试案例,并在接收到测试报告后,通过可视化操作界面进行展示。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求8所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求8所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110848016.8A CN113468072A (zh) | 2021-07-27 | 2021-07-27 | 基于字节码增强技术的动态单元测试系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110848016.8A CN113468072A (zh) | 2021-07-27 | 2021-07-27 | 基于字节码增强技术的动态单元测试系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113468072A true CN113468072A (zh) | 2021-10-01 |
Family
ID=77882525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110848016.8A Pending CN113468072A (zh) | 2021-07-27 | 2021-07-27 | 基于字节码增强技术的动态单元测试系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113468072A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104809071A (zh) * | 2015-05-14 | 2015-07-29 | 北京润科通用技术有限公司 | 一种代码测试方法及装置 |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN110046099A (zh) * | 2019-04-11 | 2019-07-23 | 艾伯资讯(深圳)有限公司 | 智能化软件测试系统及方法 |
-
2021
- 2021-07-27 CN CN202110848016.8A patent/CN113468072A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104809071A (zh) * | 2015-05-14 | 2015-07-29 | 北京润科通用技术有限公司 | 一种代码测试方法及装置 |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN110046099A (zh) * | 2019-04-11 | 2019-07-23 | 艾伯资讯(深圳)有限公司 | 智能化软件测试系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096338B (zh) | 智能合约执行方法、装置、设备及介质 | |
EP3377968B1 (en) | Dynamic update of an application in compilation and deployment | |
EP3213216B1 (en) | Diagnostic workflow for production debugging | |
US8707263B2 (en) | Using a DSL for calling APIS to test software | |
CN102246150B (zh) | 转换用户脚本代码来进行调试 | |
US8429619B2 (en) | Executable high-level trace file generation system | |
US8239823B2 (en) | Generating libraries for reflection without project compilation | |
US20050223360A1 (en) | System and method for providing a generic user interface testing framework | |
US20080313208A1 (en) | Apparatus, system, and method for automated context-sensitive message organization | |
JPH08512152A (ja) | インクリメンタル生成システム | |
US20100162217A1 (en) | Debugging System Using Static Analysis | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
CN102270128A (zh) | 库一致性检查器 | |
US10496379B2 (en) | Facilitated production of code for software testing | |
US20050229161A1 (en) | Generic user interface testing framework with load-time libraries | |
CN110795091B (zh) | 一种模块化路由解耦方法、存储介质、电子设备及系统 | |
CN112506793A (zh) | 嵌入式软件单元测试方法、系统、可读介质及电子设备 | |
CN109284222B (zh) | 软件单元、数据处理系统中的项目测试方法、装置及设备 | |
US20050228644A1 (en) | Generic user interface testing framework with rules-based wizard | |
CN113468072A (zh) | 基于字节码增强技术的动态单元测试系统及方法 | |
EP3619612B1 (en) | Temporary de-optimization of target functions in a cloud debugger | |
US20120330878A1 (en) | Conventions for inferring data models | |
US20190310933A1 (en) | Externalized definition and reuse of mocked transactions | |
Blunk et al. | Modelling a debugger for an imperative voice control language | |
García-Díaz et al. | MCTest: towards an improvement of match algorithms for models |
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 |