【接口测试】神器JMeter

‍1 JMeter是什么

Apache JMeter是Apache组织开发的一款开源软件,是一款非常好用的接口测试工具。它的特点是开源免费,简单好用。

我们在测试过程需要做接口测试的话就可以使用它,也可以用来批量造数据,接下来我们就来看看JMeter是如何使用的吧。

2 JMeter的工作原理

首先我们先了解一下JMeter的工作原理,JMeter向服务器提交请求,从服务器取回请求返回的结果,简单来说就是调接口拿数据。

3 JMeter安装

JMeter官网下载:https://jmeter.apache.org/download_jmeter.cgi

启动JMeter:将zip包解压之后,进入./apache-jmeter-x.x.x/bin目录下的jmeter.bat即可启动JMeter,cmd窗口输出JMeter启日,注意:cmd窗口不能关闭。

启动JMeter成功后可看到如下页面:

4 JMeter进行接口测试

4.1、HTTP请求

1、添加线程组:在测试计划点击右键 > 添加 > 线程组(用户)> 线程组

2、添加HTTP请求:在线程组点击右键 > 添加 > 取样器 > HTTP请求

3、配置HTTP请求:可以在路径里面填写完整的请求地址,也可以分别填写协议,服务器名称或IP,端口号,路径。

4、添加察看结果树:在线程组右键 > 添加 > 监听器 > 察看结果树

通过察看结果树我们可以看到请求头,请求体和响应头,响应体等信息,我们可以查看请求和响应,方便定位问题。

5、运行并察看结果树:点击上方绿色箭头按钮运行,然后点击察看结果树,再点击响应数据,即可查看该请求的响应数据啦。

如果出现中文乱码,在./bin/jmeter.properties进行修改,将#sampleresult.default.encoding=ISO-8859-1改为sampleresult.default.encoding=utf-8就正常了。

至此,一个完整的HTTP请求已经完成。

4.2、Dubbo请求

1、下载dubbo插件:https://codechina.csdn.net/mirrors/dubbo/jmeter-plugins-dubbo/-/releases/2.7.8?spm=1033.2243.3001.5876

2、将插件放到./lib/ext目录下,重启JMeter

3、添加Dubbo请求:在线程组右键 > 添加 > 取样器 > Dubbo Sample

4、配置Dubbo请求

5、Dubbo请求demo

6、Dubbo Sample参数详解

Protocol:注册协议,包括zookeeper、multicast、Redis、simple;

Address:注册地址,dubbo服务的IP+Port:

①、当使用zk,address填入zk地址,集群地址使用","分隔;

②、使用dubbo直连,address填写直连地址和服务端口;

Protocol:使用的dubbo协议,包括dubbo、rmi、hessian、webservice、memcached、redis,根据自己的协议类型选择对应的选项即可;

Timeout:请求超时时间,单位ms,根据dubbo具体配置填写;

Version:版本,dubbo不同版本之间差异较大,不同版本之间不能互相调用,这里指定dubbo版本,是为了方便识别和说明;

Retries:异常重试次数(类似这种分布式服务通信框架,大多都有重试机制,是为了保证事务成功率);

Cluster:集群类型,包括failover、failfast、failsafe、failback、failking;

Group:组类型,如果有的话,根据配置填写即可;

Connections:连接数,同上,根据配置填写;

Async:服务处理类型,包括sync(同步)、async(异步),根据配置填写;

Loadbalance:负载均衡策略,包括random(随机)、roundrobin(轮询)、leastactive(最少活跃数)、consistenthash(一致性哈希);

Interface:接口名(因为dubbo服务大多是开发根据规范自行命名的,因此这里需要填写完整的接口名+包名);

Method:当前接口下的方法名,按照开发提供的API文档填写即可;

Args:接口报文,根据API文档填写,如上图所示,添加输入行,输入对应的参数类型和值即可(参数类型和值如何定义填写,请参考上面的链接);

①、paramType:参数支持任何类型,包装类直接使用java.lang下的包装类,小类型使用:int、float、shot、double、long、byte、boolean、char,自定义类使用类完全名称;

②、paramValue:基础包装类和基础小类型直接使用值,例如:int为1,boolean为true等,自定义类与List或者Map等使用json格式数据;

4.3、线程组参数详解

1、线程数:虚拟用户数。可以理解1次请求。

2、Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。

3、循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。

4、Delay Thread creation until needed:直到需要时延迟线程的创建。

5、调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)。

持续时间(秒):测试持续时间,会覆盖结束时间

启动延迟(秒):测试延迟启动时间,会覆盖启动时间

启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它

结束时间:测试结束时间,持续时间会覆盖它

5 JMeter使用小技巧

5.1、 JMeter设置中文

方式一:在./bin/jmeter.properties进行修改,将#language=en改为language=zh_CN,长期有效。

方式二:在选项 > 选择语言 > 中文(简体),本次打开有效,重启后失效,故推荐修改jmeter.properties的方式。

5.2、设置编码

在./bin/jmeter.properties进行修改,将#sampleresult.default.encoding=ISO-8859-1改为sampleresult.default.encoding=utf-8,否则可能会出现响应中文乱码;

5.3、备份文件

在JMeter的backups路径会存储历史版本jmx文件,只要你在页面上点击保存,这里就会存新的一份jmx,所以在这里可以找到历史文件,非常友好。

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

  1. 文档获取方式:

  2. 加入我的软件测试交流群:680748947免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

统计学第1天

描述性统计 统计数据类型分类 按计量尺度划分 分类数据 能归于某一类别的非数字数据,数据是对事进行分类的结果,结果表现为类别,用文字来描述。 例如:人口按照性别(男、女),企业按照所处行业…

进程(2)——进程优先级

