jmeter 对 dubbo 接口测试是怎么实现的?有哪几个步骤

news2024/10/23 3:26:31

 目录

前言

一.先了解下 dubbo 的原理,最好自己搭建一个案例可参考以下方式搭建

http://09792bb8.wiz03.com/share/s/09uiKU3j2kR120MIpT2AdLm70pfBmE1zFApv2jiDZ01GhE8j

二.编写 dubbo 测试脚本


前言

 最近使用工作中使用jmeter调用dubbo接口进行接口测试,在实际尝试中遇到了一些问题,这里把这些问题整理了出来,特编写此文档,用作记录,同时分享给有需要的童鞋。

      从我最近一段时间的测试来看,Jmeter调用dubbo接口主要有两种方式(可能存在我不知道的方式,如哪位知道,欢迎指点),一种是通过java调用实现;一种是通过Jmeter的dubbo插件来实现。

一.先了解下 dubbo 的原理,最好自己搭建一个案例
可参考以下方式搭建

http://09792bb8.wiz03.com/share/s/09uiKU3j2kR120MIpT2AdLm70pfBmE1zFApv2jiDZ01GhE8j

二.编写 dubbo 测试脚本

源码:
https://git.coding.net/mgjerome/jmeter_dubbo.git
1.创建 jmeter_dubbo Maven 项目

直接 Next 创建项目

2.添加 pom.xml 配置

<properties>
    <spring.version>3.2.4.RELEASE</spring.version>
</properties>
<dependencies>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>2.5.3</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!--dubbo注册中心-->
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.6</version>
    </dependency>
    <!--zookeeper客户端-->
    <dependency>
        <groupId>com.github.sgroschupf</groupId>
        <artifactId>zkclient</artifactId>
        <version>0.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
</dependencies>

3.resources 目录下创建 lib 文件夹存放, dubbo 接口 jar
ApacheJMeter_core.jar ApacheJMeter_java.jar (apache-jmeter-3.2\lib\ext 目录下)
jorphan.jar(apache-jmeter-3.2\lib 目录下 用于 main 调试执行)
dubbo.xsd(由于http://code.alibabatech.com/schema/dubbo/dubbo.xsd 服务已停用 从网上下载该文件,或者从 dubbo-2.5.3.jar META-INF 目录下导出
)

4.创建 dubbo 消费者 xml 文件 consumer.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
      ./dubbo.xsd"
>
    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="hello-consumer" />
    <!-- 使用multicast广播注册中心暴露发现服务地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="helloService" interface="com.service.HelloService" />

</beans>

5.编写 jmeter 脚本

package com.buddo;

import com.service.HelloService;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created by CWGJ008 on 2017/10/13.
 */
public class Dubbo_port extends AbstractJavaSamplerClient {

    private static  ApplicationContext context = new ClassPathXmlApplicationContext("consumer.xml");
    private static HelloService helloService;
    private static long start = 0;
    private static long end = 0;

    public void setupTest(JavaSamplerContext arg0){
        helloService=(HelloService)context.getBean("helloService");
        start = System.currentTimeMillis();
    }

    public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
        SampleResult sr = new SampleResult();
        sr.setSamplerData("dubbo测试案例");
        sr.sampleStart();// jmeter 开始统计响应时间标记
        String result = helloService.speakHello("chen");
        System.out.println(result);
        if(result.contains("chen")){
            sr.setResponseData("结果是:" + result, null);
            sr.setDataType(SampleResult.TEXT);
            sr.setSuccessful(true);
        }else {
            sr.setSuccessful(false);
        }
        sr.sampleEnd();// jmeter 结束统计响应时间标记
        return sr;
    }

    //测试结束时调用;
    public void teardownTest(JavaSamplerContext arg0) {
        end = System.currentTimeMillis();
        // 总体耗时
        System.err.println("cost time:" + (end - start) + "毫秒");
    }
}

6.编写测试类 , 测试执行完 打包时记得注解

package com.buddo;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

/**
 * Created by CWGJ008 on 2017/10/13.
 */
public class TestMain {
    public static final void  main(String [] args){

        JavaSamplerContext arg0 = new JavaSamplerContext(new Arguments());

        Dubbo_port test=new Dubbo_port();
        test.setupTest(arg0);
        test.runTest(arg0);

    }
}
  1. 打包

