一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种热加载远程测试方法、系统、设备及存储介质与流程

2022-03-15 08:01:43 来源:中国专利 TAG:
一种热加载远程测试方法、系统、设备及存储介质与流程

本发明涉及自动化测试技术领域,具体涉及一种热加载远程测试方法、系统、设备及存储介质。

背景技术

随着微服务等架构的广泛应用,代码结构复杂性提高,从代码层进行测试变得越来越重要。在软件开发和测试环节,都需要编写大量的测试脚本,用于单元测试和接口测试。

单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件下某个特定函数的行为。接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

Junit是用于编写和运行可重复的自动化测试的开源测试框架,在Java语言环境中得到广泛使用。但是Junit等类似测试工具在实际使用存在启动慢的困难。为运行测试脚本,每次新增或修改测试脚本,都要重新启动JVM。例如,启动一次Spring容器,加载完成至少需要几十秒,如果业务组件多的话,启动时间需要几分钟。频繁修改和执行测试脚本,需要频繁重启容器,造成大量等待时间,严重影响工作效率。因此,需要提供一种热加载远程测试方法、系统、设备及存储介质。



技术实现要素:

鉴于以上现有技术的缺点,本发明的目的在于提供一种热加载远程测试方法、系统、设备及存储介质,以改善现有技术中修改完测试脚本后,需要重启JVM的问题。

为实现上述目的及其它相关目的,本发明提一种热加载远程测试方法,应用于客户端的热编译测试,包括以下过程:

客户端响应于测试需求,接收IDE传送的测试脚本;

客户端对测试脚本进行编译,生成字节码文件,并将所述字节码文件发送至服务端,调用服务端接口执行所述字节码文件对应的测试内容;

客户端接收服务端回传的测试结果,将测试结果回传至IDE。

在本发明一实施例中,所述所述接收服务端回传的测试结果,将测试结果回传至IDE,包括以下过程:

客户端响应于服务端发出的连接请求,与服务端完成三次握手后,接收服务端回传的测试结果;

客户端将所述测试结果回传至所述IDE。

在本发明一实施例中,所述客户端和所述服务端通过通信协议相连接。

在本发明一实施例中,所述所述通信协议为TCP/IP协议。

在本发明一实施例中,所述测试需求为Java注解。

在本发明一实施例中,所述与服务端完成三次握手,包括以下过程:

所述客户端向所述服务端发送同步报文;

所述服务端接收到所述同步报文后,向所述客户端回应同步确认报文,其中,所述同步确认报文与所述同步报文相对应;

所述客户端接收到所述同步确认报文后,向所述服务端回应确认报文,连接建立,其中,所述确认报文与所述同步确认报文相对应。

在本发明一实施例中,提供一种热加载远程测试方法,应用于服务端的热加载测试,包括以下过程:

服务端接收客户端传送的字节码文件,并将所述字节码文件转换为对应的测试对象,发送至执行器进行执行;

服务端创建与本地相同的Junit执行器,获取Spring上下文,对测试对象进行测试,并将测试结果传送至所述客户端。

在本发明一实施例中,还提供热加载远程测试系统,包括测试脚本接收单元、测试脚本编译单元和测试结果回传单元。

上述测试脚本接收单元用于响应于客户端测试需求,接收IDE传送的测试脚本;

上述测试脚本编译单元用于客户端对测试脚本进行编译,生成字节码文件,并将所述字节码文件发送至服务端,调用服务端接口执行所述字节码文件对应的测试内容;

上述测试结果回传单元用于客户端接收服务端回传的测试结果,将测试结果回传至IDE。

在本发明一实施例中,还提供一种热加载远程测试设备,包括处理器,所述处理器与存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现上述任一项所述的热加载远程测试方法。

在本发明一实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法。

综上所述,本发明中,客户端接收到IDE传送的测试脚本后,进行编译得到字节码文件。然后将字节码文件发送至服务端进行测试,测试完成后,服务端将测试结果通过通信协议回传至客户端,客户端将此结果发送至IDE。针对于单元测试和接口测试的实际困难,实现了测试代码的热部署,通过在JVM中执行字节码,使得修改或新增测试脚本后不必再次重启JVM,节约了测试的运行时间,有效提高了测试效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1显示为本发明一实施例中热加载远程测试方法的连接示意图;

图2显示为本发明一实施例中客户端热加载远程测试方法的流程示意图;

图3显示为本发明一实施例中步骤S3的流程示意图;

图4显示为本发明一实施例中三次握手的流程示意图;

图5显示为本发明一实施例中服务端热加载远程测试方法的流程示意图;

图6显示为本发明一实施例中热加载远程测试系统的原理结构示意图。

元件标号说明:

1、热加载远程测试系统;11、测试脚本接收单元;12、测试脚本编译单元;13、测试结果回传单元。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其它优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。还应当理解,本发明实施例中使用的术语是为了描述特定的具体实施方案,而不是为了限制本发明的保护范围。下列实施例中未注明具体条件的试验方法,通常按照常规条件,或者按照各制造商所建议的条件。

