当前位置: 首页 > news >正文

性能测试 | 认识性能测试工具JMeter断言、关联、属性以及录制脚本的使用

测试工具JMeter断言、关联

  • JMeter断言
    • 1. 响应断言
      • 案例1 请求:https://www.baidu.com
    • 2. Json断言
      • 案例2 请求:http://www.weather.com.cn/data/sk/101010100.html 【网址报废 仅限于学习】
    • 3. 断言持续时间
      • 案例3 请求:https://www.jd.com
  • JMeter 关联 - 同线程组
    • 1. 正则表达式提取器
      • 案例1 请求:http://www.itcast.cn/,获取网页的title值,再次请求:https://www.baidu.com/,把获取到的title作为请求参数
      • 案例2 案例2:获取传智播客首页的地址,把第5个校区地址作为参数传递(span为地址的校区)
      • 案例3 获取传智播客首页的地址,把第5个校区地址作为参数传递(spa为地址/后面带一、二、三)
    • 2. Xpath提取器
      • 案例1 请求:http://www.itcast.cn/,获取网页的title值,把获取到的title作为请求参数请求 https://www.baidu.com/,
    • 3. Json提取器
      • 案例1 请求获取天气的接,获取返回结果中的城市名称作为请求参数
  • JMeter属性 - 不同线程组
    • JMeter属性的配置函数
    • JMeter属性的函数的执行
      • 案例1 使用两个不同的线程 请求获取天气的接,获取返回结果中的城市名称作为请求参数
  • 关联和属性总结
  • JMeter录制脚本
    • JMeter录制脚本的操作步骤
      • JMeter录制脚本-过滤操作设置

JMeter断言

  • 断言是什么?
    断言:让程序自动判断预期结果和实际结果是否一致。
    JMeter在请求的返回层面有个自动判断机制(响应状态码)(如果状态码为4xx/5xx,判定为失败),但是请求成功了,并不代表结果一定正确,因此需要检测机制提高测试准确性。
  • JMeter中常用断言:
    1. 响应断言
    2. JSON断言
    3. 持续时间断言(Duration Assertion)

1. 响应断言

作用:对HTTP请求的任意格式的响应结果进行断言
位置:测试计划->线程组–>HTTP请求->(右键添加)断言->响应断言

  • 什么时候使用响应断言?
    任意HTTP请求的响应结果,都可以使用响应断言
    在这里插入图片描述
  • 测试字段
    响应文本:来自服务器的响应文本,即主体
    响应代码:响应的状态码,例如:200
    响应信息:响应的信息,例如:OK
    Response Headers:响应头部
    Request Headers:请求头部
    Request Data:请求数据
    URL样本:请求URL
    Document(text):响应的整个文档
    忽略状态:忽略返回的响应状态码
  • 模式匹配规则 比较方式
    包括:文本包含指定的正则表达式
    匹配:整个文本匹配指定的正则表达式
    Equals:整个返回结果的文本等于指定的字符串(区分大小写)
    Substring:返回结果的文本包含指定字符串(区分大小写)
    :取反
    或者:如果存在多个测试模式,勾选代表逻辑或(只要有一个模式匹配,则断言就是0K),不勾选代表逻辑与(所有都必须匹配,断言才是OK)

案例1 请求:https://www.baidu.com

检查:让程序检查响应数据中是否包含“百度一下,你就知道”
在这里插入图片描述

  • 多个断言
    在这里插入图片描述

2. Json断言

作用:对HTTP请求的响应结果是JSON格式进行断言 【使用 $ 符号
位置:测试计划–>线程组–>HTTP请求–>(右键添加)断言–>JSON断言

  • 使用
    在这里插入图片描述

案例2 请求:http://www.weather.com.cn/data/sk/101010100.html 【网址报废 仅限于学习】

检查:让程序检查响应的JSON数据中,city对应的内容是否为北京"
操作步骤:

  1. 添加线程组
  2. 添加HTTP请求
  3. 添加JSON断言
  4. 添加查看结果树
    在这里插入图片描述

3. 断言持续时间

作用:检查HTTP请求的响应时间是否超出要求范围
位置:测试计划–>线程组–>HTTP请求–>(右键添加)断言–>断言持续时间 【单位 :ms】

案例3 请求:https://www.jd.com

