zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【性能测试】Jmeter工具使用2

测试性能工具 JMeter 使用
2023-09-11 14:17:06 时间

【性能测试】Jmeter工具使用1_小慌慌的博客-CSDN博客目录【性能测试回顾】【今日学习目标】性能测试工具Jmeter和Loadrunner:Loadrunner:工业级的性能测试工具,可以模拟大量用户,并监控性能指标提供报表。Jmeter:性能测试工具,Jmeter软件的功能与Loadrunner基本一致。选择jmeter的原因:jmeter环境搭建:jmeter的功能概要:jmeter文件目录结构:基本配置修改语言:修改外观:jmeter元件及基本作用域:基本元件:作用域的原理:...https://blog.csdn.net/whowhowhoisimportant/article/details/123377630

昨日回顾

(1)Jmeter与Loadrunner
Jmeter优点:开源免费、体积小 Loadrunner优点:支持用户量多,报表精度高、支持IP欺骗 由于Jmeter开源免费,与LR功能基本一致,所以在公司中一般选择Jmeter进行性能测试

(2)Jmeter安装

安装JDK:下载JDK —— 安装 —— 配置环境变量 —— 运行

安装Jmeter:下载Jmeter(注意匹配JDK版本) —— 安装(解压缩) —— 配置环境变量 —— 运 行

(3)Jmeter目录结构: 

bin目录:存放可执行文件和配置文件

printable-docs:存放用户手册 

lib目录:Jmeter运行时依赖的Jar包 

docs目录:存放Jmeter 接口文档

(4)Jmeter的元件和组件

  • 元件类型

线程组:模拟用户

取样器:发送请求

前置处理器:在取样器之前执行,对请求中的参数进行预处理(例如:赋值) —— 相当于 postman的前置请求

后置处理器:在取样器之后执行,对响应中的结果进行处理(例如:提交响应字段)—— 相 当于postman的test

定时器:等待sleep

监听器:日志、查看结果

配置元件:定义参数

断言:对于结果进行检查

测试片段:类似于定义的类,不单独运行,只供其他脚本调用

  • 元件的执行顺序

写脚本的顺序:

定义参数 —— 对请求参数进行赋值 —— 发送请求 —— 收响应 —— 提取响应中的字段 —— 断言响应中的字段 —— 观察运行结果

元件执行顺序:

配置元件 —— 前置处理器 —— 取样器 —— 后置处理器 —— 断言 —— 监听器

如果一个作用域下,有多个相同的元件时(例如:多个取样器),按照从上到下的顺序 执行

(5)Jmeter基本组成

  • 线程组

分类:普通线程组(可以并行或者串行执行)、setup线程组(先执行)、teardown线程组 (后执行)

参数:线程数、ranm-up time、运行次数、运行时间、延迟时间

  • HTTP请求

参数:协议、域名/IP、端口、请求方法、URL路径、编码格式、参数

  • 查看结果树

(6)Jmeter参数化

  • 用户定义的变量:每个用户每次读取的变量值都完全相同
  • 用户参数:不同用户读取的变量值不同,但是同一用户在多次循环时读取的变量值是一致的 
  • CSV数据文件:不同用户读取的变量值不同,同一用户在多次循环时读取的变量值也不同
  • 函数:每次执行读取的变量值都不同,不需要提前定义数据(适用于对数量值无明确要求,只要求 不同)
    •  配置:      
      • 设置:每种不同
      • 引用:${参数名}

今日重点

掌握Jmeter断言使用

掌握Jmeter关联使用

掌握Jmeter自动录制脚本

性能测试工具

Jmeter断言

通过自动化的手段对请求的响应数据进行自动校验

响应断言

添加:线程组——HTTP取样器——断言——响应断言(断言一定是在HTTP请求的子节点下)

 

配置介绍:

类似于assertEqual(response.json,”success“)

  • assertEqual :校验的方式 
  • response.json:要校验的部分 
  • success:用来校验的数据

可以在同一个HTTP请求下包含多个响应断言

JSON断言

断言持续时间

客户端发送请求,到收到服务器的响应的时间,要求不超过指定的时间。

 实际时间,是统计的取样器结果中的load time

 

Jmeter关联

当请求之间有依赖关系,一个请求的入参,需要使用到之前请求的响应数据时,需要使用关联。

 所有提供关联功能的元件都在后置处理器中:

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

正则表达式介绍:

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

左边界(.*?)右边界:可以提取出想要获取的数据内容

正则表达式提取器: 

应用场景:正则表达式提取器可以提取任意格式的响应数据

参数介绍:

模板:正则表达式可能匹配多组值,通过模板的编写来保存指定的值到变量中

 正则表达式提取器的步骤:

1、添加线程组

2、添加HTTP请求 - 传智播客的首页

3、添加正则表达式提取器并配置

4、添加HTTP请求 —— 百度,在参数中引用正则表达式提取器中定义的变量title:${title}

5、添加查看结果树。

案例

获取传智播客首页的地址,并作为参数传递

xpath提取器

应用场景:只能适用于响应消息为HTML格式的情况 

参数介绍:

步骤:

1、添加线程组 

2、添加HTTP请求——传智播客首页 

3、添加xpath提取器

  • 勾选Use Tidy 
  • 填写引用名称:参数名 
  • Xpath路径

4、添加HTTP请求——百度首页

  • 引用xpath提取器中定义的参数名:${参数名}

5、添加查看结果树

json提取器:

应用场景:适用于返回的数据类型为JSON格式的情况

参数介绍:

 

步骤:
1、添加线程组 

2、添加HTTP请求——天气 

3、添加JSON提取器

  • 参数名 
  • JSON路径

4、添加HTTP请求——百度

  •  应用JSON提取器中定义的参数名

5、添加查看结果树。

跨线程组关联

跨线程组关联指的是多个请求之间有关联关系(即一个请求的参数需要使用前面请求的响应),但是两 个请求不在一个线程组内,此时使用提取器无法完成关联,需要使用Jmeter属性来完成数据的传递。

原理

步骤

1、添加线程组1,添加HTTP请求——传智播客

2、添加JSON提取器

3、添加Bean Shell取样器(填写setProperty函数——将提取器提取出来的值赋值给Jmeter属性)

4、添加线程组2,添加HTTP请求——百度

引用前面返回的城市信息(使用property函数——将Jmeter属性值读取出来) 

5、添加查看结果树

 

自动录制脚本

原理

Jmeter在客户端和服务器之间做代理。收到所有的请求和响应数据后,Jmeter再进行逆向解析的动作, 将数据报文转化为脚本。

jmeter脚本录制

1、在测试计划下,添加HTTP代理服务器

2、设置自己PC机的代理

3、点击启动,进入浏览器进入相关的操作,脚本会自动生成并存放在指定的线程组下。

 过滤规则的配置 

Cookie管理器:

管理cookie:自动将cookie信息添加到后续的所有请求中。

登录及后续的相关操作时,需要提前添加HTTP Cookie管理器

 每天进步一点点,加油!!!