0


【性能测试】03-JMeter使用案例

一、JMeter使用

1. 需求:使用JMeter访问百度首页接口,并查看请求和响应信息

(1)步骤

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

(2)乱码解决

在这里插入图片描述

sampleresult.default.encoding=UTF-8

(3)请求响应不一致问题

当发送www.jd.com的http请求时,查看结果树看到的发送消息和HTTP取样器中配置的不完全一样?

原因分析:

  1. 查看结果数中最外层HTTP请求的 请求信息和响应信息,应该与子节点中最后一个HTTP请求的请求消息和响应消息一致;
  2. 配置的HTTP请求,应该与子节点中第一个HTTP请求的请求信息一致
  3. JMeter可以自动判断/处理响应状态码在这里插入图片描述

2. 线程组

(1)概念

控制JMeter用于执行测试的一组用户

(2)特点

  1. 模拟多人操作 线程数的修改对应结果数的请求数目
  2. 线程组可以添加多个,多个线程组可以并行或串行 并行:默认并行,按照结果返回的快慢进行请求结果的返回(随机顺序) 串行:勾选“独立运行每个线程组(例如在个组运行结束后启动下一个)”会按照线程组添加顺序返回请求
  3. 取样器(请求)和逻辑控制器必须依赖线程组才能使用
  4. 线程组下可以添加其他元件下组件

(3)分类

  • Setup线程组:预测试操作,所有脚本之前执行
  • 普通线程组:执行测试用例,可以有1个或者多个(并行/串行)
  • Teardown线程组:测试后操作,所有脚本之后执行

(4)常见参数与含义

实际应用:根据需求设置参数

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

  1. 线程数代表虚拟用户数,用户数越多,负载越大
  2. 循环次数代表运行时间,次数越多,运行时间越长

3. http请求参数介绍

在这里插入图片描述

举例

案例一(使用HTTP请求路径来传递get请求参数):

  1. 使用1个线程组,添加HTTP请求(百度),路径为:/S
  2. 协议:http
  3. IP:www.baidu.com
  4. 端口号:默认80
  5. 请求:GET
  6. 路径:/S ?wd=test
  7. 运行观察结果

案例二(使用参数列表来传递get请求的参数):

  1. 使用1个线程组,添加HTTP请求(百度),路径为:/S
  2. 协议:https
  3. IP:www.baidu.com
  4. 端口号:默认443
  5. 请求:GET
  6. 路径:/S
  7. 点击添加参数 wd test
  8. 运行观察结果

案例三(使用参数列表来传递POST请求的form格式参数):

  1. 使用1个线程组,添加HTTP请求(百度),路径为:/S
  2. 协议:https
  3. IP:www.baidu.com
  4. 端口号:默认443
  5. 请求:POST
  6. 路径:/S
  7. 点击添加参数(请求体) wd test
  8. 运行观察结果

案例四:
使用HTTP协议,POST请求方法,消息体数据中添加参数为: wd = test,运行观察结果

  1. 使用1个线程组,添加HTTP请求(百度),路径为:/S
  2. 协议:默认http
  3. IP:www.baidu.com
  4. 端口号:默认80
  5. 请求:POST
  6. 路径:/S
  7. *点击添加消息体数据(form/json)wd=test*
  8. 运行观察结果

二、JMeter接口测试技术要点

1. JMeter参数化(重点)

  1. 定义:使用不同的测试数据,调用相同的测试方法进行测试
  2. 本质:实现测试数据与测试方法的分离。
  3. 实现方式: 1. 用户定义的变量 —— 全局变量2. 用户参数 —— 为每个用户分配不同的参数值3. CSV数据文件设置 —— 文件方式参数化4. 函数 —— 随机数据5. 数据库

(1)用户定义的变量-全局变量

  1. 作用 – 定义全局变量
  2. 步骤在这里插入图片描述在这里插入图片描述
  3. 使用:**${变量名}**

(2)用户参数

  1. 作用 – 针对同一组参数,不同用户来访时,使用有不同的值
  2. 位置 – 测试计划——线程组——前置处理器——用户参数在这里插入图片描述
  3. 使用步骤1. 多用户,设置线程组数目2. 添加用户参数3. 添加请求并使用 1. 参数名2. 参数值:${用户参数变量名} 【引用定义的变量名】4. 查看结果树在这里插入图片描述

(3)CSV数据文件设置

  1. 作用 – 让不同用户,在多次循环时可以取到不同的值
  2. 位置 – 测试计划——线程组——配置元件——CSV数据文件设置
  3. 参数在这里插入图片描述在这里插入图片描述
  4. 使用步骤 1. 定义CSV数据文件2. 添加线程组,设置循环次数(看数据文件的条数)3. 添加CSV数据文件设置4. 添加请求