请参阅图1至图6。须知,本说明书附图所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容所能涵盖的范围内。同时,本说明书中所引用的如“上”、“下”、“左”、“右”、“中间”及“一”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。

当实施例给出数值范围时,应理解,除非本发明另有说明,每个数值范围的两个端点以及两个端点之间任何一个数值均可选用。除非另外定义,本发明中使用的所有技术和科学术语与本技术领域的技术人员对现有技术的掌握及本发明的记载,还可以使用与本发明实施例中所述的方法、设备、材料相似或等同的现有技术的任何方法、设备和材料来实现本发明。

请参阅图1和图2,图1显示为本发明一实施例中热加载远程测试方法的连接示意图,图2显示为本发明一实施例中客户端热加载远程测试方法的流程示意图。本发明提供一种热加载远程测试方法。通过将客户端和服务端分别设置于不同的计算机上,客户端接收到IDE(Integrated Development Environment,集成开发环境)传送的测试脚本后,进行编译得到字节码文件。然后将字节码文件发送至服务端进行测试,测试完成后,服务端将测试结果通过通信协议回传至客户端,客户端将此结果发送至IDE。针对于单元测试和接口测试的实际困难,实现了测试代码的热部署,通过在JVM(Java Virtual Machine,Java虚拟机)中执行字节码,使得修改或新增测试脚本后不必再次重启JVM,节约了测试的运行时间,有效提高了测试效率。

请参阅图1和图2,在本发明一实施例中,提供一种热加载远程测试方法,应用于客户端的热编译测试,包括以下过程:

S1、客户端响应于测试需求,接收IDE传送的测试脚本;

S2、客户端对测试脚本进行编译,生成字节码文件,并将字节码文件发送至服务端,调用服务端接口执行字节码文件对应的测试内容;

S3、客户端接收服务端回传的测试结果,将测试结果回传至IDE。

用户根据不同单元测试或接口测试的需求,在IDE上编写完测试脚本后,发送给客户端进行编译。客户端获取到用户在IDE中选择的测试脚本和方法信息后,通过读入测试脚本的源代码,进行语法检查后,编译成一种字节码文件,使得对应的测试脚本可在JVM上执行。编译完成后,客户端将字节码文件传送给位于服务端,通过调用对应的服务端接口执行测试脚本。当服务端测试完成后,向客户端传送测试结果,其中,测试结果包括执行结果和错误信息。客户端再将测试结果返回给IDE,实现了测试代码的热编译和热加载,通过避免重启JVM,提升了工作效率。客户端最终打包成一个JAR(Java Archive File,Java归档)包,开发测试人员可以把这个JAR包加入项目依赖中。由于只需要编译脚本代码,无需启动JVM,因此执行效率非常快,能够节省大量的执行时间。其中,Java语言是常用的一种编程语言,Java程序运行在Java虚拟机JVM上。JVM是一个虚构出来的计算机,可在实际的计算机上模拟各种计算机的功能,JVM有自己完善的硬件结构,例如处理器、堆栈和寄存器等,还具有相应的指令系统。因此可以为Java程序提供内存管理及运行时环境。IDE是一种集成开发环境,用于提供程序开发环境的应用程序,可包括代码编辑器、编译器、调试器等工具,是一种集成了代码编写功能、分析功能、编译功能、调试功能于一体的开发环境。

需要说明的是,本实施例中的客户端和服务端分别属于两个不同的计算机,从而可有效改善每次修改或新增测试脚本时,重启JVM导致时间浪费较多的问题。

在本发明一实施例中,测试需求为Java注解。具体地,客户端包含有代码接口,其提供一个Java注解,只要用户在测试脚本中引用对应的注解,通过代码接口,客户端就能感知到测试脚本需要在服务端运行。从而无需做其他改造即可执行对应测试,有效提高了执行测试的效率。

在本发明一实施例中,客户端和服务端通过通信协议相连接。为实现测试脚本的远程执行,需要设计通信协议和对应的通信服务,将运行参数和返回值等信息通过网络传递,从而实现客户端和服务端的互联互通。这些信息包括但不限于字节码路径、测试类名、测试方法名、测试结果、失败信息、用例描述。

在本发明一实施例中,通信协议为TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)协议。这是一种面向连接的运输层协议,由于在传输数据前,会有三次握手来建立连接,且在数据传递过程中,会有确认、重传、窗口、拥塞控制机制,因此具有良好的可靠性和稳定性。在数据传输完成后,会断开连接从而可有效地节约系统资源。

请参阅图1和图3,图3显示为本发明一实施例中步骤S3的流程示意图。在本发明一实施例中,步骤S3包括以下过程:

S31、客户端响应于服务端发出的连接请求,与服务端完成三次握手后,接收服务端回传的测试结果:

S32、客户端将测试结果回传至IDE。

