Jmeter使用

本文详细介绍了JMeter作为接口测试工具的使用,包括常见测试接口分类、目录结构、组件及执行顺序、接口测试流程、测试实例以及变量和函数的使用。讲解了如何创建测试计划、配置元件、取样器、监听器,并涉及断言、数据驱动和数据库驱动等高级用法,同时提到了通过JMeter录制接口文档的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

Jmeter是目前非常流程测试软件,JMeter是纯JAVA语言写的应用程序,它支持主流测协议,包括FTP/LDAP/JMS/HTTP(S)/JDBC等。

二、常见的测试接口分类

  • Soap框架
    基于webservice的协议:接口地址:http://…?wsdl
  • RPC框架
    基于(dubbo(thwift))协议的接口:dubbo://
  • RestFull框架(80%)
    基于http协议:

    请求:请求行(请求方式和请求路劲),请求头,请求报文
    请求方式:get、post、put、delete
    请求路径:url
    请求头:
    Accept:如application/json; 指定客户端接收的数据格式
    Content-type:如application/json;指定客户端发送的数据格式
    X-Requested-with:异步请求(登录,ajax)
    User-Agent:如User-Agent: Mozilla/5.0 客户端的类型,表示浏览器请求还是其他什么设备请求
    Cookie:服务器返回给客户端并且保存的Cookie信息
    响应:响应行(响应码和响应信息),响应头,响应报文
    响应码:一般情况:1xx状态;200成功;3xx重定向;4xx客户端错误;5xx服务端错误
## 三、目录结构说明 ![在这里插入图片描述](https://img-blog.csdnimg.cn/29f579a0388748f5a723bf897fe5a98d.png) 最重要的三个文件夹:
  • backups 备份目录,jmx的脚本,自动的保存在此处。
  • bin 存放jmeter的启动脚本,配置文件,模块文件
    jmeter.bat 启动脚本
    jmeter.properties 全局配置文件,如:永久中文 修改 language=ZH_CN
  • extras 存放和第三方构建的文件,比如:Ant,build.xml

四、组件和执行顺序和作用域

4.1 组件

  1. 测试计划:jmeter的起点和容器
  2. 线程组:代表一定的虚拟用户
  3. ★取样器:发送请求的最小单元
  4. 逻辑控制器:控制组件的执行顺序
  5. 前置处理器:在请求之前执行
  6. 后置处理器:在请求之后执行
  7. 断言:判断请求是否成功
  8. 定时器:是否延迟或间隔发送请求
  9. 配置原件:请求期的配置信息
    10.监听器:负责收集测试的结果

4.2 执行顺序

执行计划→ 线程组→配置原件→前置处理器→定时器→取样器→后置处理器→断言→监听器

4.3 组件作用域

基本每个组件的作用域都适合一下规则:组件会作用于它的父级组件及同级组件以及同级组件的子组件

4.4 接口测试流程

一般一个接口:20到30个用例是比较正常的。

五、第一个测试实例

一个标准的使用用例一般要包括如下内容

5.1 添加测试计划

略

5.2 在测试计划下添加线程组

在这里插入图片描述

5.3 在线程组下添加【配置元件】

5.3.1 添加 cookie管理器

在这里插入图片描述

5.3.2 添加【用户自定义的变量】

在这里插入图片描述
引用变量:${xxx}
在这里插入图片描述

5.3.3 添加【HTTP请求默认值】

一般是添加请求的ip和端口,这样在取样器里面就不需要再写ip和端口了。
在这里插入图片描述
在这里插入图片描述

5.4 ★在线程组下添加【取样器】

5.4.1 【HTTP请求】取样器

在这里插入图片描述在这里插入图片描述

★5.4.2 【BeanShell取样器】

beanshell的基本用法
在这里插入图片描述
在这里插入图片描述

5.5 在线程组下添加【监听器】用于查看结果,以【查看结果树】为例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.5.1 常用的筛选方式【正则表示式】

在这里插入图片描述

5.5.2 常用的筛选方式【json表示式】

在这里插入图片描述
在这里插入图片描述

5.6 在取样器下添加提取器,最常用的是【正则表达式提取器】和【JSON提取器】

提取器可以在5.5中去测试正确性

5.6.1 正则表达式提取器

在这里插入图片描述
在这里插入图片描述

★ 万能的正则表达式提取器

在这里插入图片描述

"label":"(.*?)",[\s\S]*?"sValue":"(.*?)"
5.6.2 JSON提取器

在这里插入图片描述
在这里插入图片描述

5.6.3 添加调试取样器,用来查看取样器的结果

在这里插入图片描述
在这里插入图片描述