1、基本概念 cpu资源分配的先后顺序,就是指进程的优先权(priority)。 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。 还可以把进程运行到指定的CPU上,这样一来&a…

【Unity】捕捉PC桌面的插件

【背景】 之前介绍了如何用一款名为uWindowCapture的Unity免费插件在Unity的Canvas上展示PC桌面。经过一段时间的使用,本篇继续分享此插件的一些功能和限制。 在此感谢作者Hecomi。 【特征和限制】 一般局域网络环境只能最多达到15帧的帧率,所以别幻想用来窜流游戏或者看电…

Linux环境开发工具之vim

前言 上一期我们已经介绍了软件包管理器yum, 已经可以在linux上查找、安装、卸载软件了,本期我们来介绍一下文本编辑器vim。 本期内容介绍 什么是vim vim的常见的模式以及切换 vim命令模式常见的操作 vim底行模式常见的操作 解决普通用户无法执行sudo问…

【机器学习300问】40、如何评估一个异常检测系统?

上一篇文章是我学习异常检测系统如何实现的学习笔记,这篇文章接着上文记录几个评价异常检测系统的关键步骤和指标。如果友友们没有看过之前的文章可以点击下面的链接去看看哦! 【机器学习300问】39、高斯分布模型如何实现异常检测?http://t.…

【鸿蒙HarmonyOS开发笔记】通知模块之发布基础类型通知,内含如何将图片变成PixelMap对象

通知简介 应用可以通过通知接口发送通知消息,终端用户可以通过通知栏查看通知内容,也可以点击通知来打开应用。 通知常见的使用场景: 显示接收到的短消息、即时消息等。 显示应用的推送消息,如广告、版本更新等。 显示当前正…

数据库系统概论-第3章 关系数据库标准语言SQL

3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 空值的处理 3.7 视图 3.8 小结

Wav2Lip+facefusion通过云GPU实现自定义数字人

1 通过Wav2Lip同步嘴型 这里我是用的云GPU,选择的恒通云,下面是我的套餐信息 比较注意的是选择的镜像必须选择拥有python3.6的镜像,因为Wav2Lip需要的环境就是python3.6 开始进入系统执行下面操作 克隆源码: git clone https:…

【四六级最强四六级通关秘籍】十万字经验贴,浅谈 大学生与大学英语四六级的“爱恨情仇“

大学生与大学英语四六级的"爱恨情仇" 一、、创文初衷 1.1创作目的 亲爱的网友们, 大家好!我最近意识到,尽管英语六级考试对许多大学生来说是一个重要的挑战,但并不是每个人都能找到合适的学习方法和技巧来顺利通过这…

计算机设计大赛 题目: 基于深度学习的疲劳驾驶检测 深度学习

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 🔥 优…

内核移植——开发板的软件抽象(struct machine_desc)

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 内核支持什么架构、支持哪款cpu,这是如何确定的?主要是通过机器码来确定的。 内核中定义了一份机器码,uboot也会给内核传递一个机器码。 在内核启动的汇编阶段&…

【呼市经开区建设服务项目水、电能耗监测 数采案例】

实施方案 针对能耗采集中的水、电能源数据采集,因客观因素条件,数据采集方面存在较大难度。大多数国网电表485接口由于封签限制,不能实施采集,不让拆机接线,采集实施存在困难。水量能耗采集,存在类似问题&a…

网络原理(3)——TCP协议

目录 一、连接管理 二、三次握手 1、何为三次握手? 2、三次握手有何意义? 三、四次挥手 三次握手和四次挥手的相似之处和不同之处 (1)相似之处 (2)不同之处 四、TCP的状态 建立连接: 断开…

Fabric.js在vue2中使用

Fabric.js安装 这里我是基于vue来使用的,先安装上Fabric.js npm install fabric 在main.js中 import fabric from fabric Vue.use(fabric);Fabric 提供了 7 种基础形状: fabric.Circle (圆)fabric.Ellipse (椭圆)fabric.Line (线)fabric.Polyline (多条…

GIS学习

匹配查询,先连接两个表,然后在一个表里面查询 合并两个形状 比较好的colormap http://soliton.vm.bytemark.co.uk/pub/cpt-city/views/totp-cpt.html https://docs.gmt-china.org/latest/cpt/builtin-cpt/ 计算坡度时就要捕捉栅格 重分类时也要捕捉栅…

protobuf原理解析-基于protobuf-c实现序列化,反向序列化

1.一个实例 前面介绍了使用protobuf的流程. (1). 定义proto文件来描述需要序列化和反向序列化传输的消息. (2). 借助proto-c,为proto文件生成对应的代码控制文件. (3). 程序借助生成的代码控制文件和protobuf-c动态库的支持实现类…

HarmonyOS如何创建及调用三方库

介绍 本篇主要向开发者展示了在Stage模型中,如何调用已经上架到三方库中心的社区库和项目内创建的本地库。效果图如下: 相关概念 Navigation:一般作为Page页面的根容器,通过属性设置来展示页面的标题、工具栏、菜单。Tabs&#…

win10 配置 oh-my-posh

win10 配置 oh-my-posh 0. 前置1. 安装1.1. 软件1.2. 字体1.3. 激活1.3.1. Git Bash1.3.2. PowerShell 2. 配置2.1. 效果2.2. 说明2.3. 其他2.3.1. 新版PowerShell2.3.2 conda问题 0. 前置 这个东西毕竟是个,命令行美化工具,所以需要先有一个命令行&…

代码随想录算法训练营第60天 | 84.柱状图中最大的矩形

单调栈章节理论基础: https://leetcode.cn/problems/daily-temperatures/ 84.柱状图中最大的矩形 题目链接:https://leetcode.cn/problems/largest-rectangle-in-histogram/description/ 思路: 本题双指针的写法整体思路和42. 接雨水是一…