CN111459801A - Rsf远程服务接口功能测试方法、模块、计算机设备和存储介质 - Google Patents
Rsf远程服务接口功能测试方法、模块、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111459801A CN111459801A CN202010158669.9A CN202010158669A CN111459801A CN 111459801 A CN111459801 A CN 111459801A CN 202010158669 A CN202010158669 A CN 202010158669A CN 111459801 A CN111459801 A CN 111459801A
- Authority
- CN
- China
- Prior art keywords
- contract
- service
- rsf
- service interface
- interface
- 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
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/3672—Test 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)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了一种RSF远程服务接口的功能测试方法、模块、计算机设备和存储介质。对于系统通用契约服务接口的测试,测试人员无需额外配置。对于自定义契约的服务接口测试,只需在最初配置目标Jar包的相关信息,通过Jar包的动态加载技术来实现契约的自动获取,动态调用技术进行服务方法的执行,即可达到随时随地测试最新接口逻辑的效果。统一定义入参为Json字符串,利用反射技术获得参数类型进行调用参数实例化。本发明实现了服务接口功能测试工具准备的自动化,减少了测试人员对开发人员的依赖和沟通成本。
Description
技术领域
本发明涉及服务接口的功能测试领域,具体是一种RSF远程服务接口的功能测试方法、测试桩模块、计算机设备和存储介质。
背景技术
目前,一般采用针对性的测试桩或者外部测试工具来测试真实运行环境中的服务接口的功能。
针对性的测试桩需要开发人员为每一个需要进行测试的服务接口编写与之相应的桩代码,这种情况不仅会额外占用开发人员的时间,同时随着服务接口数目的增加,大量的桩代码维护以及服务接口变动时间的桩代码修改也会变的越来越繁杂。
采用外部测试工具进行服务接口的测试实质上和服务使用方直接调用服务接口类似。外部测试工具需要依赖于服务接口的Jar包来加载服务接口。如果服务接口不是依赖于通用的接口模板,而是用户自己定制化的接口,那么无论是新增服务接口还是接口请求的任何变化都需要开发人员重新进行打包,并将最新的Jar包交与测试进行外部测试工具依赖Jar包的手动更新才能测试新的服务接口。不同场景下的测试数据模板也无法通过外部测试工具进行团队级的统一管理,使得每一位测试人员都需要维护一套自己的测试数据模板。这些都会大量消耗团队人员的时间与精力。
发明内容
本发明的目的在于提供一种RSF远程服务接口的功能测试方法及测试桩模块、计算机设备和存储介质,自动加载RSF接口变化以达到一经配置无需维护即可实现随时随地进行新增服务接口的测试,且针对接口修改执行最新接口逻辑的方法。
实现本发明目的的技术解决方案为:一种RSF远程服务接口的功能测试方法,包括以下步骤:
a.在RSF平台拉取可测试的服务接口列表;
b.选择要测试的服务接口,在RSF平台获取当前服务接口信息,包括服务接口的契约、服务的实现码、服务的执行方法信息三部分;
c.判断获取的契约是否为通用契约,若为通用契约,直接进入步骤e;若为自定义契约,则根据配置的服务提供方对外提供的RSF-Jar 包的坐标Group和Artifact到Maven平台拉取该Jar包列表,从列表选择要使用的某一版本的jar包,或者默认使用最新版本的jar包;
d.将目标版本的Jar包下载到本地文件夹;使用路径类加载器 URLClassLoader动态加载Jar包;然后利用类名加载的方式 Class.forName即契约名来获取契约信息;并根据服务的执行方法信息通过getMethod获得目标服务的执行方法Method;
e.接收传输的报文,进一步解析服务执行方法Method的参数;根据不同的参数类型采用不同的实例化方式获得参数实例;
f.使用RSF组件获取服务实例的ServiceLocator.getService方法通过契约及实现编码获取服务接口实例;并利用动态执行方式 Method.invoke动态调用该服务接口的执行方法,完成一次RSF远程服务接口测试。
本发明实施例中,步骤b中所述判断获取的契约是否为通用契约的方法为:通过比较服务实现的契约的包路径是否与通用契约的包路经相同,来判断获取的契约是否为通用契约。
本发明实施例中,步骤b中所述的通用契约无需jar包,其依赖包含在RSF组件中,且其执行方法及参数类型固定。
本发明实施例中,步骤d中所述服务的执行方法信息包括执行方法名和执行方法参数类型。
本发明实施例中,步骤e中所述根据不同的参数类型采用不同的实例化方式获得参数实例的方法为:原始数据类型采用固定的实例方法,非原始数据类型利用Json格式化。
一种RSF远程服务接口测试桩模块,采用以下步骤实现RSF远程服务接口的功能测试:
a.在RSF平台拉取可测试的服务接口列表;
b.选择要测试的服务接口,在RSF平台获取当前服务接口信息,包括服务接口的契约、服务的实现码、服务的执行方法信息三部分;
c.判断获取的契约是否为通用契约,若为通用契约,直接进入步骤e;若为自定义契约,则根据配置的服务提供方对外提供的RSF-Jar 包的坐标Group和Artifact到Maven平台拉取该Jar包列表,从列表选择要使用的某一版本的jar包,或者默认使用最新版本的jar包;
d.将目标版本的Jar包下载到本地文件夹;使用路径类加载器 URLClassLoader动态加载Jar包;然后利用类名加载的方式 Class.forName即契约名来获取契约信息;并根据服务的执行方法信息通过getMethod获得目标服务的执行方法Method;
e.接收传输的报文,进一步解析服务执行方法Method的参数;根据不同的参数类型采用不同的实例化方式获得参数实例;
f.使用RSF组件获取服务实例的ServiceLocator.getService方法通过契约及实现编码获取服务接口实例;并利用动态执行方式 Method.invoke动态调用该服务接口的执行方法,完成一次RSF远程服务接口测试。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现下述方法的步骤:
a.在RSF平台拉取可测试的服务接口列表;
b.选择要测试的服务接口,在RSF平台获取当前服务接口信息,包括服务接口的契约、服务的实现码、服务的执行方法信息三部分;
c.判断获取的契约是否为通用契约,若为通用契约,直接进入步骤e;若为自定义契约,则根据配置的服务提供方对外提供的RSF-Jar 包的坐标Group和Artifact到Maven平台拉取该Jar包列表,从列表选择要使用的某一版本的jar包,或者默认使用最新版本的jar包;
d.将目标版本的Jar包下载到本地文件夹;使用路径类加载器 URLClassLoader动态加载Jar包;然后利用类名加载的方式 Class.forName即契约名来获取契约信息;并根据服务的执行方法信息通过getMethod获得目标服务的执行方法Method;
e.接收传输的报文,进一步解析服务执行方法Method的参数;根据不同的参数类型采用不同的实例化方式获得参数实例;
f.使用RSF组件获取服务实例的ServiceLocator.getService方法通过契约及实现编码获取服务接口实例;并利用动态执行方式 Method.invoke动态调用该服务接口的执行方法,完成一次RSF远程服务接口测试。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现下述方法的步骤:
a.在RSF平台拉取可测试的服务接口列表;
b.选择要测试的服务接口,在RSF平台获取当前服务接口信息,包括服务接口的契约、服务的实现码、服务的执行方法信息三部分;
c.判断获取的契约是否为通用契约,若为通用契约,直接进入步骤e;若为自定义契约,则根据配置的服务提供方对外提供的RSF-Jar 包的坐标Group和Artifact到Maven平台拉取该Jar包列表,从列表选择要使用的某一版本的jar包,或者默认使用最新版本的jar包;
d.将目标版本的Jar包下载到本地文件夹;使用路径类加载器 URLClassLoader动态加载Jar包;然后利用类名加载的方式 Class.forName即契约名来获取契约信息;并根据服务的执行方法信息通过getMethod获得目标服务的执行方法Method;
e.接收传输的报文,进一步解析服务执行方法Method的参数;根据不同的参数类型采用不同的实例化方式获得参数实例;
f.使用RSF组件获取服务实例的ServiceLocator.getService方法通过契约及实现编码获取服务接口实例;并利用动态执行方式 Method.invoke动态调用该服务接口的执行方法,完成一次RSF远程服务接口测试。
本发明与现有技术相比,其显著优点:(1)测试RSF通用契约接口无需任何配置,测试自定义契约接口只需配置服务提供系统在 Maven平台上Jar包的信息,即可对RSF接口进行测试,之后服务接口的新增与修改均无需关注,测试桩会自动获取目标服务系统的最新接口列表已经动态更新接口结构的改变达到一配置即可随时随地测试最新接口的情况。(2)降低了测试人员进行测试工作对于开发人员的依赖性,节约了团队人员花费在测试工具准备阶段的时间和精力。 (3)测试桩附带的模板功能也能解决不同测试模板的统一管理,增加了测试数据格式的流通性,减少了沟通成本。
附图说明
图1是本发明RSF远程服务接口的功能测试方法的原理框图。
具体实施方式
本发明解决了传统测试桩需要为每个服务接口单独进行开发以及外部测试工具需要依赖服务接口jar包的弊端。
RSF远程服务框架可以通过服务契约(即服务接口实现的 interface,下同)及服务实现码获得服务接口的调用实例。基于此方式结合Jar包的动态加载技术以及Java反射技术实现动态获得目标版本的接口实例并进行调用的测试桩方案。
a.测试人员登录,测试桩到RSF平台拉取该人员可测试的服务接口列表之后展示给用户选择。
b.用户选择服务接口后,测试桩到RSF平台获取当前服务接口信息包括服务接口的契约,服务的实现码,服务的执行方法信息三个部分。
c.查看契约是否为通用契约(通用契约无需jar包,其依赖包含在RSF组件中,且其执行方法及参数类型固定),若为通用契约直接进入步骤e。若为自定义契约,则根据配置的服务提供方对外提供的 RSF-Jar包的坐标Group和Artifact到Maven平台拉取该Jar包列表供用户选择使用哪一个版本的jar包,不选择则默认使用最新版本的jar包。
d.将目标版本的Jar包下载到本地文件夹。使用路径类加载器URLClassLoader动态加载Jar包。之后利用类名加载的方式 Class.forName即契约名来获得契约。并根据服务的执行方法信息(执行方法名,执行方法参数类型)通过getMethod获得目标服务的执行方法Method。
e.接收到测试人员传的报文之后进一步详细解析服务执行方法Method的参数。根据不同的参数类型采用不同的实例化方式(原始数据类型采用固定的实例方法,非原始数据类型利用Json格式化) 获得参数实例。
f.使用RSF组件获取服务实例的 ServiceLocator.getService方法通过契约及实现编码来获得服务接口实例。并利用动态执行方式Method.invoke动态调用服务接口的执行方法,一次RSF远程调用完成。获得接口执行结果返回到前台展示。
本发明从技术上解决了RSF接口测试过程中接口变化或新增引起的对接口测试工具的额外人工维护工作。
对于系统通用契约服务接口的测试,测试人员无需额外配置。对于自定义契约的服务接口测试,只需在最初配置目标Jar包的相关信息,通过Jar包的动态加载技术来实现契约的自动获取,动态调用技术进行服务方法的执行,即可达到随时随地测试最新接口逻辑的效果。统一定义入参为Json字符串,利用反射技术获得参数类型进行调用参数实例化。
下面结合说明书附图和实施例对本发明作进一步说明。
以LspRsfService中的接收事件服务接口为例:
1.用户登录并选择事件服务接口。从RSF平台获取到该接口的契约为com.suning.lsp.rsf.intf.LspRsfService,实现码为LSP,执行方法为pushOcEvents(java.util.List)。
2.判断得该契约为非通用契约。获取配置中LSP系统的Maven 平台Jar包的Group为com.suning.logistics.lsp,Artifact为 lsp-rsf。拉取版本列表,选择1.1.469-SNAPSHOT版本,请求Maven 平台下载该Jar包到 /src/main/resources/rsf-jar/lsp-rsf-1.1.469-snapshot路径下。
3.通过URLClassLoader动态加载Jar包
//创建新的类加载器
File jarFile=new File(jarPath);
URL jarUrl=jarFile.toURI().toURL();
URLClassLoader newClassLoader=URLClassLoader.newInstance(new URL[]{jarUrl});
4.通过Class.forName获取契约信息,并利用反射技术获得执行方法信息
5.数据传输到后台,后台根据之前对该Method的解析获得此接口的入参数据格式为ParameterizedType型。将前台传入的Json 格式的字符串入参反序列化得到实际的入参数据:一个成员为 LspOcEvent实例的列表。
6.通过ServiceLocator.getService获取服务接口实例并使用Method的invoke动态调用该服务接口完成一次RSF远程服务接口测试。
Object t=ServiceLocator.getService(bean.getServiceClass(),bean.getImplCode());
result=mthBean.getMth().invoke(t,pArr);。
采用本发明的方案,开发人员不需要为服务接口的测试桩进行针对性开发或是为测试人员频繁的打包,也不需要关注服务改动对测试桩的影响。实现了服务接口功能测试工具准备的自动化。减少测试人员对开发人员的依赖,达到服务注册即可测。各个被测试系统的健康状况不会互相干扰功能测试。
Claims (10)
1.一种RSF远程服务接口的功能测试方法,其特征在于:RSF远程服务调用框架通过服务接口的契约、服务的实现编码获得服务接口的调用实例,结合Jar包的动态加载技术及Java反射技术动态获得目标版本的接口实例并进行调用。
2.根据权利要求1所述的RSF远程服务接口的功能测试方法,其特征在于,具体步骤如下:
a.在RSF平台拉取可测试的服务接口列表;
b.选择要测试的服务接口,在RSF平台获取当前服务接口信息,包括服务接口的契约、服务的实现编码、服务的执行方法信息三部分;
c.判断获取的契约是否为通用契约,若为通用契约,直接进入步骤e;若为自定义契约,则根据配置的服务提供方对外提供的RSF-Jar包的坐标到Maven平台拉取该Jar包列表,从列表选择要使用的版本的jar包;
d.将目标版本的Jar包下载到本地文件夹;使用路径类加载器动态加载Jar包;然后利用类名加载的方式即通过契约名来获取契约信息;并根据服务的执行方法信息通过反射技术获得目标服务的执行方法;
e.接收传输的报文后解析服务执行方法的参数;根据不同的参数类型采用不同的实例化方式获得参数实例;
f.使用RSF组件获取服务实例的方法通过契约及实现编码获取服务接口实例;并利用动态执行方式动态调用该服务接口的执行方法, 完成一次RSF远程调用,获得接口执行结果。
3.根据权利要求1所述的功能测试方法,其特征在于,步骤c中通过比较服务实现的契约的包路径是否与通用契约的包路经相同,来判断获取的契约是否为通用契约。
4.根据权利要求1所述的功能测试方法,其特征在于,步骤c中所述通用契约无需jar包,其依赖包含在RSF组件中,且其执行方法及参数类型固定。
5.根据权利要求1所述的功能测试方法,其特征在于:步骤c中如果不从Jar包列表中选择,则默认使用最新版本的jar包。
6.根据权利要求1所述的功能测试方法,其特征在于,步骤d中所述服务的执行方法信息包括执行方法名和执行方法参数类型。
7.根据权利要求1所述的功能测试方法,其特征在于,步骤e中所述根据不同的参数类型采用不同的实例化方式获得参数实例的方法为:原始数据类型采用固定的实例方法,非原始数据类型利用Json格式化。
8.一种RSF远程服务接口测试桩模块,其特征在于:采用如权利要求1-7任一项所述的RSF远程服务接口的功能测试方法。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010158669.9A CN111459801B (zh) | 2020-03-09 | 2020-03-09 | Rsf远程服务接口功能测试方法、模块、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010158669.9A CN111459801B (zh) | 2020-03-09 | 2020-03-09 | Rsf远程服务接口功能测试方法、模块、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459801A true CN111459801A (zh) | 2020-07-28 |
CN111459801B CN111459801B (zh) | 2022-09-06 |
Family
ID=71685576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010158669.9A Active CN111459801B (zh) | 2020-03-09 | 2020-03-09 | Rsf远程服务接口功能测试方法、模块、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459801B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905458A (zh) * | 2021-02-08 | 2021-06-04 | 中国工商银行股份有限公司 | 一种接口自动化契约测试方法和测试装置 |
CN113051162A (zh) * | 2021-03-22 | 2021-06-29 | 京东数字科技控股股份有限公司 | 实验测试方法、装置、计算机系统及可读存储介质 |
CN113467761A (zh) * | 2021-06-03 | 2021-10-01 | 上海赛可出行科技服务有限公司 | 一种基于Java反射原理的接口测试模板生成方法 |
CN115687161A (zh) * | 2022-12-30 | 2023-02-03 | 云筑信息科技(成都)有限公司 | 基于扫描maven仓库自动生成接口测试用例的方法 |
CN116700778A (zh) * | 2023-08-02 | 2023-09-05 | 中邮消费金融有限公司 | 接口差异分析方法、设备、存储介质及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107908545A (zh) * | 2017-09-26 | 2018-04-13 | 深圳市牛鼎丰科技有限公司 | 接口测试方法、装置、计算机设备及存储介质 |
CN108694120A (zh) * | 2017-04-12 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 测试服务组件的方法和装置 |
-
2020
- 2020-03-09 CN CN202010158669.9A patent/CN111459801B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108694120A (zh) * | 2017-04-12 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 测试服务组件的方法和装置 |
CN107908545A (zh) * | 2017-09-26 | 2018-04-13 | 深圳市牛鼎丰科技有限公司 | 接口测试方法、装置、计算机设备及存储介质 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905458A (zh) * | 2021-02-08 | 2021-06-04 | 中国工商银行股份有限公司 | 一种接口自动化契约测试方法和测试装置 |
CN112905458B (zh) * | 2021-02-08 | 2024-05-07 | 中国工商银行股份有限公司 | 一种接口自动化契约测试方法和测试装置 |
CN113051162A (zh) * | 2021-03-22 | 2021-06-29 | 京东数字科技控股股份有限公司 | 实验测试方法、装置、计算机系统及可读存储介质 |
CN113467761A (zh) * | 2021-06-03 | 2021-10-01 | 上海赛可出行科技服务有限公司 | 一种基于Java反射原理的接口测试模板生成方法 |
CN115687161A (zh) * | 2022-12-30 | 2023-02-03 | 云筑信息科技(成都)有限公司 | 基于扫描maven仓库自动生成接口测试用例的方法 |
CN116700778A (zh) * | 2023-08-02 | 2023-09-05 | 中邮消费金融有限公司 | 接口差异分析方法、设备、存储介质及装置 |
CN116700778B (zh) * | 2023-08-02 | 2024-01-26 | 中邮消费金融有限公司 | 接口差异分析方法、设备、存储介质及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111459801B (zh) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459801B (zh) | Rsf远程服务接口功能测试方法、模块、计算机设备和存储介质 | |
US7908580B2 (en) | Connecting an integrated development environment with an application instance | |
US20180143825A1 (en) | Development of internet of things (iot) applications | |
CN103970659B (zh) | 基于插桩技术的安卓应用软件自动化测试方法 | |
US20060265475A9 (en) | Testing web services as components | |
US7937698B2 (en) | Extensible mechanism for automatically migrating resource adapter components in a development environment | |
US7266370B2 (en) | System and method for developing and deploying device independent applications | |
US20200183683A1 (en) | Application architecture generation | |
CN107220066B (zh) | 应用商店中应用软件的发布方法及装置 | |
US20050044527A1 (en) | Code Units based Framework for domain- independent Visual Design and Development | |
CN110297637B (zh) | 全平台客户端软件适用的资源文件热重载开发工具及方法 | |
EP3447635A1 (en) | Application architecture generation | |
JP2010250378A (ja) | ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム | |
EP2088506A1 (en) | Method and system for calling services from a remote client | |
US7594217B2 (en) | Matching client interfaces with service interfaces | |
CN110109684B (zh) | 区块链节点管理代理服务安装方法、电子装置及存储介质 | |
CN106484452A (zh) | 一种软件平台的统一配置管理方法和装置 | |
CN112732677B (zh) | 区块链节点部署方法、装置、设备及存储介质 | |
CN105868104B (zh) | 一种跨平台的图形用户界面自动测试方法 | |
US20020133752A1 (en) | Component/web service operational profile auto-sequencing | |
CN115934199A (zh) | 服务性能监控工具、方法、设备及介质 | |
US20200366743A1 (en) | Megamodel driven process enactment | |
EP4235403A1 (en) | Automatic generation of a cloud integration adapter from a standard, programming language-agnostic interface specification | |
KR101418390B1 (ko) | 원격 응용 프로그래밍 디버깅시스템 및 그 제어방법 | |
US8732659B2 (en) | Method, apparatus and storage medium for customizing application |
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 |