5.7 添加调试取样器

通过调试取样器,可以更好的查看取样器里面拿到的内容
在这里插入图片描述
在这里插入图片描述

5.8 ForEach控制器,使用它来实现批量删除。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.9 定时器

在这里插入图片描述
在这里插入图片描述

5.10 文件上传接口

在这里插入图片描述

5.11 接口断言【响应断言】,【JSON断言】,【BeanShell断言】

在这里插入图片描述

5.11.1 响应断言-状态断言

在这里插入图片描述

5.11.2 响应断言-业务断言

在这里插入图片描述

5.11.3 断言成功

在这里插入图片描述

5.12 数据驱动,批量自定义参数,有些接口需要进行反例测试时可以使用,批量操作。

新建一个.csv 文件 把参数写进去
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

5.13 数据库驱动

5.13.1 在jemeter下添加mysql连接驱动

在这里插入图片描述

5.13.2 JDBC连接池配置

在这里插入图片描述
在这里插入图片描述

5.13.3 JDBC Request jdbc请求

在这里插入图片描述
在这里插入图片描述

5.13.4 返回结果处理

在这里插入图片描述

六、通过jemeter录制接口文档通过jmeter的http代理服务实现。

6.1 添加一个【HTTP代理服务器】

在这里插入图片描述

6.2 代理服务设置

6.2.1 添加代理服务器

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

6.2.3 启动

在这里插入图片描述

七、变量的产生使用

7.1 ★变量的使用

1.json或正则表达式提取器变量:${变量名} (这种方式只能访问线程内的)去访问,可以 用在http请求地址栏,请求体等地方法
2.beanshell中的变量:

//添加全局变量
props.put("_all_name","张三");
props.put("_all_age",23+"");
// 添加线程内的变量
vars.put("_name","李四");
vars.put("_age",8+"");
// 获取全局
log.info(props.get("_all_name"));
log.info(props.get("_all_age"));
或通过函数获取全局变量
log.info("线程2---"+props.get("_all_name")+":"+props.get("_all_age"));
log.info("线程22---${__property(_all_name,,)}"+":${__property(_all_age,,)}");

// 获取线程内
log.info(vars.get("_name"));
log.info(vars.get("_age"));

八、函数的使用

## 1-100的随机数
${__Random(1,100,aaa)} 
## 从abcdefg随机找出2个字母
${__RandomString(2,abcdefg,)}
## 设置全局变量password=111111
${__setProperty(passwrd,111111,000000)}
## 获取全局变量的值
${__P(passwrd,)} 或 ${__property(passwrd,,)}x
## 分割成数组,可以用${data_x} 访问
${__split(a;b;c;d,data,;)}
结果:
		data_n=4
		data_2=b
		data_1=a
		data_4=d
## 当前时间戳
${__time(,)}

九、最佳实战

在这里插入图片描述

