性能测试-JMeter(2)

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进行过滤设置
相关推荐
Blankspace学2 小时前
Wireshark软件下载安装及基础
网络·学习·测试工具·网络安全·wireshark
低调之人2 小时前
Fiddler勾选https后google浏览器网页访问不可用
前端·测试工具·https·fiddler·hsts
测试老哥5 小时前
Python自动化测试图片比对算法
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
大霞上仙16 小时前
selenium 在已打开浏览器上继续调试
python·selenium·测试工具
互联网杂货铺21 小时前
几个常见的Jmeter压测问题
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
大霞上仙21 小时前
postman读取文件执行
测试工具·postman
测试者家园1 天前
ChatGPT与接口测试工具的协作
软件测试·测试工具·chatgpt·接口测试·ai赋能·用chatgpt做软件测试·测试图书
ggggyyyyy09281 天前
接口测试-Fidder及jmeter使用
测试工具·jmeter·fiddler·接口测试
明月与玄武1 天前
Jmeter 分布式压测部署--常见坑以及解决方案
分布式·jmeter
字节程序员1 天前
使用JUnit进行集成测试
jmeter·junit·单元测试·集成测试·压力测试