性能测试-JMeter(2)

ops/2024/10/17 16:38:26/

JMeter

  • JMeter断言
    • 响应断言
    • JSON断言
    • 断言持续时间
  • JMeter关联
    • 正则表达式提取器
      • 正则表达式
      • 正则表达式提取器
    • XPath提取器
    • JSON提取器
  • JMeter属性
  • JMeter录制脚本

JMeter断言

断言:让程序自动判断预期结果和实际结果是否一致
提示:
-Jmeter在请求的返回层面有个自动判断机制(响应状态码)
-但是请求成功了,并不代表结果一定正确,因此需要检测机制提高测试准确性

  • JMeter中常用断言:
    • 响应断言
    • JSON断言
    • 持续时间断言(Duration Assertion)

响应断言

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

  • 参数配置详细介绍
    • 测试字段:要检查的项(实际结果)
      • 响应文本:来自服务器的响应文本,即主体
      • 响应代码:响应的状态码,例如:200
      • 响应信息:响应的信息,例如:OK
      • Response Headers:响应头部
      • Request Headers:请求头部
      • Request Data:请求数据
      • URL样本:请求URL
      • Document(text):响应的整个文档
      • 忽略状态:忽略返回的响应状态码
    • 模式匹配规则:比较方式
      • 包括:文本包含指定的正则表达式
      • 匹配:整个文本匹配指定的正则表达式
      • Equals:整个返回结果的文本等于指定的字符串(区分大小写)
      • Substring:返回结果的文本包含指定字符串(区分大小写)
      • 否:取反
      • 或者:如果存在多个测试模式,勾选代表逻辑或(只要一个模式匹配,则断言就是OK),不勾选代表逻辑与(所有都必须匹配,断言才是OK)
    • 测试模式:预期结果
      • 即填写你指定的结果(可填写多个),按钮【添加】、【删除】是进行指定内容的管理
        【练习】
        请求:https://www.baidu.com
        检查:让程序检查响应数据中是否包含“百度一下,你就知道”
        操作步骤:
        1.添加线程组
        2.添加HTTP请求
        3.添加响应断言
        4.添加查看结果树
        在这里插入图片描述

JSON断言

作用:对HTTP请求的JSON格式的响应结果进行断言
位置:测试计划 --> 线程组 --> HTTP请求 --> (右键添加)断言 --> JSON断言
在这里插入图片描述
【练习】
请求:http://www.weather.com.cn/data/sk/101010100.html
检查:让程序检查响应的JSON数据中,city对应的内容是否为“北京”
操作步骤:
1.添加线程组
2.添加HTTP请求
3.添加JSON断言
4.添加查看结果树
在这里插入图片描述

断言持续时间

作用:检查HTTP请求的响应时间是否超出要求范围
位置:测试计划 --> 线程组 --> HTTP请求 --> (右键添加)断言 --> 断言持续时间
参数介绍:持续时间(毫秒):HTTP请求允许的最大响应时间(单位:毫秒)。超过则认为失败
在这里插入图片描述
【练习】
请求:https://www.jd.com
检查:让程序检查响应时间是否大于100毫秒
操作步骤:
1.添加线程组
2.添加HTTP请求
3.添加断言持续时间
4.添加查看结果树
在这里插入图片描述

JMeter关联

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

  • JMeter中常用的关联方法
    • 正则表达式提取器
    • XPath提取器
    • JSON提取器

正则表达式提取器

正则表达式

就是一个公式,或者说是一套规则,使用这套规则就可以从任意字符串中提取出想要的数据内容

左边界(.*?)有边界: 可以提取出想要获取的数据内容
.: 是通配符,可以代表任意字符(除换行回车)
*: 代表前面的字符出现0次或者多次
.*匹配规则:找到左边界值后,往右查找右边界,找到最后面的右边界,中间的所有数据都被记录下来
?: 代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找;再次查找左边界和右边界<title>百度一下,你就知道</title><title>百度一下,你就知道</title>
<title>.*?</title>

案例二:

原始文本:
021-1234-1234
022-1234-1235
023-1234-1236
024-1234-1237
025-1234-1238
026-1234-1239
027-1234-1230
要求:匹配出 城市号、地区号、个人号码三组

正则表达式匹配:

(.*?)-(.*?)-(.*?)\n

结论:

  • 通过一个正则表达式可以提取多组数据,每组数据设置对应的左边界和右边界即可
  • 每一组数据都可以有一个或多个值

正则表达式提取器

作用:针对任意格式的响应数据进行提取
位置:测试计划 --> 线程组 --> HTTP请求 --> (右键添加)后置处理器 --> 正则表达式提取器
在这里插入图片描述

【练习】
1、请求:http://www.itcast.cn/,获取网页的title值把获取到的title作为请求参数2、请求:https://www.baidu.com/,把获取到的title作为请求参数
在这里插入图片描述

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

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

方法2
在这里插入图片描述
然后按照下标方式引用
在这里插入图片描述

XPath提取器

作用:针对HTML格式的响应结果数据进行提取
位置:测试计划 --> 线程组 --> HTTP请求 --> (右键添加)后置处理器 --> XPath提取器
在这里插入图片描述
【练习】
1、请求:http://www.itcast.cn/,获取网页的title值
2、请求:https://www.baidu.com/把获取到的title作为请求参数
操作步骤:
1.添加线程组
2.添加HTTP请求-传智播客
3.添加XPath提取器
4.添加HTTP请求-百度
5.查看结果树
在这里插入图片描述
在这里插入图片描述

JSON提取器