点击 OK

点击 OK

Build 文件

第一次 先 Clean
第二次在 Build 生成

  1. 把生成的 jar 放到 apache-jmeter-3.2\lib\ext 目录下

9.重新启动 jmeter

10.jmeter GUI 界面使用方式
创建线程组

创建 java 请求

选择 dubbo 测试接口

添加察看树结果

执行脚本

查看最后的结果

到这里表示已执行成功


衷心感谢每一个阅读我文章的人      要是觉得可以的话请动手点个关注吧

 【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)
》,以及配套的接口文档/项目实战【网盘资源】,需要的朋友可以下方视频的置顶评论获取。肯定会给你带来帮助和方向。

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2213397.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SLAM中的加权最小二乘法

一、数学描述 机器人携带传感器在环境中运动可由 运动方程 和 观测方程 描述。 其中 表示时刻&#xff1b; 表示 时刻的位姿&#xff1b; 是运动传感器的读数或者输入&#xff1b; 为路标点&#xff1b; 表示观测数据。 为运动噪声&#xff0c;例如对机器人下达了前进 1m 的指…

大模型时代,云原生数据底座的创新和实践

本文整理自百度云智峰会 2024 —— 云原生论坛的同名演讲。 大模型毫无疑问是当前技术发展的热点&#xff0c;成为大家默认的提升生产力工具。 但是&#xff0c;大模型训练主要使用互联网上的公开数据为主&#xff0c;没有企业内部的数据&#xff0c;所以大模型本质上自带的都…

并行 parallel broadcast partition pruning 分区裁剪 optimizer_dynamic_sampling=7

insert into abc 没有PDML所以不是全部并行 只有select 的情况 全部并行&#xff0c;没有 px send broadcast &#xff0c;所以rows没从103M变成103*8M select *from A&#xff0c;B where A.Pkey B.Pkey and A.Pkey XX A B表都会进行分区裁剪 ----并行为什么更…

定了!OPPO全旗舰新品10月24日发布

今日&#xff0c;OPPO宣布将于2024年10月24日19&#xff1a;00举办OPPO Find X8系列及旗舰生态新品发布会&#xff0c;以全新一代的年度影像旗舰 OPPO Find X8系列为核心&#xff0c;通过新一代的OPPO Enco X3旗舰耳机、OPPO Pad 3 Pro旗舰平板&#xff0c;以及再度升级的安卓全…

解决低版本pytorch和onnx组合时torch.atan2()不被onnx支持的问题

解决这个问题&#xff0c;最简单的当然是升级pytorch和onnx到比较高的版本&#xff0c;例如有人验证过的组合: pytorch2.1.1cu118, onnxruntime1.16.3 但是因为你的模型或cuda环境等约束&#xff0c;不能安装这么高的版本的pytorch和onnx组合时(例如我的环境是pytorch1.12&…

单细胞转录组亚群分析

1 单细胞转录组亚群常见分析内容 重磅综述&#xff1a;三万字长文读懂单细胞RNA测序分析的最佳实践教程 &#xff08;原理、代码和评述&#xff09; 如何使用Bioconductor进行单细胞分析&#xff1f; 单细胞转录组亚群分析的内容根据样品数目多少&#xff0c;可以分为单个样…

开源项目 - 轻量级人体姿态 人体关键点检测 机器视觉 深度学习

开源项目 - 轻量级人体姿态 人体关键点检测 机器视觉 深度学习 项目地址&#xff1a;https://gitcode.net/EricLee/light_pose 1、数据集来源&#xff1a;coco2017 数据集 * coco 数据集官方网站&#xff1a;https://cocodataset.org/#home * [数据集下载地址(百度网盘 Pa…

CogVideoX:Text-to-Video Diffusion Models with An Expert Transformer

研究背景 背景介绍: 这篇文章的研究背景是文本到视频模型的快速发展&#xff0c;特别是Transformer架构和扩散模型的应用。早期尝试预训练和扩展Transformer生成视频已经显示出巨大潜力&#xff0c;如CogVideo和Phenaki。扩散模型在多模态生成方面也取得了显著进展&#xff0c…

数据结构 -- 排序算法

一 排序 1.1 排序的概念 所谓排序&#xff0c;就是一种使一串数据记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减地组织起来的操作。 从排序方式上&#xff0c;排序算法一般被分为比较排序和非比较排序。从比较排序的内容上&#xff0c;它一般被分为…

