vlambda博客
学习文章列表

Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试

码同学软件测试
02Month01Day 14:00 直播
视频号
预约直播间,👉 《2021春招面试深度分析》

Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试

Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试  简介

在服务端的接口测试中,rpc类型接口非常的普遍,比如dubbo、grpc等接口,针对此类接口,目前没有特别好的通用工具来执行测试,一般都是公司内部会开发一些接口工具实现对内如rpc接口的测试。像是dubbo接口,Jmeter有一个dubbo插件,但是易用性比较差,而且也存在bug,并不能作为测试的首选,这种情况下,不如通过自己写代码的方式来进行测试,即锻炼了自己的代码能力,还能更加深入了解dubbo接口的原理。这篇文章就带领大家一步步实现dubbo接口的脚本编写。


先来简单了解下dubbo的原理。


Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架。

这是dubbo框架架构图

Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试

节点角色说明:


Provider: 接口服务提供方。


Consumer: 接口服务调用方。


Registry: 服务注册与发现的注册中心,比如Zookeeper


Monitor: 统计接口的调用次调和调用时间的监控中心。


Container: 服务运行容器,比如Tomcat之类的。

接下来来说下如何编写dubbo测试脚本。


Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试  获取项目配置信息

首先,你得有一个可以练习的dubbo项目(可以拿公司测试环境的dubbo项目练手)。


其次,找开发要到本次需要测试dubbo接口jar包(通常名字带有”client”、”api”等字样)。使用反编译工具打开jar包,可以看到测试的接口方法,如:

Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试


在OrderService接口中,包含了5个方法。明确本次需要测试哪些方法,比如getOrderById。


最后,找研发问到dubbo项目使用的注册中心ip和端口号,比如10.0.0.28:2181。


Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试  创建Java工程

在idea中(或者eclipse)创建一个Java工程,并将相关的依赖jar包导入的工程中。包括:

dubbo的依赖包(在服务端dubbo项目内可以找到,可以找研发要)

Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试 

dubbo接口包(在服务端dubbo项目内可以找到,可以找研发要)

Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试 

将dubbo的配置文件applicationContext.xml放到项目的src目录下,配置如下:

Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试 

解释:

address处配置的是dubbo注册中心的ip和端口号

interface处配置的是本次要测试的dubbo接口“cn.testfan.dubbo.service.OrderService”


最终,完整的工程结构如图:

Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试 


Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试  编写脚本

在工程的src目录下,创建package和测试类OrderTest,代码很简单,只需要三四行就可以调通dubbo接口,如下:

Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试 

运行脚本,可以看到打印出的结果:

Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试

基本的demo脚本测试通过后,就可以封装为Testng、Junit的测试用例,或者转换为Jmeter Java请求,来进行进一步的接口测试了。


Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试


福利资料

Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试

扫码回复关键字:”领资料“

即可领取2021面试真题

--   Dubbo接口不知道怎么测?教你三行代码实现dubbo接口测试   --


 “在看”点一点 

 天气越来越冷了,记得多加衣服

 👇👇👇 

↓软件测试面试小技巧~