客户端接收到服务端发送的SYN(Synchronize Sequence Numbers,同步序列编号)报文后,通过与服务端之间进行三次握手,实现与服务端之间的连接,从而可接收服务端传送的测试结果,并将测试结果回传至IDE。具体地,请参阅图1和图4,图4显示为本发明一实施例中三次握手的流程示意图。在本发明一实施例中,与服务端完成三次握手包括以下过程:

S311、客户端向服务端发送同步报文;

S312、服务端接收到同步报文后,向客户端回应同步确认报文,其中,同步确认报文与同步报文相对应;

S313、客户端接收到同步确认报文后,向服务端回应确认报文,连接建立,其中,确认报文与同步确认报文相对应。

客户端完成对测试脚本的编译后,需要与服务端之间建立通信连接,从而将编译后的字节码传送至服务端进行测试。首先,进行第一次握手:客户端向服务端发送同步报文,称为SYN报文。然后,进行第二次握手:服务端收到同步报文后,会向客户端发送同步确认报文,表明已收到客户端的连接请求。最后,进行第三次握手:客户端收到同步确认报文后,向服务端发送确认报文,此时客户端和服务端认为连接已经建立,从而开始进行数据传输。通过这种三次握手的过程,可有效防止已经失效的请求报文突然再次传送到服务端,产生一系列的运行问题,提升了传输效率。

请参阅图5,图5显示为本发明一实施例中服务端热加载远程测试方法的流程示意图。在本发明一实施例中,还提供一种热加载远程测试方法,应用于服务端的热加载测试,包括以下过程:

S100、服务端接收客户端传送的字节码文件,并将字节码文件转换为对应的测试对象,发送至执行器进行执行;

S200、服务端创建与本地相同的Junit执行器,获取Spring上下文,对测试对象进行测试,并将测试结果传送至客户端。

三次握手过程完成后,服务端与客户端的连接建立,接收到客户端传送的字节码文件后,通过自定义的类加载器,动态加载字节码至JVM中,并通过执行器执行相应的测试工作。其中,为了达到与本地执行Junit一样的效果,远程执行服务端创建与本地一样的Junit执行器。通过获取Spring上下文,执行器可以创建脚本中需要的Spring对象,满足用户在测试脚本中调用Spring对象和方法的需求。从而实现了服务端与Spring的整合,支持远程执行Spring容器的bean和方法,满足采用Spring技术栈的项目的使用需求。服务端最终打包成一个JAR包,开发测试人员可以把这个JAR包加入项目依赖中,不需要修改任何业务代码。在测试阶段运行业务代码时,远程执行服务端会自动加载,启动通信服务,等待客户端连接。

上面方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本发明的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该发明的保护范围内。

请参阅图6,图6显示为本发明一实施例中热加载远程测试系统的原理结构示意图。该热加载远程测试系统1包括测试脚本接收单元11、测试脚本编译单元12和测试结果回传单元13。其中,测试脚本接收单元11用于客户端响应于测试需求,接收IDE传送的测试脚本。测试脚本编译单元12用于客户端对测试脚本进行编译,生成字节码文件,并将字节码文件发送至服务端,调用服务端接口执行字节码文件对应的测试内容。测试结果回传单元13用于客户端接收服务端回传的测试结果,将测试结果回传至IDE。

需要说明的是,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的模块引入,但这并不表明本实施例中不存在其它的模块。

此外,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本发明所提供的实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

本实施例还提出了一种热加载远程测试设备,该设备包括处理器和存储器,处理器和存储器耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时实现上述任务管理方法。处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件;所述存储器可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(Non-Volatile Memory),例如至少一个磁盘存储器。所述存储器可以为随机存取存储器(Random Access Memory,RAM)类型的内部存储器,所述处理器、存储器可以集成为一个或多个独立的电路或硬件,如:专用集成电路(Application Specific Integrated Circuit,ASIC)。需要说明的是,上述的存储器中的计算机程序可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。

本实施例还提出一种计算机可读的存储介质,所述存储介质存储有计算机指令,所述计算机指令用于使计算机执行上述的任务管理方法。存储介质可以是电子介质、磁介质、光介质、电磁介质、红外介质或半导体系统或传播介质。存储介质还可以包括半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘可以包括光盘-只读存储器(CD-ROM)、光盘-读/写(CD-RW)和DVD。

综上所述,本发明通过将客户端和服务端分别设置于不同的计算机上,客户端接收到测试脚本后,进行编译。将编译后的字节码文件传送至服务端进行测试,从而实现了测试代码的热编译和热部署,避免每次修改测试脚本需要重启JVM,导致测试效率低下的问题。此外,本发明可以支持远程执行Spring容器的的bean和方法,满足采用Spring技术栈的项目的使用需求,实现了测试服务端与Spring的整合。通过在服务端创建与本地相同的Junit执行器,实现了在IDE中执行时与传统方式体验一致的远程执行方式,支持选择用例、远程调试等功能,用户体验优秀。通过将服务端和客户端分别打包,可以随时嵌入至工程项目中,提供执行测试代码的能力,对业务代码无侵入。有效提高了测试效率。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献