检查:让程序检查吟应时间是否大于100毫秒
操作步骤:

  1. 添加线程组
  2. 添加HTTP请求
  3. 添加断言持续时间
  4. 添加查看结果树
    在这里插入图片描述
    在这里插入图片描述

JMeter 关联 - 同线程组

  • 选择商品加入购物车 ,需要几步?
    1. 登录
    2. 加入购物城车 【需要加入的是哪个购物车】
      在这里插入图片描述

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

JMeter中常用的关联方法:

  • 正则表达式提取器
  • XPath提取器
  • JSON提取器

1. 正则表达式提取器

  • . :是通配符,可以代表任意字符(除换行回车)
  • * :代表前面的字符出现0次或者多次
  • .* :匹配规则:找到左边界值后,往右查找有边界,找到最后面的右边界,中间的所有数据都被记录下来
  • ? :代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找:再次查找左边界和右边界
    在这里插入图片描述
    在这里插入图片描述
    作用:针对任意格式的响应数据进行提取
    位置:测试计划–>线程组–>HTTP请求–>(右键添加)后置处理器–>正则表达式提取器
    在这里插入图片描述
  • 使用正则表达式的步骤
    1. 添加线程组
    2. 添加HTTP请求-传智播客
    3. 添加正则表达式提取器
      - 引用名称:存放提取出的值的参数名称,如填写title
      - 正则表达式:左边界(.*?)右边界
      - 模板:用$$引用起来,表示解析出第几个()的值
      在这里插入图片描述
      - 匹配数字:1表示第1个值,-1表示所有取值

案例1 请求:http://www.itcast.cn/,获取网页的title值,再次请求:https://www.baidu.com/,把获取到的title作为请求参数

操作步骤:

  1. 添加线程组
  2. 添加HTTP请求-传智播客
  3. 添加正则表达式提取器
  4. 添加HTTP请求-百度
  5. 添加察看结果树
    在这里插入图片描述

案例2 案例2:获取传智播客首页的地址,把第5个校区地址作为参数传递(span为地址的校区)

响应中的地址格式显示:<p><span>地址</span>上海市浦东新区航头镇航都路18号万香创新港</p>

在这里插入图片描述

  • 若是使用-1获取所有匹配的校区地址,又如何定位到第5个校区呢?
    匹配数字:0代表随机取值,-1代表全部取值,1代表取第一个值
    在这里插入图片描述
    引用:以列表索引的方式来引用。格式:${变量名_索引},索引从1开始
    在这里插入图片描述

案例3 获取传智播客首页的地址,把第5个校区地址作为参数传递(spa为地址/后面带一、二、三)

地址格式1:

地址一昌平区建材城西路金燕龙办公楼一层


地址格式2:

地址上海市浦东新区航头镇航都路18号万香创新港


在这里插入图片描述

2. Xpath提取器

作用:针对HTML格式的响应结果数据进行提取
位置:添加方式:测试计划–>线程组–>HTTP请求–>(右键添加)后置处理器–>XPth提取器
在这里插入图片描述
(1)什么时候可以使用XPATH提取器?

  • 针对HTML格式的响应数据,可以使用XPATH提取器进行提取

(2)使用Xpath提取器"的操作步骤?

  1. 添加线程组
  2. 添加HTTP请求-传智播客
  3. 添加KPATH提取器
    • 勾选Use Tidy(tolerant parser)
    • 引用名称:存放提取出的值的参数名称。如:填写title
    • XPath Query:用于提取值的XPath 表达式
    • 匹配数字:0:表示随机,-1:表示提取所有结果,1表示第一个值

案例1 请求:http://www.itcast.cn/,获取网页的title值,把获取到的title作为请求参数请求 https://www.baidu.com/,

操作步骤:

  1. 添加线程组
  2. 添加HTTP请求-传智播客
  3. 添加XPath提取器
  4. 添加HTTP请求-百度
  5. 添加查看结果树
    在这里插入图片描述

3. Json提取器

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

案例1 请求获取天气的接,获取返回结果中的城市名称作为请求参数

天气接口链接已经失效,仅作为学习使用

操作步骤:

  1. 添加线程组
  2. 添加HTTP请求-天气
  3. 添加JSON提取器
  4. 添加HTTP请求-百度

在这里插入图片描述

JMeter属性 - 不同线程组