Excel:vba实现拆分单元格成一字一单元格

我拿到的表格如下&#xff1a; 我想实现的表格效果如下&#xff1a; 要求就是&#xff1a;将A列的千字文拆分成一个单元格一个字&#xff0c;并整理成4列 我这里是将效果呈现到一个新的表里面&#xff0c;没有在原表里面(在原表里…

SpringBoot统一日志框架

在项目开发中&#xff0c;日志十分的重要&#xff0c;不管是记录运行情况还是定位线上问题&#xff0c;都离不开对日志的分析。 1.日志框架的选择 市面上常见的日志框架有很多&#xff0c;它们可以被分为两类&#xff1a;日志门面&#xff08;日志抽象层&#xff09;和日志实…

使用 PyTorch 构建 LSTM 股票价格预测模型

目录 引言准备工作1. 训练模型&#xff08;train.py&#xff09;2. 模型定义&#xff08;model.py&#xff09;3. 测试模型和可视化&#xff08;test.py&#xff09;使用说明模型调整结论 引言 在金融领域&#xff0c;股票价格预测是一个重要且具有挑战性的任务。随着深度学习…

【观察】超聚变:跨越智能算力“四座大山”,全方位重构“智算底座”

毫无疑问&#xff0c;今天在人工智能的推动下&#xff0c;企业数智化转型已进入规模化“倍增创新”的阶段&#xff0c;尤其是以大模型为代表的AI技术加速演进&#xff0c;以及应用场景的不断拓展加深&#xff0c;都让各类AI创新应用如雨后春笋般涌现&#xff0c;并加速惠及千行…

C++中cout的一些扩展

需要添加<iomanip>头文件 cout有许多扩展功能&#xff0c;比如一直很麻烦的保留小数数位的问题。 这里用几个问题来引入 cout实现保留小数数位 #include<iostream> #include<iomanip> using namespace std; int main(){double x123.345;double y342.324…

【未公开0day】金和OAC6 SignUpload SQL注入漏洞【附poc】

免责声明&#xff1a;本文仅用于技术学习和讨论。请勿使用本文所提供的内容及相关技术从事非法活动&#xff0c;若利用本文提供的内容或工具造成任何直接或间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果均与文章作者及本账号无关。 fofa语…

2024/10/14 英语每日一段

Advocates of the working pattern—100% of the work done in 80% of the time for 100% pay—claim the shorter working week boosts productivity, public health and builds a society “where we work to live, rather than live to work”. But the TaxPayers’ Allianc…

threejs-UV

一、简介 1.介绍 1.什么是UV映射&#xff1f; UV映射是一种将二维纹理映射到三维模型表面的技术。在这个过程中&#xff0c;3D模型上的每个顶点都会被赋予一个二维坐标&#xff08;U, V&#xff09;。U和V分别表示纹理坐标的水平和垂直方向。这些坐标用于将纹理图像上的像素与…

SQL优化,我就用了这几招

先赞后看&#xff0c;Java进阶一大半 阿里巴巴社区博客最近发表了一篇探究MySQL索引策略的博客&#xff0c;下图是一条查询SQL的执行过程。 我是南哥&#xff0c;相信对你通关面试、拿下Offer有所帮助。 敲黑板&#xff1a;本文总结了MySQL语句优化、索引优化常见的面试题&…

景区卫生间智能刷脸取纸机,灵活设置取纸长度、取纸间隔时间

在旅游景区&#xff0c;卫生间的服务质量直接影响着游客的体验。景区卫生间智能刷脸取纸机的出现&#xff0c;为解决游客用纸需求、提高资源利用效率以及提升景区管理水平带来了创新性的解决方案。 一、智能刷脸取纸机功能 1. 精准取纸&#xff1a;能够根据游客的实际需求&…

“链动2+1+消费增值:用户留存新策略“

大家好&#xff0c;我是吴军&#xff0c;目前在一家以创新为核心的软件开发公司担任产品经理。今天&#xff0c;我将深入探讨一个经受住了时间考验且依然充满活力的商业模式——“链动21”模式&#xff0c;并通过一个实例及相关数据展示它如何巧妙应对用户留存与复购的挑战。 首…