01 dubbo简介

1、dubbo是什么?

dubbo是由阿里巴巴提供的一个开源的、高性能的、优秀的分布式服务框架;

是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题;

提供了丰富的服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。

2、dubbo 基础架构

  • Provider:暴露服务的服务提供者,向注册中心注册自己提供的服务;

  • Consumer:调用远程服务的服务消费者,向注册中心订阅自己想要的服务;

  • Registery:服务注册与发现的注册中心;

  • Monitor:统计服务的调用次数和调用时间的监控中心;

  • Container:服务运行容易,负责启动、加载、运行服务提供者。

02 dubbo接口测试的方法

明确接口的提供方与消费方;

确定接口的调用场景,影响的功能模块;

获取接口文档,参与接口评审,考虑接口设计的合理性;收集服务、注册中心、端口、方法、接口入参等信息;

设计测试用例,包括正向用例、反向用例及场景用例等;

确定测试时需要采用的测试手段,使用的工具,如果是代码,提前准备好脚本、参数化数据、接口关联关系等;

执行测试,记录问题。

telnet命令测试dubbo接口

步骤1:telnet连接远程

cmd命令dos命令行窗口

使用命令telnet 服务提供者ip 提供服务端口(注意ip和端口之间是空格,不是冒号)

如果电脑提示telnet不是内部或外部命令,则在控制面板—>程序---->打开或关闭windows功能,勾选”Telnet 客户端“一项

服务提供者ip 和端口由服得提供方提供

输入以上命令回车后进入telnet远程连接黑窗口,再次回车进入dubbo命令调用窗口,出现以下界面代表连接dubbo成功

查看服务提供者提供的接口列表(ls):

查看接口提供的方法(ls 接口名)

查看接口提供的方法返回值及入参参数类型,需要加-l参数(ls -l 接口名),方法名称前为返回类型,名称后括号内为入参的参数类型

使用invoke方法进行接口调用

invoke 接口名.方法名(入参)

invoke 方法名(入参)

jmeter测试dubbo接口

1、下载jmeter 的dubbo依赖jar包

根据dubbo服务的版本,下载对应的插件版本(下载地址),下载后放到JMeter安装目录中的lib/ext路径下,放入依赖包后需要重启jmeter.

推荐下载jmeter-plugins-dubbo-${version}-jar-with-dependencies.jar包(包含依赖包),如果下载jmeter-plugins-dubbo-${version}.jar,则需要下载插件的依赖包,依赖包和版本如下:

dubbo-2.5.3.jar

javassist-3.15.0-GA.jar

zookeeper-3.4.6.jar

zkclient-0.1.jar jline-0.9.94.jar

netty-3.7.0-Final.jar

slf4j-api-1.7.5.jar

log4j-over-slf4j-1.7.5.jar

2、添加jmeter取样器

添加线程组---->添加取样器---->Dubbo Sample 

在Rregister Settings中设置注册中心相关信息

  • Protocol:使用的注册中心平台类型

  • Address:注册中心的ip地址:端口号

填写完注册中心基本信息后,点击按钮【get provider list】获取所有服务提供者列表:(需要几分钟时间,耐心等待,如果有提示,点击yes),当弹出以下提示,说明获取服务完成。

拉取接口完成后,inferfaces列表下会展示已注册的所有的接口列表,选择一个接口,在Method下拉列表展示该接口关联的所有方法名称。并且在interface settings处自动填充接口信息。

3、添加接口入参

点击新增按钮,可以添加接口入参,paramType填入参数类型,paramValue填入参数值,入参顺序必须与方法定义的入参顺序一致。

  • 入参类型如果为普通类型

    则参数类型值参数:参数类型

  • 入参类型如果是json

    则找开发获取参数类型或通过telnet -l 接口名的方式获取参数类型(以上的详细描述)

  • 入参类型如果是开发自定义封装的参数类型

    需找开发获取jar(放在jmeter的lib\ext目录下),且参数名称需填全称

4、添加结果树

添加监听器—>查看结果树,以方便查看接口测试结果

5、运行接口

python代码实现dubbo接口测试

1、python 测试dubbo基本思路

与telnet命令请求dubbo一致,python 代码实现dubbo的大致思路如下:

导入telnetlib库

import telnetlib

创建telnet链接对象

conn = telnetlib.Telnet()

连接dubbo

conn.open(‘服务名’, 端口)

发起dubbo请求

conn.write(‘invoke 接口名.方法名(入参)’)

注意:

  • 如果参数不正确,dubbo会返回Method not found 错误,json参数需要在json中以形如"class": "net.sf.json.JSONObject"键值对格式插入参数说明

  • 考虑到参数包含中文,所以对于命令使用encode()进行编码

  • 参数需要以str形式传入,故使用json.dumps将json类型转换为str

获取telnet返回的信息

conn.read_until(b’dubbo>‘).decode().split(’\r\n’)[0]

2、python 测试dubbo封装

import telnetlib

import json

class DubboClient(telnetlib.Telnet):

    prompt = 'dubbo>'

    def __init__(self, host, port):

        super().__init__(host,port)

    def invoke(self,service_name,method_name,arg):

        if type(arg) == 'dict':

            arg = json.dumps(arg)

        command_str = 'invoke {0}.{1}({2})\n'.format(service_name, method_name, json.dumps(arg))

        self.write(command_str.encode())

        data = self.read_until(self.prompt.encode()).decode().split('\r\n')[0]

        return data

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