作用:针对JSON格式的响应结果数据进行提取
位置:测试计划 --> 线程组 --> HTTP请求 --> (右键添加)后置处理器 --> JSON提取器
在这里插入图片描述
【练习】
1、请求获取天气的接口,http://www.weather.com.cn/data/sk/101010100.html,获取返回结果中的城市名称“北京"
2、请求:https://www.baidu.com/s?wd=北京,把获取到的城市名称作为请求参数
操作步骤:
1.添加线程组
2.添加HTTP请求-天气
3.添加JSON提取器
4.添加HTTP请求-百度
5.查看结果树
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

JMeter属性

为什么要使用JMeter属性?
当有关联关系的两个请求在同一个线程组中时,可以使用三种提取器的变量来实现数据传递。当有关联关系的两个请求在不同线程组中时,如何进行数据传递呢?

  • JMeter属性的配置函数

    • __setProperty函数:讲值保存成JMeter属性
      在这里插入图片描述

    • __property函数:在其他线程组中使用property函数读取属性
      在这里插入图片描述

  • JMeter属性的函数执行

    • __setProperty函数执行(保存JMeter属性):通过BeanShell取样器来执行
    • __property函数:在其他线程组中使用property函数

【练习】
1、线程组1:请求获取天气的接口,http://www.weather.com.cn/data/sk/101010100.html,获取返回结果中的城市名称“北京"
2、线程组2:请求:https://www.baidu.com/s?wd=北京,把获取到的城市名称作为请求参数
操作步骤:
1.添加线程组1
2.添加HTTP请求-天气
3.添加JSON提取器
4.添加BeanShell取样器(将JSON提取器提取的值保存为JMeter属性)
5.添加HTTP请求-百度(读取JMeter属性)
6.添加查看结果树
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

JMeter录制脚本

为什么要录制脚本?
有API文档时,可以根据API文档的定义来编写HTTP接口测试脚本。那如果没有API文档时,该如何来编写HTTP接口测试脚本呢?

  • JMeter录制脚本:在没有接口文档的旧项目当中,快速录制web页面产生的http接口请求,帮助编写接口测试脚本
  • 原理:录制时,JMeter作为代理服务器来拦截和转发请求与响应数据

操作步骤

  1. 添加HTTP代理服务器,并进行配置
    • 加HTTP代理服务器:测试计划(右键) --> 非测试元件 -->HTTP代理服务器
    • 配置代理服务器的参数
      在这里插入图片描述
  2. 开启windows操作系统的浏览器代理
    在这里插入图片描述
  3. 启动代理服务器,开始录制
    在这里插入图片描述
    可以通过Requests Filtering进行过滤设置

http://www.ppmy.cn/ops/126248.html

相关文章

小白投资理财 - 中国股票分类

小白投资理财 - 中国股票分类 按上市地点和投资者类型分类按公司规模和业务领域分类按流通和股东结构分类按公司所有制分类按股票性质和附加权利分类按行业分类总结 中国的股票市场根据不同的标准进行分类&#xff0c;主要分为以下几类&#xff1a; 按上市地点和投资者类型分类…

vue项目发布时移除所有console输出

安装依赖包 npm i babel-plugin-transform-remove-console修改babel.config.js文件 //增加以下配置 if (process.env.NODE_ENV production) {module.exports.plugins.push(transform-remove-console) }

MongoDB文档的详细使用说明

以下是关于MongoDB文档的详细使用说明&#xff1a; 1. 文档的概念 文档是MongoDB中数据的基本单元&#xff0c;它是一个类似于JSON格式的键值对数据结构&#xff0c;也被称为BSON&#xff08;Binary JSON&#xff09;格式。文档可以包含不同类型的数据字段&#xff0c;并且可…

精华版80页PPT | 智能工厂数字化顶层架构

项目背景及需求理解 随着科技的飞速发展&#xff0c;智能工厂的概念逐渐从理论走向实践&#xff0c;成为制造业转型升级的重要方向。方案对智能工厂数字化顶层架构进行全面介绍。在当前的市场环境下&#xff0c;消费者需求日益多样化、个性化&#xff0c;对产品质量、价格、环…

Vue——Uniapp回到顶部悬浮按钮

代码示例 <template><view class"updata" click"handleup" :style"{bottom: bottomTypepx}" ><i class"iconfont icon-huidaodingbu"></i></view> </template><script> export default {n…

JavaScript的100个概念

JavaScript对初学者来说既是福音&#xff0c;也是挑战。一方面&#xff0c;掌握它后可以构建各种项目&#xff0c;比如网站、应用程序和服务器&#xff0c;还能在很多行业找到工作。但另一方面&#xff0c;它又充满怪异之处&#xff0c;并被各种复杂的库和框架包围。在这段课程…

Ambari-2.7.4和HDP-3.1.4安装(附Ambari和HDP安装包)

1.、环境及软件准备 Ambari-2.7.4和HDP-3.1.4下载 ,提取码:3rwq 环境:CentOS7(我这里使用的是CentOS7.9版本)、三台虚拟机,单节点内存13GB、存储80GB 软件:mysql5.7+、jdk8、ambari-2.7.4.0-centos7.tar.gz、HDP-3.1.4.0-centos7-rpm.tar.gz、HDP-UTILS-1.1.0.22-centos7…

说下SSL/TLS四次握手过程?

参考自&#xff1a;SSL/TLS四次握手过程是怎么样的&#xff1f;HTTPS、SSL、TLS三者之间的联系和区别 一.SSL/TLS 简介 SSL(Secure Socket Layer 安全套接层)是基于 HTTPS 下的一个协议加密层&#xff0c;用于解决 HTTP 在传输数据时使用明文而导致的不安全问题。 SSL 是 HT…