(4)函数参数化(_counter)

  1. 作用 – 自动生成不重复的数据,让每个用户每次循环都能取到不同的数据,不需要提前定义
  2. 生成在这里插入图片描述在这里插入图片描述
  3. 使用(设置线程数&循环次数,${}使用)在这里插入图片描述在这里插入图片描述

(5)实例

在这里插入图片描述

2. Jmeter断言

断言:让程序自动判断预期结果和实际结果是否一致。

(1)响应断言

  1. 作用:对HTTP请求的任意格式的响应结果进行断言
  2. 位置:测试计划–>线程组–> HTTP请求–> (右键添加)断言–> 响应断言在这里插入图片描述
  3. 参数在这里插入图片描述

(2)JSON断言

在这里插入图片描述

参数
在这里插入图片描述

(3)持续时间断言(Duration Assertion)

检查程序响应时间是否满足要求

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

3. Jmeter关联使用

关联:当请求之间有依赖关系,比如一个请求的入参是另一个请求返回
的数据,这时候就需要用到关联处理。
在这里插入图片描述

(1)正则表达式提取器

公式格式:左边界(匹配符号)右边界:可以提取出想要获取的数据内容

  1. .:是通配符,可以代表任意字符(除换行回车)
  2. *: 代表前面的字符出现0次或者多次
  3. .*匹配规则:找到左边界值后,往右查找有边界,找到最后面的右边界,中间的所有数据都被记录下来 eg:<title>(.*)</title>匹配title到/title内的任意多个字符,包含其他标签在内
  4. ?: 代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找;再次查找左边界和右边界 eg:<title>(.*?)</title>匹配title到/title内的任意多个字符,不包含其他标签
  5. 公式格式:左边界(.*?)右边界
  1. 作用:针对任意格式的响应数据进行提取
  2. 位置:测试计划–>线程组–> HTTP请求–> (右键添加) 后置处理器–>正则表达式提取器在这里插入图片描述
  3. 参数在这里插入图片描述
  4. 举例

案例1:获取传智播客首页的title,并作为参数传递
1、请求: http://www.itcast.cn/ ,获取网页的title值
2、请求: https://www.baidu.com/ , 把获取到的title作为请求参数
在这里插入图片描述

案例2:获取传智播客首页的地址,把第5个校区地址作为参数传递(span为地址的校区)
在这里插入图片描述

案例3:获取传智播客首页的地址,把第5个校区地址作为参数传递(span为:地址/地址一/地址二/地址三)
在这里插入图片描述

(2)XPath提取器

  1. 作用:针对HTMI格式的响应结果数据进行提取
  2. 位置:添加方式:测试计划–> 线程组–> HTTP请求 --> (右键添加) 后置处理器–> XPath提取器
  3. 参数在这里插入图片描述

(3)JSON提取器

  1. 作用:针对JSON格式的响应结果数据进行提取
  2. 位置:添加方式:测试计划–> 线程组–> HTTP请求–> (右键添加) 后置处理器–> JSON提取器
  3. 参数在这里插入图片描述

(4)JMeter属性

  1. 当有关联关系的两个请求在同一个线程组中时,可以使用三种提取器的变量来实现数据传递
  2. 当有关联关系的两个请求在不同线程组中时, 如何进行数据传递呢? ——利用全局变量 ——JMeter属性函数可作为全局变量使用

① JMeter属性配置函数

_setProperty

函数:将值保存成JMeter属性

  1. 设置在这里插入图片描述
  2. 使用:设置BeanShell取样器在这里插入图片描述
_ property

函数: 在其他线程组中使用property函数读取属性

  1. 设置在这里插入图片描述
  2. 使用:直接在其他线程组使用即可在这里插入图片描述

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

4. Jmeter自动录制脚本(理解非重点)

  1. 原理
  1. JMeter录制脚本:在没有接口文档的旧项目当中,快速录制web页面产生的http接口请求,帮助编写接口测试脚本。
  2. 正常请求在这里插入图片描述
  1. 录制时,JMeter作为代理服务器(拦截与转发)在这里插入图片描述
  1. 录制步骤 1. 添加代理服务器在这里插入图片描述2. 设置配置参数在这里插入图片描述在这里插入图片描述3. 开启浏览器代理在这里插入图片描述4. 开始录制在这里插入图片描述

本文转载自: https://blog.csdn.net/weixin_47249930/article/details/128990903
版权归原作者 weixin_47249930 所有, 如有侵权,请联系我们删除。

“【性能测试】03-JMeter使用案例”的评论:

还没有评论