CN109902017A - 一种基于RobotFramework测试Dubbo接口的方法及终端 - Google Patents
一种基于RobotFramework测试Dubbo接口的方法及终端 Download PDFInfo
- Publication number
- CN109902017A CN109902017A CN201910166368.8A CN201910166368A CN109902017A CN 109902017 A CN109902017 A CN 109902017A CN 201910166368 A CN201910166368 A CN 201910166368A CN 109902017 A CN109902017 A CN 109902017A
- Authority
- CN
- China
- Prior art keywords
- test
- dubbo interface
- test case
- script
- parsing
- 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 477
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000004044 response Effects 0.000 claims description 32
- 238000004891 communication Methods 0.000 claims description 6
- 238000010200 validation analysis Methods 0.000 claims description 6
- 238000004422 calculation algorithm Methods 0.000 description 12
- 230000001360 synchronised effect Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 5
- 235000013399 edible fruits Nutrition 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003472 neutralizing effect Effects 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于RobotFramework测试Dubbo接口的方法及终端,属于数据处理领域。本发明根据预设的测试用例模板生成测试用例;所述测试用例用于测试Dubbo接口;所述测试用例模板为表格文档;从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本;执行所述测试脚本,得到测试结果。实现提高测试Dubbo接口的便利性。
Description
技术领域
本发明涉及一种基于RobotFramework测试Dubbo接口的方法及终端,属于数据处理领域。
背景技术
Dubbo接口是阿里巴巴开源的致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,Dubbo框架告别了传统的web service的服务模式,改用服务提供者和消费者模式进行服务。随着Dubbo框架的广泛应用,在研发或测试过程中,经常遇到Dubbo接口的测试,如何高效的完成Dubbo测试是一个巨大的挑战。
现有的Dubbo接口测试方法包括以下几种:
1)使用手工测试的方式,通过对接口消费端的功能操作来触发接口调用,以达到接口测试的目的。此方法测试效率低,且严重依赖外部系统的开发完整度和稳定性,在出现问题后排查复杂度高。
2)Dubbo支持telnet链接,可通过invoke命令调用指定接口。此方式手工执行调用,容易出现操作失误,并需将返回结果复制出来格式化后再进行结果核对,单个用例执行效率低,无法用于大量的回归测试。
3)使用测试工具(如Jmeter)进行Dubbo接口测试。此方式需要依赖研发提供的Dubbo接口的jar包,并且要求测试人员熟悉编程语言能进行测试脚本开发,方可执行。
综上所述,现有的接口自动化测试方法中主要针对Web service方式,无法适用Dubbo接口。
发明内容
本发明所要解决的技术问题是:如何提高测试Dubbo接口的便利性。
为了解决上述技术问题,本发明采用的技术方案为:
本发明提供一种基于RobotFramework测试Dubbo接口的方法,包括:
根据预设的测试用例模板生成测试用例;所述测试用例用于测试Dubbo接口;所述测试用例模板为表格文档;
从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本;
执行所述测试脚本,得到测试结果。
优选地,根据预设的测试用例模板生成测试用例,具体为:
输入Dubbo接口的名称、与所述Dubbo接口对应的服务器IP地址和与所述Dubbo接口对应的端口号至所述测试用例模板中的第一工作表;
在所述测试用例模板上新建第二工作表;所述第二工作表的名称为所述Dubbo接口的名称;
输入与所述Dubbo接口对应的测试数据、期望返回值和数据库验证参数至所述第二工作表;所述数据库验证参数用于验证数据库响应的正确性。
优选地,从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本之前,还包括:
预设与所述测试用例模板对应的解析脚本;所述解析脚本用于解析与所述测试用例模板对应的测试用例;
添加所述解析脚本至RobotFramework的脚本库中;
关联所述预设的解析关键字与所述解析脚本。
优选地,从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本,具体为:
从RobotFramework中调用预设的解析关键字解析所述测试用例,得到解析结果;所述解析结果包括与待测Dubbo接口对应的服务器IP地址、与所述待测Dubbo接口对应的端口号、与所述待测Dubbo接口对应的测试数据、与所述待测Dubbo接口对应的期望返回值和与所述待测Dubbo接口对应的数据库验证参数;
在所述测试脚本中添加连接关键字;所述连接关键字用于根据与所述待测Dubbo接口对应的服务器IP地址和端口号,调用所述待测Dubbo接口执行所述测试数据,并接收所述待测Dubbo接口执行所述测试数据得到的返回值;
在所述测试脚本中添加响应参数;所述响应参数用于接收所述返回值;
在所述测试脚本中添加期望结果验证关键字;所述期望结果验证关键字用于比较所述返回值与所述待测Dubbo接口对应的期望返回值;
所述数据库验证参数包括待测数据库链接、数据库查询语句和期望数据库返回结果;
在所述测试脚本中添加数据库结果验证关键字;所述数据库结果验证关键字用于根据所述待测数据库链接与待测数据库建立通讯连接;触发待测数据库执行所述数据库查询语句,得到数据库执行结果;比较所述数据库执行结果与所述期望数据库返回结果。
本发明还提供一种基于RobotFramework测试Dubbo接口的终端,包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:
根据预设的测试用例模板生成测试用例;所述测试用例用于测试Dubbo接口;所述测试用例模板为表格文档;
从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本;
执行所述测试脚本,得到测试结果。
进一步地,根据预设的测试用例模板生成测试用例,具体为:
输入Dubbo接口的名称、与所述Dubbo接口对应的服务器IP地址和与所述Dubbo接口对应的端口号至所述测试用例模板中的第一工作表;
在所述测试用例模板上新建第二工作表;所述第二工作表的名称为所述Dubbo接口的名称;
输入与所述Dubbo接口对应的测试数据、期望返回值和数据库验证参数至所述第二工作表;所述数据库验证参数用于验证数据库响应的正确性。
进一步地,从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本之前,还包括:
预设与所述测试用例模板对应的解析脚本;所述解析脚本用于解析与所述测试用例模板对应的测试用例;
添加所述解析脚本至RobotFramework的脚本库中;
关联所述预设的解析关键字与所述解析脚本。
进一步地,从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本,具体为:
从RobotFramework中调用预设的解析关键字解析所述测试用例,得到解析结果;所述解析结果包括与待测Dubbo接口对应的服务器IP地址、与所述待测Dubbo接口对应的端口号、与所述待测Dubbo接口对应的测试数据、与所述待测Dubbo接口对应的期望返回值和与所述待测Dubbo接口对应的数据库验证参数;
在所述测试脚本中添加连接关键字;所述连接关键字用于根据与所述待测Dubbo接口对应的服务器IP地址和端口号,调用所述待测Dubbo接口执行所述测试数据,并接收所述待测Dubbo接口执行所述测试数据得到的返回值;
在所述测试脚本中添加响应参数;所述响应参数用于接收所述返回值;
在所述测试脚本中添加期望结果验证关键字;所述期望结果验证关键字用于比较所述返回值与所述待测Dubbo接口对应的期望返回值;
所述数据库验证参数包括待测数据库链接、数据库查询语句和期望数据库返回结果;
在所述测试脚本中添加数据库结果验证关键字;所述数据库结果验证关键字用于根据所述待测数据库链接与待测数据库建立通讯连接;触发待测数据库执行所述数据库查询语句,得到数据库执行结果;比较所述数据库执行结果与所述期望数据库返回结果。
本发明具有如下有益效果:
1、由于Dubbo接口无法通过HTTP方式调用,必须通过命令或JAR包调用相关接口,因此,需要测试工程师为每一个Dubbo接口生成测试脚本。然而,对于测试工程师而言生成脚本是一个较大的挑战,为测试Dubbo接口带来了难题。本发明提供一种基于RobotFramework测试Dubbo接口的方法及终端,测试工程师只需在表格文档格式的测试用例模板上填写相应的测试数据,即可生成相应的测试用例。在表格文档上填写测试数据这一操作不涉及编码,不具有编码能力的测试工程师也能便捷高效地完成该项工作。RobotFramework是一款基于Python开发的关键字驱动的开源自动化测试框架,RobotFramwork将业务逻辑封装在底层,表示层通过调用关键字执行与该关键字对应的业务逻辑。测试工程师只需调用预设的解析关键字即可调用相应的业务逻辑解析测试用例,即表格文档,并自动生成相应的测试脚本。对于测试工程师而言,无需学习复杂的测试工具,只需在表格文档,即测试用例模板内填写相应的测试数据,再调用一个固定的解析关键字,即可生成用于测试Dubbo接口的测试脚本。执行测试脚本,得到相应的测试结果。整个测试过程无需编码,无任何复杂的操作,极大程度上提高了测试Dubbo接口的便利性。
2、进一步地,本发明提供的测试用例模板的第一工作表用于记录若干个待测Dubbo接口所在服务器的IP地址和端口号,根据第一工作表记录的信息可调用待测Dubbo接口以完成测试工作。当测试工程师需要生成Dubbo接口的测试用例时,只需在测试用例模板上新建与第一工作表中记录的待测Dubbo接口名称相同的第二工作表,并在第二工作表上输入测试Dubbo接口所需的数据即可,十分直观、便利。
3、进一步地,由开发工程师统一提供解析各个测试用例模板的解析脚本。测试工程师只需将解析脚本导入至RobotFramewor脚本库中,将解析关键字与解析脚本关联,即可通过调用解析关键字这一简单操作自动生成与表格文档格式的测试用例相对应的测试脚本。本发明提供的基于RobotFramework测试Dubbo接口的方法及终端使得测试工程师无需具备编程能力,即可便捷地测试Dubbo接口。
4、进一步地,根据测试用例自动生成的测试脚本可自动将待测Dubbo接口执行测试数据得到的返回值与预设的期望返回值比较,直接得出比较结果,无需人工根据返回值进行比较,提高了测试Dubbo接口的便利性和效率。同时,测试脚本自动对相应的数据库进行验证,省去了测试工作人员需另行查验数据库的工作环节,极大程度上提高了测试Dubbo接口的便利性和效率。
附图说明
图1为本发明提供的一种基于RobotFramework测试Dubbo接口的方法的具体实施方式的流程框图;
图2为本发明提供的测试用例模板的第一工作表示意图;
图3为本发明提供的测试用例模板的第二工作表示意图;
图4为测试脚本示意图;
图5为本发明提供的一种基于RobotFramework测试Dubbo接口的终端的具体实施方式的结构框图;
标号说明:
1、处理器;2、存储器。
具体实施方式
下面结合附图和具体实施例来对本发明进行详细的说明。
请参照图1至图5,
本发明的实施例一为:
如图1所示,本实施例提供一种基于RobotFramework测试Dubbo接口的方法,包括:
S1、根据预设的测试用例模板生成测试用例;所述测试用例用于测试Dubbo接口;所述测试用例模板为表格文档。具体为:
S11、输入Dubbo接口的名称、与所述Dubbo接口对应的服务器IP地址和与所述Dubbo接口对应的端口号至所述测试用例模板中的第一工作表。
其中,所述测试用例模板为EXCEL文档,测试用例模板中的第一工作表记录多个待测Dubbo接口的基本信息。如图2所示,待测列表(第一工作列表)中列明存在两个待测的Dubbo接口,两个待测Dubbo接口的名称分别为“同步加盟商”和“获取票据”,这两个接口都部署在IP地址为172.16.12.134的服务器上,通过端口号3000可访问“同步加盟商”Dubbo接口和“获取票据”Dubbo接口。
本实施例提供的测试用例模板的第一工作表用于记录若干个待测Dubbo接口所在服务器的IP地址和端口号,根据第一工作表记录的信息可调用待测Dubbo接口以完成测试工作。当测试工程师需要生成Dubbo接口的测试用例时,只需在测试用例模板上新建与第一工作表中记录的待测Dubbo接口名称相同的第二工作表,并在第二工作表上输入测试Dubbo接口所需的数据即可,十分直观、便利。
S12、在所述测试用例模板上新建第二工作表;所述第二工作表的名称为所述Dubbo接口的名称。
其中,第二工作表的个数与第一工作表中待测Dubbo接口的个数相同,且第二工作表的名称与待测Dubbo接口一一对应,即一个第二工作表记录一个待测Dubbo接口的测试用例。第二工作表中一行代表一个测试用例。图3为“同步加盟商”Dubbo接口对应的第二工作表,第二工作表中记录有4个测试用例UP_001、UP_002、UP_003和UP_004。
S13、输入与所述Dubbo接口对应的测试数据、期望返回值和数据库验证参数至所述第二工作表;所述数据库验证参数用于验证数据库响应的正确性。
例如,如图3所示,每个测试用例包含测试数据、期望返回值和数据库验证参数。其中,测试数据为图3中的“请求报文”列,期望返回值为图3中的“预期响应报文”,数据库验证参数为图3中的“是否检查数据库列”和“数据库查询语句”列。
S2、预设与所述测试用例模板对应的解析脚本;所述解析脚本用于解析与所述测试用例模板对应的测试用例;添加所述解析脚本至RobotFramework的脚本库中;关联所述预设的解析关键字与所述解析脚本。
其中,RobotFramework是一款基于Python开发的关键字驱动的开源自动化测试框架,具备良好的灵活性和扩展性,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。RobotFramework通过测试库识别被测对象、操纵被测对象,有很多自带的或者第三方的开源测试库。测试工程师可快速上手,学习成本较低,统一语法便于管理。
通过加载资源文件的方式将包含多个用户自定义关键字组成的Python文件添加至RobotFramework测试框架中,测试脚本即可对自定义的Python库关键字进行调用。
由开发工程师统一提供解析各个测试用例模板的解析脚本。测试工程师只需将解析脚本导入至RobotFramewor脚本库中,将解析关键字与解析脚本关联,即可通过调用解析关键字这一简单操作自动生成与EXCEL文档格式的测试用例相对应的测试脚本。本实施例提供的基于RobotFramework测试Dubbo接口的方法使得测试工程师无需具备编程能力,即可便捷地测试Dubbo接口。
S3、从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本。具体为:
S31、从RobotFramework中调用预设的解析关键字解析所述测试用例,得到解析结果;所述解析结果包括与待测Dubbo接口对应的服务器IP地址、与所述待测Dubbo接口对应的端口号、与所述待测Dubbo接口对应的测试数据、与所述待测Dubbo接口对应的期望返回值和与所述待测Dubbo接口对应的数据库验证参数。
其中,通过预设的解析关键字调用步骤S2预设在RobotFramework中的解析脚本,逐行读取测试用例中待测Dubbo接口的信息。
S32、在所述测试脚本中添加连接关键字;所述连接关键字用于根据与所述待测Dubbo接口对应的服务器IP地址和端口号,调用所述待测Dubbo接口执行所述测试数据,并接收所述待测Dubbo接口执行所述测试数据得到的返回值。
其中,测试用例中定义的请求报文{“partnerld”:“d5983f25e2444e66abdd995e43f403c1”,“parterName”:“接口测试加盟商01”,“source”:“XXX”,“deleted”:false}作为Python库关键字的参数,由Python库关键字完成与待测Dubbo接口的交互,获取到接口返回值,回传到定义好的变量中。例如,图4为根据用例编号为UP_001的测试用例自动生成的测试脚本。在该测试脚本中添加连接关键字telnetDubbo,从而实现向被测Dubbo接口“同步加盟商”所在的服务器172.16.12.134:3000发送服务请求,并接收被测Dubbo接口“同步加盟商”的返回值。
S33、在所述测试脚本中添加响应参数;所述响应参数用于接收所述返回值;
其中,第一工作表中记载的“同步加盟商”的IP地址、端口号和名为“同步加盟商”的第二工作表的UP_001所在行的请求报文数据作为执行telnetDubbo关键字的参数,telnetDubbo关键字执行完成后返回的响应报文赋值至变量${response}(响应参数)中。
S34、在所述测试脚本中添加期望结果验证关键字;所述期望结果验证关键字用于比较所述返回值与所述待测Dubbo接口对应的期望返回值。
其中,通过用户自定义的期望结果验证关键字对Dubbo接口返回的内容进行格式化解析,得到与测试用例中定义的期望返回值格式匹配的返回数据。将解析后的返回数据与测试用例中的期望返回值比较,若二者一致,则判定测试成功,否则可判定测试失败。
例如,图4中的CheckResponse关键字将变量${response}(响应参数)和测试用例中的预期响应报文{“code”:”SUCCE”,“info”:null}进行比较,若二者一致,则判定测试成功,否则判定测试失败。
S35、所述数据库验证参数包括待测数据库链接、数据库查询语句和期望数据库返回结果。
S36、在所述测试脚本中添加数据库结果验证关键字;所述数据库结果验证关键字用于根据所述待测数据库链接与待测数据库建立通讯连接;触发待测数据库执行所述数据库查询语句,得到数据库执行结果;比较所述数据库执行结果与所述期望数据库返回结果。
其中,当测试用例中的“数据库验证标识”为“YES”时,在自动创建测试脚本时,自动添加数据库验证关键字,并使用测试用例中预设的待测数据库链接、数据库查询语句和期望数据库返回结果作为数据库验证关键字的参数。在测试脚本执行时,将对实际数据库返回结果和期望数据库返回结果进行比较。
例如,如图4所示,CheckDBData关键字(数据库验证关键字)实现与被测系统数据库的链接,并执行测试用例中预设的数据库查询语句,获得实际数据库返回结果。对实际数据库返回结果进行格式化后,与测试用例中预设的期望数据库返回结果比对,若二者一致则判定测试成功,否则判定测试失败。
S4、执行所述测试脚本,得到测试结果。
其中,只有当待测Dubbo接口的返回值与待测数据库的返回值均与测试用例中的期望值一致时,测试结果才为测试成功,否则测试失败。
根据测试用例自动生成的测试脚本可自动将待测Dubbo接口执行测试数据得到的返回值与预设的期望返回值比较,直接得出比较结果,无需人工根据返回值进行比较,提高了测试Dubbo接口的便利性和效率。同时,测试脚本自动对相应的数据库进行验证,省去了测试工作人员需另行查验数据库的工作环节,极大程度上提高了测试Dubbo接口的便利性和效率。
可选地,结合Git和Jenkins集成,实现自动化测试的自动化构建执行,具体步骤如下:
在Git上创建自动化测试对应的项目和仓库,将自动化脚本提交至Git。
搭建Jenkins全套环境,并安装RobotFramework插件。
搭建RobotFramework执行环境,并在Jenkins上配置为执行节点。可根据资源情况搭建多个执行节点。
创建Job配置RobotFramework自动化测试任务。
本实施例提供的基于RobotFramework测试Dubbo接口的方法与现有技术相比具有以下优点:
(1)自动化执行替代人工执行,提高了Dubbo接口的测试效率。在未引入该测试方法前,单个用例执行就需要花费5分钟。引入该方法后,同样的工作只需要30秒,可以更快地完成服务的测试工作,且无需人工操作。
(2)实现了测试数据与脚本的全分离,测试人员只需要填写测试数据和预期验证点,易用性高,实现效率高。
(3)提高了测试准确性和可信度,本实施例定义了python库关键字执行测试操作,并进行返回结果检查,降低了执行过程中的人工操作误差。
(4)Jenkins持续集成,可远程手工触发,亦可根据构建设置进行自动执行,并可多节点并发执行测试,减少了测试人员的工作量和等待时间。
综上所述,由于Dubbo接口无法通过HTTP方式调用,必须通过命令或JAR包调用相关接口,因此,需要测试工程师为每一个Dubbo接口生成测试脚本。然而,对于测试工程师而言生成脚本是一个较大的挑战,为测试Dubbo接口带来了难题。本实施例提供一种基于RobotFramework测试Dubbo接口的方法,测试工程师只需在EXCEL文档格式的测试用例模板上填写相应的测试数据,即可生成相应的测试用例。在EXCEL文档上填写测试数据这一操作不涉及编码,不具有编码能力的测试工程师也能便捷高效地完成该项工作。RobotFramework是一款基于Python开发的关键字驱动的开源自动化测试框架,RobotFramwork将业务逻辑封装在底层,表示层通过调用关键字执行与该关键字对应的业务逻辑。测试工程师只需调用预设的解析关键字即可调用相应的业务逻辑解析测试用例,即EXCEL文档,并自动生成相应的测试脚本。对于测试工程师而言,无需学习复杂的测试工具,只需在EXCEL文档,即测试用例模板内填写相应的测试数据,再调用一个固定的解析关键字,即可生成用于测试Dubbo接口的测试脚本。执行测试脚本,得到相应的测试结果。整个测试过程无需编码,无任何复杂的操作,极大程度上提高了测试Dubbo接口的便利性。
本发明的实施例二为:
如图5所示,本实施例提供一种基于RobotFramework测试Dubbo接口的终端,包括一个或多个处理器1及存储器2,所述存储器2存储有程序,并且被配置成由所述一个或多个处理器1执行以下步骤:
S1、根据预设的测试用例模板生成测试用例;所述测试用例用于测试Dubbo接口;所述测试用例模板为表格文档。具体为:
S11、输入Dubbo接口的名称、与所述Dubbo接口对应的服务器IP地址和与所述Dubbo接口对应的端口号至所述测试用例模板中的第一工作表。
其中,所述测试用例模板为EXCEL文档,测试用例模板中的第一工作表记录多个待测Dubbo接口的基本信息。如图2所示,待测列表(第一工作列表)中列明存在两个待测的Dubbo接口,两个待测Dubbo接口的名称分别为“同步加盟商”和“获取票据”,这两个接口都部署在IP地址为172.16.12.134的服务器上,通过端口号3000可访问“同步加盟商”Dubbo接口和“获取票据”Dubbo接口。
本实施例提供的测试用例模板的第一工作表用于记录若干个待测Dubbo接口所在服务器的IP地址和端口号,根据第一工作表记录的信息可调用待测Dubbo接口以完成测试工作。当测试工程师需要生成Dubbo接口的测试用例时,只需在测试用例模板上新建与第一工作表中记录的待测Dubbo接口名称相同的第二工作表,并在第二工作表上输入测试Dubbo接口所需的数据即可,十分直观、便利。
S12、在所述测试用例模板上新建第二工作表;所述第二工作表的名称为所述Dubbo接口的名称。
其中,第二工作表的个数与第一工作表中待测Dubbo接口的个数相同,且第二工作表的名称与待测Dubbo接口一一对应,即一个第二工作表记录一个待测Dubbo接口的测试用例。第二工作表中一行代表一个测试用例。图3为“同步加盟商”Dubbo接口对应的第二工作表,第二工作表中记录有4个测试用例UP_001、UP_002、UP_003和UP_004。
S13、输入与所述Dubbo接口对应的测试数据、期望返回值和数据库验证参数至所述第二工作表;所述数据库验证参数用于验证数据库响应的正确性。
例如,如图3所示,每个测试用例包含测试数据、期望返回值和数据库验证参数。其中,测试数据为图3中的“请求报文”列,期望返回值为图3中的“预期响应报文”,数据库验证参数为图3中的“是否检查数据库列”和“数据库查询语句”列。
S2、预设与所述测试用例模板对应的解析脚本;所述解析脚本用于解析与所述测试用例模板对应的测试用例;添加所述解析脚本至RobotFramework的脚本库中;关联所述预设的解析关键字与所述解析脚本。
其中,RobotFramework是一款基于Python开发的关键字驱动的开源自动化测试框架,具备良好的灵活性和扩展性,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。RobotFramework通过测试库识别被测对象、操纵被测对象,有很多自带的或者第三方的开源测试库。测试工程师可快速上手,学习成本较低,统一语法便于管理。
通过加载资源文件的方式将包含多个用户自定义关键字组成的Python文件添加至RobotFramework测试框架中,测试脚本即可对自定义的Python库关键字进行调用。
由开发工程师统一提供解析各个测试用例模板的解析脚本。测试工程师只需将解析脚本导入至RobotFramewor脚本库中,将解析关键字与解析脚本关联,即可通过调用解析关键字这一简单操作自动生成与EXCEL文档格式的测试用例相对应的测试脚本。本实施例提供的基于RobotFramework测试Dubbo接口的终端使得测试工程师无需具备编程能力,即可便捷地测试Dubbo接口。
S3、从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本。具体为:
S31、从RobotFramework中调用预设的解析关键字解析所述测试用例,得到解析结果;所述解析结果包括与待测Dubbo接口对应的服务器IP地址、与所述待测Dubbo接口对应的端口号、与所述待测Dubbo接口对应的测试数据、与所述待测Dubbo接口对应的期望返回值和与所述待测Dubbo接口对应的数据库验证参数。
其中,通过预设的解析关键字调用步骤S2预设在RobotFramework中的解析脚本,逐行读取测试用例中待测Dubbo接口的信息。
S32、在所述测试脚本中添加连接关键字;所述连接关键字用于根据与所述待测Dubbo接口对应的服务器IP地址和端口号,调用所述待测Dubbo接口执行所述测试数据,并接收所述待测Dubbo接口执行所述测试数据得到的返回值。
其中,测试用例中定义的请求报文{“partnerld”:“d5983f25e2444e66abdd995e43f403c1”,“parterName”:“接口测试加盟商01”,“source”:“XXX”,“deleted”:false}作为Python库关键字的参数,由Python库关键字完成与待测Dubbo接口的交互,获取到接口返回值,回传到定义好的变量中。例如,图4为根据用例编号为UP_001的测试用例自动生成的测试脚本。在该测试脚本中添加连接关键字telnetDubbo,从而实现向被测Dubbo接口“同步加盟商”所在的服务器172.16.12.134:3000发送服务请求,并接收被测Dubbo接口“同步加盟商”的返回值。
S33、在所述测试脚本中添加响应参数;所述响应参数用于接收所述返回值;
其中,第一工作表中记载的“同步加盟商”的IP地址、端口号和名为“同步加盟商”的第二工作表的UP_001所在行的请求报文数据作为执行telnetDubbo关键字的参数,telnetDubbo关键字执行完成后返回的响应报文赋值至变量${response}(响应参数)中。
S34、在所述测试脚本中添加期望结果验证关键字;所述期望结果验证关键字用于比较所述返回值与所述待测Dubbo接口对应的期望返回值。
其中,通过用户自定义的期望结果验证关键字对Dubbo接口返回的内容进行格式化解析,得到与测试用例中定义的期望返回值格式匹配的返回数据。将解析后的返回数据与测试用例中的期望返回值比较,若二者一致,则判定测试成功,否则可判定测试失败。
例如,图4中的CheckResponse关键字将变量${response}(响应参数)和测试用例中的预期响应报文{“code”:”SUCCE”,“info”:null}进行比较,若二者一致,则判定测试成功,否则判定测试失败。
S35、所述数据库验证参数包括待测数据库链接、数据库查询语句和期望数据库返回结果。
S36、在所述测试脚本中添加数据库结果验证关键字;所述数据库结果验证关键字用于根据所述待测数据库链接与待测数据库建立通讯连接;触发待测数据库执行所述数据库查询语句,得到数据库执行结果;比较所述数据库执行结果与所述期望数据库返回结果。
其中,当测试用例中的“数据库验证标识”为“YES”时,在自动创建测试脚本时,自动添加数据库验证关键字,并使用测试用例中预设的待测数据库链接、数据库查询语句和期望数据库返回结果作为数据库验证关键字的参数。在测试脚本执行时,将对实际数据库返回结果和期望数据库返回结果进行比较。
例如,如图4所示,CheckDBData关键字(数据库验证关键字)实现与被测系统数据库的链接,并执行测试用例中预设的数据库查询语句,获得实际数据库返回结果。对实际数据库返回结果进行格式化后,与测试用例中预设的期望数据库返回结果比对,若二者一致则判定测试成功,否则判定测试失败。
S4、执行所述测试脚本,得到测试结果。
其中,只有当待测Dubbo接口的返回值与待测数据库的返回值均与测试用例中的期望值一致时,测试结果才为测试成功,否则测试失败。
根据测试用例自动生成的测试脚本可自动将待测Dubbo接口执行测试数据得到的返回值与预设的期望返回值比较,直接得出比较结果,无需人工根据返回值进行比较,提高了测试Dubbo接口的便利性和效率。同时,测试脚本自动对相应的数据库进行验证,省去了测试工作人员需另行查验数据库的工作环节,极大程度上提高了测试Dubbo接口的便利性和效率。
可选地,结合Git和Jenkins集成,实现自动化测试的自动化构建执行,具体步骤如下:
在Git上创建自动化测试对应的项目和仓库,将自动化脚本提交至Git。
搭建Jenkins全套环境,并安装RobotFramework插件。
搭建RobotFramework执行环境,并在Jenkins上配置为执行节点。可根据资源情况搭建多个执行节点。
创建Job配置RobotFramework自动化测试任务。
本实施例提供的基于RobotFramework测试Dubbo接口的终端与现有技术相比具有以下优点:
(1)自动化执行替代人工执行,提高了Dubbo接口的测试效率。在未引入该测试终端前,单个用例执行就需要花费5分钟。引入该终端后,同样的工作只需要30秒,可以更快地完成服务的测试工作,且无需人工操作。
(2)实现了测试数据与脚本的全分离,测试人员只需要填写测试数据和预期验证点,易用性高,实现效率高。
(3)提高了测试准确性和可信度,本实施例定义了python库关键字执行测试操作,并进行返回结果检查,降低了执行过程中的人工操作误差。
(4)Jenkins持续集成,可远程手工触发,亦可根据构建设置进行自动执行,并可多节点并发执行测试,减少了测试人员的工作量和等待时间。
综上所述,由于Dubbo接口无法通过HTTP方式调用,必须通过命令或JAR包调用相关接口,因此,需要测试工程师为每一个Dubbo接口生成测试脚本。然而,对于测试工程师而言生成脚本是一个较大的挑战,为测试Dubbo接口带来了难题。本实施例提供一种基于RobotFramework测试Dubbo接口的终端,测试工程师只需在EXCEL文档格式的测试用例模板上填写相应的测试数据,即可生成相应的测试用例。在EXCEL文档上填写测试数据这一操作不涉及编码,不具有编码能力的测试工程师也能便捷高效地完成该项工作。RobotFramework是一款基于Python开发的关键字驱动的开源自动化测试框架,RobotFramwork将业务逻辑封装在底层,表示层通过调用关键字执行与该关键字对应的业务逻辑。测试工程师只需调用预设的解析关键字即可调用相应的业务逻辑解析测试用例,即EXCEL文档,并自动生成相应的测试脚本。对于测试工程师而言,无需学习复杂的测试工具,只需在EXCEL文档,即测试用例模板内填写相应的测试数据,再调用一个固定的解析关键字,即可生成用于测试Dubbo接口的测试脚本。执行测试脚本,得到相应的测试结果。整个测试过程无需编码,无任何复杂的操作,极大程度上提高了测试Dubbo接口的便利性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种基于RobotFramework测试Dubbo接口的方法,其特征在于,包括:
根据预设的测试用例模板生成测试用例;所述测试用例用于测试Dubbo接口;
所述测试用例模板为表格文档;
从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本;
执行所述测试脚本,得到测试结果。
2.根据权利要求1所述的基于RobotFramework测试Dubbo接口的方法,其特征在于,根据预设的测试用例模板生成测试用例,具体为:
输入Dubbo接口的名称、与所述Dubbo接口对应的服务器IP地址和与所述Dubbo接口对应的端口号至所述测试用例模板中的第一工作表;
在所述测试用例模板上新建第二工作表;所述第二工作表的名称为所述Dubbo接口的名称;
输入与所述Dubbo接口对应的测试数据、期望返回值和数据库验证参数至所述第二工作表;所述数据库验证参数用于验证数据库响应的正确性。
3.根据权利要求2所述的基于RobotFramework测试Dubbo接口的方法,其特征在于,从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本之前,还包括:
预设与所述测试用例模板对应的解析脚本;所述解析脚本用于解析与所述测试用例模板对应的测试用例;
添加所述解析脚本至RobotFramework的脚本库中;
关联所述预设的解析关键字与所述解析脚本。
4.根据权利要求2所述的基于RobotFramework测试Dubbo接口的方法,其特征在于,从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本,具体为:
从RobotFramework中调用预设的解析关键字解析所述测试用例,得到解析结果;所述解析结果包括与待测Dubbo接口对应的服务器IP地址、与所述待测Dubbo接口对应的端口号、与所述待测Dubbo接口对应的测试数据、与所述待测Dubbo接口对应的期望返回值和与所述待测Dubbo接口对应的数据库验证参数;
在所述测试脚本中添加连接关键字;所述连接关键字用于根据与所述待测Dubbo接口对应的服务器IP地址和端口号,调用所述待测Dubbo接口执行所述测试数据,并接收所述待测Dubbo接口执行所述测试数据得到的返回值;
在所述测试脚本中添加响应参数;所述响应参数用于接收所述返回值;
在所述测试脚本中添加期望结果验证关键字;所述期望结果验证关键字用于比较所述返回值与所述待测Dubbo接口对应的期望返回值;
所述数据库验证参数包括待测数据库链接、数据库查询语句和期望数据库返回结果;
在所述测试脚本中添加数据库结果验证关键字;所述数据库结果验证关键字用于根据所述待测数据库链接与待测数据库建立通讯连接;触发待测数据库执行所述数据库查询语句,得到数据库执行结果;比较所述数据库执行结果与所述期望数据库返回结果。
5.一种基于RobotFramework测试Dubbo接口的终端,其特征在于,包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:
根据预设的测试用例模板生成测试用例;所述测试用例用于测试Dubbo接口;所述测试用例模板为表格文档;
从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本;
执行所述测试脚本,得到测试结果。
6.根据权利要求5所述的基于RobotFramework测试Dubbo接口的终端,其特征在于,根据预设的测试用例模板生成测试用例,具体为:
输入Dubbo接口的名称、与所述Dubbo接口对应的服务器IP地址和与所述Dubbo接口对应的端口号至所述测试用例模板中的第一工作表;
在所述测试用例模板上新建第二工作表;所述第二工作表的名称为所述Dubbo接口的名称;
输入与所述Dubbo接口对应的测试数据、期望返回值和数据库验证参数至所述第二工作表;所述数据库验证参数用于验证数据库响应的正确性。
7.根据权利要求6所述的基于RobotFramework测试Dubbo接口的终端,其特征在于,从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本之前,还包括:
预设与所述测试用例模板对应的解析脚本;所述解析脚本用于解析与所述测试用例模板对应的测试用例;
添加所述解析脚本至RobotFramework的脚本库中;
关联所述预设的解析关键字与所述解析脚本。
8.根据权利要求6所述的基于RobotFramework测试Dubbo接口的终端,其特征在于,从RobotFramework中调用预设的解析关键字解析所述测试用例,并生成与所述测试用例对应的测试脚本,具体为:
从RobotFramework中调用预设的解析关键字解析所述测试用例,得到解析结果;所述解析结果包括与待测Dubbo接口对应的服务器IP地址、与所述待测Dubbo接口对应的端口号、与所述待测Dubbo接口对应的测试数据、与所述待测Dubbo接口对应的期望返回值和与所述待测Dubbo接口对应的数据库验证参数;
在所述测试脚本中添加连接关键字;所述连接关键字用于根据与所述待测Dubbo接口对应的服务器IP地址和端口号,调用所述待测Dubbo接口执行所述测试数据,并接收所述待测Dubbo接口执行所述测试数据得到的返回值;
在所述测试脚本中添加响应参数;所述响应参数用于接收所述返回值;
在所述测试脚本中添加期望结果验证关键字;所述期望结果验证关键字用于比较所述返回值与所述待测Dubbo接口对应的期望返回值;
所述数据库验证参数包括待测数据库链接、数据库查询语句和期望数据库返回结果;
在所述测试脚本中添加数据库结果验证关键字;所述数据库结果验证关键字用于根据所述待测数据库链接与待测数据库建立通讯连接;触发待测数据库执行所述数据库查询语句,得到数据库执行结果;比较所述数据库执行结果与所述期望数据库返回结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910166368.8A CN109902017A (zh) | 2019-03-06 | 2019-03-06 | 一种基于RobotFramework测试Dubbo接口的方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910166368.8A CN109902017A (zh) | 2019-03-06 | 2019-03-06 | 一种基于RobotFramework测试Dubbo接口的方法及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109902017A true CN109902017A (zh) | 2019-06-18 |
Family
ID=66946571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910166368.8A Pending CN109902017A (zh) | 2019-03-06 | 2019-03-06 | 一种基于RobotFramework测试Dubbo接口的方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109902017A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110232028A (zh) * | 2019-06-24 | 2019-09-13 | 湖南国科微电子股份有限公司 | 一种测试用例自动化运行方法及系统 |
CN111026636A (zh) * | 2019-09-27 | 2020-04-17 | 珠海随变科技有限公司 | 一种软件项目的测试方法、装置、设备及存储介质 |
CN111176979A (zh) * | 2019-11-20 | 2020-05-19 | 四川蜀天梦图数据科技有限公司 | 一种图数据库的测试用例生成方法和装置 |
CN111488279A (zh) * | 2020-04-09 | 2020-08-04 | 吉林亿联银行股份有限公司 | 回归测试方法及装置 |
CN111488274A (zh) * | 2020-03-27 | 2020-08-04 | 杭州海兴电力科技股份有限公司 | 一种测试用例构建方法、测试方法、设备及存储介质 |
CN111741118A (zh) * | 2020-06-28 | 2020-10-02 | 中国平安财产保险股份有限公司 | 接口调用方法、装置、计算机设备及计算机可读存储介质 |
CN112363907A (zh) * | 2020-09-14 | 2021-02-12 | 杭州大搜车汽车服务有限公司 | Dubbo接口的测试方法、装置、电子装置和存储介质 |
CN112486819A (zh) * | 2020-11-27 | 2021-03-12 | 中国电子科技集团公司第三十研究所 | 一种批量测试通信设备方法及系统 |
CN112511386A (zh) * | 2020-12-09 | 2021-03-16 | 爱瑟福信息科技(上海)有限公司 | 基于robotframework的车载以太网测试方法、系统以及太网测试设备 |
CN114880239A (zh) * | 2022-05-31 | 2022-08-09 | 成都秦川物联网科技股份有限公司 | 一种基于数据驱动的接口自动化测试框架及方法 |
CN115374018A (zh) * | 2022-10-26 | 2022-11-22 | 四川蜀天信息技术有限公司 | 一种自动化接口测试方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140033175A1 (en) * | 2012-07-27 | 2014-01-30 | Hon Hai Precision Industry Co., Ltd. | Computing device and method for creating test cases of software program |
CN105005532A (zh) * | 2015-08-05 | 2015-10-28 | 广东欧珀移动通信有限公司 | 一种自动化测试应用程序接口稳定性的系统及方法 |
CN106383784A (zh) * | 2016-09-20 | 2017-02-08 | 上海爱数信息技术股份有限公司 | 软件自动化测试方法及系统 |
CN108694121A (zh) * | 2017-04-12 | 2018-10-23 | 杭州海康威视数字技术股份有限公司 | 一种自动化测试方法、装置及系统 |
CN109189684A (zh) * | 2018-08-28 | 2019-01-11 | 四川长虹电器股份有限公司 | 基于Python的接口自动化测试方法 |
-
2019
- 2019-03-06 CN CN201910166368.8A patent/CN109902017A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140033175A1 (en) * | 2012-07-27 | 2014-01-30 | Hon Hai Precision Industry Co., Ltd. | Computing device and method for creating test cases of software program |
CN105005532A (zh) * | 2015-08-05 | 2015-10-28 | 广东欧珀移动通信有限公司 | 一种自动化测试应用程序接口稳定性的系统及方法 |
CN106383784A (zh) * | 2016-09-20 | 2017-02-08 | 上海爱数信息技术股份有限公司 | 软件自动化测试方法及系统 |
CN108694121A (zh) * | 2017-04-12 | 2018-10-23 | 杭州海康威视数字技术股份有限公司 | 一种自动化测试方法、装置及系统 |
CN109189684A (zh) * | 2018-08-28 | 2019-01-11 | 四川长虹电器股份有限公司 | 基于Python的接口自动化测试方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110232028A (zh) * | 2019-06-24 | 2019-09-13 | 湖南国科微电子股份有限公司 | 一种测试用例自动化运行方法及系统 |
CN111026636A (zh) * | 2019-09-27 | 2020-04-17 | 珠海随变科技有限公司 | 一种软件项目的测试方法、装置、设备及存储介质 |
CN111176979A (zh) * | 2019-11-20 | 2020-05-19 | 四川蜀天梦图数据科技有限公司 | 一种图数据库的测试用例生成方法和装置 |
CN111488274A (zh) * | 2020-03-27 | 2020-08-04 | 杭州海兴电力科技股份有限公司 | 一种测试用例构建方法、测试方法、设备及存储介质 |
CN111488274B (zh) * | 2020-03-27 | 2023-10-24 | 杭州海兴电力科技股份有限公司 | 一种测试用例构建方法、测试方法、设备及存储介质 |
CN111488279A (zh) * | 2020-04-09 | 2020-08-04 | 吉林亿联银行股份有限公司 | 回归测试方法及装置 |
CN111741118B (zh) * | 2020-06-28 | 2023-06-02 | 中国平安财产保险股份有限公司 | 接口调用方法、装置、计算机设备及计算机可读存储介质 |
CN111741118A (zh) * | 2020-06-28 | 2020-10-02 | 中国平安财产保险股份有限公司 | 接口调用方法、装置、计算机设备及计算机可读存储介质 |
CN112363907A (zh) * | 2020-09-14 | 2021-02-12 | 杭州大搜车汽车服务有限公司 | Dubbo接口的测试方法、装置、电子装置和存储介质 |
CN112486819A (zh) * | 2020-11-27 | 2021-03-12 | 中国电子科技集团公司第三十研究所 | 一种批量测试通信设备方法及系统 |
CN112511386A (zh) * | 2020-12-09 | 2021-03-16 | 爱瑟福信息科技(上海)有限公司 | 基于robotframework的车载以太网测试方法、系统以及太网测试设备 |
CN112511386B (zh) * | 2020-12-09 | 2022-07-26 | 爱瑟福信息科技(上海)有限公司 | 基于robotframework的车载以太网测试方法、系统以及太网测试设备 |
CN114880239A (zh) * | 2022-05-31 | 2022-08-09 | 成都秦川物联网科技股份有限公司 | 一种基于数据驱动的接口自动化测试框架及方法 |
CN114880239B (zh) * | 2022-05-31 | 2024-05-24 | 成都秦川物联网科技股份有限公司 | 一种基于数据驱动的接口自动化测试框架及方法 |
CN115374018A (zh) * | 2022-10-26 | 2022-11-22 | 四川蜀天信息技术有限公司 | 一种自动化接口测试方法和装置 |
CN115374018B (zh) * | 2022-10-26 | 2023-07-14 | 四川蜀天信息技术有限公司 | 一种自动化接口测试方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109902017A (zh) | 一种基于RobotFramework测试Dubbo接口的方法及终端 | |
US11379348B2 (en) | System and method for performing automated API tests | |
CN107370786B (zh) | 一种基于微服务架构的通用信息管理系统 | |
US9792203B2 (en) | Isolated testing of distributed development projects | |
WO2020000706A1 (zh) | 基于数据库比对的接口测试方法、系统、设备和存储介质 | |
CN109614313A (zh) | 自动化测试方法、装置及计算机可读存储介质 | |
CN107341109B (zh) | 一种测试数据的生成方法和系统 | |
CN101930400B (zh) | Sdk自动化测试系统及方法 | |
CN107241315B (zh) | 银行网关接口的接入方法、装置及计算机可读存储介质 | |
CN112306861A (zh) | 一种基于Unittest和Jenkins工具的接口自动化测试体系及方法 | |
CN105204991A (zh) | 一种物联设备测试方法及装置 | |
CN110399299A (zh) | 自动化测试框架和测试用例的执行方法 | |
CN113706110A (zh) | 一种fpga测试工具一体化测试管理平台 | |
CN110764998A (zh) | 基于Django框架的数据比对方法、装置、设备及存储介质 | |
CN104901845B (zh) | 域名whois服务自动化测试系统和方法 | |
US10459698B2 (en) | Framework for generating adapters in an integrated development environment | |
CN104899134A (zh) | 域名注册服务器自动化测试系统和方法 | |
CN102111801B (zh) | 第三代移动通信网网络管理接口的测试方法及系统 | |
CN111176660A (zh) | 一种面向分布式架构的微服务契约管理方法、装置、计算机设备、和可读存储介质 | |
CN111930625B (zh) | 基于云服务平台的日志获取方法、装置及系统 | |
CN117194259A (zh) | 接口测试方法、系统、电子设备及存储介质 | |
WO2023051073A1 (zh) | 数据库测试方法、分布式数据库、存储介质 | |
CN114880239B (zh) | 一种基于数据驱动的接口自动化测试框架及方法 | |
CN113094281B (zh) | 一种混合式App的测试方法及装置 | |
CN115599683A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190618 |
|
RJ01 | Rejection of invention patent application after publication |