当有关联关系的两个请求在同一个线程组中时,可以使用三种提取器的变量来实现数据传递。当有关联关系的两个请求在不同线程组中时,如何进行数据传递呢?
同一个线程组使用的类似于局部变量,而属性的概念类似全局变量

JMeter属性的配置函数

  • _setProperty函数:将值保存成JMeter属性
     _setProperty函数

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

  • 位置
    在这里插入图片描述

JMeter属性的函数的执行

在这里插入图片描述

案例1 使用两个不同的线程 请求获取天气的接,获取返回结果中的城市名称作为请求参数

在这里插入图片描述
操作步骤:

  1. 添加线程组1
  2. 添加HTTP请求-天气
  3. 添加JSON提取器
  4. 添加BeanShell取样器(将JSON提取器提取的值保存为JMeter属性)
  5. 添加HTTP请求-百度(读取JMeter属性)
  6. 设置串行执行
  7. 添加查看结果树
    在这里插入图片描述
    在这里插入图片描述

关联和属性总结

在这里插入图片描述

JMeter录制脚本

  • 为什么要录制脚本?
    有API文档时,可以根据API文档的定义来编写HTTP接口测试脚本。那如果没有API文档时为什么要录制脚本?有API文档时,可以根据API文档的定义来编写HTTP接口测试脚本。那如果没有API文档时,该如何来编写HTTP接口测试脚本呢?
    JMeter录制脚本:在没有接口文档的旧项目当中,快速录制web页面产生的http接口请求,帮助编写接口测试脚本。
    在这里插入图片描述

JMeter录制脚本的操作步骤

  1. 添加HTTP代理服务器,并进行配置

    • 加HTTP代理服务器:测试计划(右键)->非测试元件->HTTP代理服务器
    • 配置代理服务器的参数
      在这里插入图片描述
  2. 开启windowsi操作系统的浏览器代理
    在这里插入图片描述

  3. 启动代理服务器,开始录制
    并不是所有的浏览器都可以抓取到!!!
    在这里插入图片描述

  4. 在浏览器页面中进行操作,成功后,就能在JMeter当中看到抓取到的接口请求了。
    在这里插入图片描述

  • 总结
    在这里插入图片描述

JMeter录制脚本-过滤操作设置

过滤的目的: 抓取更少的内容 提取更想要的内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/515866.html

相关文章:

  • 自编音乐结构理论
  • OpenAI发布AI浏览器Atlas:探索下一代网页交互新可能
  • DDD(二)对比 MVC 架构,DDD 的优劣势
  • 昆山网站建设 熊掌号怎么查名字有没有被注册商标
  • 网站页面好了怎么做后端利川市网站建设
  • [Agent可视化] [特殊字符]可观测体系 | 指标监控 | 分布式追踪 | eg慢请求诊断
  • C语言题目与练习解析:配套《柔性数组和动态内存易错点》
  • 在 IntelliJ IDEA 中启动多个不同端口的 Spring Boot 应用
  • 实战分享:一键自动化下载指定版本的Chrome及Chromedriver(附Python源码)
  • Jetson docker环境搭建
  • FVM (Flutter Version Manager)
  • 湖南手机响应式网站建设企业公司设计网站多少钱
  • 网站 为何要 备案嘉兴网站seo公司
  • stm32_小乌龟使用手册
  • Macs Fan Control Pro for Mac 电脑风扇控制软件
  • 广东哪家网站建设后台管理便捷wordpress配置文件数据库连接
  • 网站建设公司的公司哪家好xml是用来做网站的嘛
  • 17_AI智能体开发架构搭建之Flask集成swagger在线文档实践
  • 数据管理与数据库1.1-1.2
  • 完备的常州网站优化软件开发专业适合女生吗
  • Windows MCP.Net:解锁AI助手的Windows桌面自动化潜能
  • 【设计模式】桥接模式(Bridge)
  • 求个网站好人有好报2023红河网络营销
  • Ubuntu服务器无法显示命令行登录提示
  • 4.cuda全局内存--还没完事
  • 网站建设推广有用吗小公司企业简介300字
  • 乐高发展史
  • 从手动kill到一键管理:我写了个多关键词进程终止脚本,运维效率直接拉满
  • uniapp兼容问题处理总结
  • 遗传算法在波动率策略优化中平衡计算效率与优化效果