Jmeter各个版本下载地址(包括所有版本) [ ] apache-jmeter-2.10.tgz 2013-10-20 16:32 28M [TXT] apache-jmeter-2.10.tgz.asc 2013-10-20 16:32 836 [ ] apache-jmeter-2.10.tgz.md5 2013-10-20 16:32 56 [ ] apache-jmeter-2.10.tgz.sha 2013-10-20 16:32 64 [ ] apache-jmeter-2.10.zip 2013-10-20 16:32 30M [TXT] apache-jmeter-2.10.zip.asc 2013-10-20 16:32 836 [ ] apache-jmeter-2.10.zip.md5 2013-10-20 16:32 56 [ ] apache-jmeter-2.10.zip.sha 2013-10-20 16:32 64 [ ] apache-jmeter-2.11.tgz 2014-01-04 13:30 28M [TXT] apache-jmeter-2.11.tgz.asc 2014-01-04 13:30 836 [ ] apache-jmeter-2.11.tgz.md5 2014-01-04 13:30 56 [ ] apache-jmeter-2.11.tgz.sha 2014-01-04 13:30 64 [ ] apache-jmeter-2.11.zip 2014-01-04 13:30 30M [TXT] apache-jmeter-2.11.zip.asc 2014-01-04 13:30 836 [ ] apache-jmeter-2.11.zip.md5 2014-01-04 13:30 56 [ ] apache-jmeter-2.11.zip.sha 2014-01-04 13:30 64 [ ] apache-jmeter-2.12.tgz 2014-11-09 10:42 30M [TXT] apache-jmeter-2.12.tgz.asc 2014-11-09 10:42 836 [ ] apache-jmeter-2.12.tgz.md5 2014-11-09 10:42 56 [ ] apache-jmeter-2.12.tgz.sha 2014-11-09 10:42 64 [ ] apache-jmeter-2.12.zip 2014-11-09 10:42 32M [TXT] apache-jmeter-2.12.zip.asc 2014-11-09 10:42 836 [ ] apache-jmeter-2.12.zip.md5 2014-11-09 10:42 56 [ ] apache-jmeter-2.12.zip.sha 2014-11-09 10:42 64 [ ] apache-jmeter-2.13.tgz 2015-03-13 19:30 34M [TXT] apache-jmeter-2.13.tgz.asc 2015-03-13 19:30 819 [ ] apache-jmeter-2.13.tgz.md5 2015-03-13 19:30 56 [ ] apache-jmeter-2.13.tgz.sha 2015-03-13 19:30 64 [ ] apache-jmeter-2.13.zip 2015-03-13 19:30 36M [TXT] apache-jmeter-2.13.zip.asc 2015-03-13 19:30 819 [ ] apache-jmeter-2.13.zip.md5 2015-03-13 19:30 56 [ ] apache-jmeter-2.13.zip.sha 2015-03-13 19:30 64 [ ] apache-jmeter-2.6.tgz 2012-02-01 19:59 21M [TXT] apache-jmeter-2.6.tgz.asc 2012-02-01 19:59 836 [ ] apache-jmeter-2.6.tgz.md5 2012-02-01 19:59 55 [ ] apache-jmeter-2.6.tgz.sha 2012-02-01 19:59 63 [ ] apache-jmeter-2.6.zip 2012-02-01 19:59 23M [TXT] apache-jmeter-2.6.zip.asc 2012-02-01 19:59 836 [ ] apache-jmeter-2.6.zip.md5 2012-02-01 19:59 55 [ ] apache-jmeter-2.6.zip.sha 2012-02-01 19:59 63 [ ] apache-jmeter-2.7.tgz 2012-05-27 21:08 22M [TXT] apache-jmeter-2.7.tgz.asc 2012-05-27 21:08 836 [ ] apache-jmeter-2.7.tgz.md5 2012-05-27 21:08 55 [ ] apache-jmeter-2.7.tgz.sha 2012-05-27 21:08 63 [ ] apache-jmeter-2.7.zip 2012-05-27 21:08 24M [TXT] apache-jmeter-2.7.zip.asc 2012-05-27 21:08 836 [ ] apache-jmeter-2.7.zip.md5 2012-05-27 21:08 55 [ ] apache-jmeter-2.7.zip.sha 2012-05-27 21:08 63 [ ] apache-jmeter-2.8.tgz 2012-11-26 01:30 23M [TXT] apache-jmeter-2.8.tgz.asc 2012-11-26 01:30 836 [ ] apache-jmeter-2.8.tgz.md5 2012-11-26 01:30 55 [ ] apache-jmeter-2.8.tgz.sha 2012-11-26 01:30 63 [ ] apache-jmeter-2.8.zip 2012-11-26 01:30 25M [TXT] apache-jmeter-2.8.zip.asc 2012-11-26 01:30 836 [ ] apache-jmeter-2.8.zip.md5 2012-11-26 01:30 55 [ ] apache-jmeter-2.8.zip.sha 2012-11-26 01:30 63 [ ] apache-jmeter-2.9.tgz 2013-01-27 17:28 25M [TXT] apache-jmeter-2.9.tgz.asc 2013-01-27 17:28 836 [ ] apache-jmeter-2.9.tgz.md5 2013-01-27 17:28 55 [ ] apache-jmeter-2.9.tgz.sha 2013-01-27 17:28 63 [ ] apache-jmeter-2.9.zip 2013-01-27 17:28 27M [TXT] apache-jmeter-2.9.zip.asc 2013-01-27 17:28 836 [ ] apache-jmeter-2.9.zip.md5 2013-01-27 17:28 55 [ ] apache-jmeter-2.9.zip.sha 2013-01-27 17:28 63 [ ] apache-jmeter-3.0.tgz 2016-05-17 18:34 43M [TXT] apache-jmeter-3.0.tgz.asc 2016-05-17 18:34 819 [ ] apache-jmeter-3.0.tgz.md5 2016-05-17 18:34 55 [ ] apache-jmeter-3.0.tgz.sha 2016-05-17 18:34 63 [ ] apache-jmeter-3.0.zip 2016-05-17 18:34 46M [TXT] apache-jmeter-3.0.zip.asc 2016-05-17 18:34 819 [ ] apache-jmeter-3.0.zip.md5 2016-05-17 18:34 55 [ ] apache-jmeter-3.0.zip.sha 2016-05-17 18:34 63 [ ] apache-jmeter-3.1.tgz 2016-11-19 22:49 45M [TXT] apache-jmeter-3.1.tgz.asc 2016-11-19 22:49 801 [ ] apache-jmeter-3.1.tgz.md5 2016-11-19 22:49 55 [ ] apache-jmeter-3.1.tgz.sha 2016-11-19 22:49 63 [ ] apache-jmeter-3.1.zip 2016-11-19 22:49 48M [TXT] apache-jmeter-3.1.zip.asc 2016-11-19 22:49 801 [ ] apache-jmeter-3.1.zip.md5 2016-11-19 22:49 55 [ ] apache-jmeter-3.1.zip.sha 2016-11-19 22:49 63 [ ] apache-jmeter-3.2.tgz 2017-04-13 18:07 48M [TXT] apache-jmeter-3.2.tgz.asc 2017-04-13 18:07 833 [ ] apache-jmeter-3.2.tgz.md5 2017-04-13 18:07 55 [ ] apache-jmeter-3.2.tgz.sha 2017-04-13 18:07 63 [ ] apache-jmeter-3.2.zip 2017-04-13 18:07 51M [TXT] apache-jmeter-3.2.zip.asc 2017-04-13 18:07 833 [ ] apache-jmeter-3.2.zip.md5 2017-04-13 18:07 55 [ ] apache-jmeter-3.2.zip.sha 2017-04-13 18:07 63 [ ] apache-jmeter-3.3.tgz 2017-09-21 06:27 49M [TXT] apache-jmeter-3.3.tgz.asc 2017-09-21 06:27 833 [ ] apache-jmeter-3.3.tgz.md5 2017-09-21 06:27 55 [ ] apache-jmeter-3.3.tgz.sha512 2017-09-21 06:27 151 [ ] apache-jmeter-3.3.zip 2017-09-21 06:27 52M [TXT] apache-jmeter-3.3.zip.asc 2017-09-21 06:27 833 [ ] apache-jmeter-3.3.zip.md5 2017-09-21 06:27 55 [ ] apache-jmeter-3.3.zip.sha512 2017-09-21 06:27 151 [ ] jakarta-jmeter-2.5.1.tgz 2011-10-03 20:43 18M [TXT] jakarta-jmeter-2.5.1.tgz.asc 2011-10-03 20:43 836 [ ] jakarta-jmeter-2.5.1.tgz.md5 2011-10-03 20:43 58 [ ] jakarta-jmeter-2.5.1.tgz.sha 2011-10-03 20:43 66 [ ] jakarta-jmeter-2.5.1.zip 2011-10-03 20:43 20M [TXT] jakarta-jmeter-2.5.1.zip.asc 2011-10-03 20:43 836 [ ] jakarta-jmeter-2.5.1.zip.md5 2011-10-03 20:43 58 [ ] jakarta-jmeter-2.5.1.zip.sha 2011-10-03 20:43 66 ........................................
### JMeter 使用教程与操作指南 #### 启动JMeter 为了启动JMeter,在Windows操作系统环境下,需先解压下载好的JMeter压缩包至指定文件夹中。进入`bin`目录之后,通过双击`jmeter.bat`来启动程序[^1]。 对于尚未安装Java Development Kit (JDK) 的环境而言,应当前往Oracle官方网站获取并完成JDK的安装过程。此步骤确保了JMeter能够正常运作,因为其依赖于Java运行时的支持[^2]。 #### 创建测试计划(Test Plan) 一旦成功启动JMeter,用户将面对的是一个名为“测试计划”的初始结构。这是整个性能测试的基础框架,允许定义并发用户的模拟行为以及它们如何交互应用或服务。在此基础上构建具体的测试案例十分关键。 #### 配置线程组(Thread Group) 在线程组配置方面,主要关注三个核心参数:“线程数”、“Ramp-Up 时间”,还有“循环次数”。这些选项决定了虚拟用户的数量、加载速率及重复执行的任务频率。例如,“线程数”设定了参与测试的总人数;而“Ramp-Up 时间”则指明了从第一个到最后一个用户加入所需的时间间隔。“循环次数”控制着每个线程应执行的动作轮次,当选择“永远”时意味着直到手动停止前会一直重复动作[^3]。 ```bash # 假定路径为 C:\tools\apache-jmeter-5.x\bin\ cd "C:\tools\apache-jmeter-5.x\bin" start jmeter.bat ``` 上述命令展示了怎样切换到包含`jmeter.bat`脚本的位置,并利用`start`指令开启新的窗口以运行JMeter GUI模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值