性能测试-jmeter实战6

课程:B站大学
记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师

性能测试-jmeter元件操作


Jmeter响应乱码的解决方法

在jmeter文件中找到jmeter.properties文件,打开文件找到

修改encoding编码为utf-8,在linux中也会进行修改

jmeter中响应显示为中文,常用于接口自动化测试和性能测试编码

今日总结:

Jmeter的参数化

实际场景:模拟100个用户登录,并使用不同的测试金额数据访问支付接口?

步骤:

1、定义csc数据文件,存放1000个不同的用户账号密码

2、添加线程组,将线程组的线程数设置为1000

3、添加csv数据文件设置,读取csv数据文件中的用户账号密码

4、添加http请求(用户登录的请求),在请求中引用csv数据文件设置中的用户账号、密码的参数

5、添加http请求(支付请求),使用counter函数作为支付金额的参数

6、添加查看结果数,观察结果

​一、最常用参数化方式

1、​​CSV Data Set Config(CSV数据文件读取)​​

​​适用场景​​:模拟多用户登录、订单提交等需要不同参数值的业务(如不同用户名/密码、商品ID/数量)。

​​优势​​:支持外部文件管理数据,易于维护,适合大规模数据驱动测试。

​​示例:电商用户登录性能测试​​

​​业务场景​​:模拟100个用户并发登录,每个用户使用独立的用户名和密码。

​​CSV文件内容(users.csv)​​:

bash 复制代码
username,password
user1,pass123
user2,pass456
user3,pass789
...(可扩展至100行)

在http请求中引用变量名即可

bash 复制代码
用户名:${username}  
密码:${password}

2​、用户定义的变量(User Defined Variables)​​

​​适用场景​​:测试环境的基础配置(如服务器地址、端口、公共参数),或少量固定参数(如地区/渠道ID)。

​​优势​​:全局共享,适合不变量(如生产环境URL)。

​​示例:接口基础配置参数化​​

​​业务场景​​:所有接口请求都需要相同的base_url和app_version。

​​JMeter配置​​:

添加组件:测试计划 或 线程组 → 右键添加 配置元件 → 用户定义的变量

参数设置:

变量名 说明
base_url https://api.example.com 接口基础地址
app_version v2.1 应用版本号
channel official 渠道标识(官方/第三方)

​请求中使用参数​​:

在HTTP请求的服务器名称或IP中填写 ${base_url},路径中引用其他变量:

bash 复制代码
请求路径:/app/${app_version}/user/info?channel=${channel}

3、 ​​函数动态生成参数(__Random、__time等)​

​适用场景​​:需要动态值的业务(如随机订单金额、时间戳参数、唯一ID)。

​​优势​​:无需外部文件,灵活生成实时数据。

​​常用函数及示例​​:

示例:订单提交性能测试​​

​​业务场景​​:模拟用户提交订单,订单金额随机(10-1000元),订单ID唯一。

​​JMeter配置​​:

HTTP请求参数:

函数/变量 说明 应用场景 示例代码
_Random(min, max) 生成 [min, max] 范围的随机整数 模拟商品购买数量(1-10件) ${__Random(1,10)}
__RandomString(length, chars) 生成指定长度的随机字符串 生成随机备注信息 ${__RandomString(10, abcdef123456)}
__time() 获取当前时间戳(毫秒) 记录请求发起时间 ${__time()}
__time(format) 格式化时间(如订单时间) 生成 yyyy-MM-dd HH:mm:ss 格式的时间 ${__time(yyyy-MM-dd HH:mm:ss)}
__UUID 生成唯一标识符 模拟订单ID/会话ID ${__UUID}
bash 复制代码
订单ID:${__UUID}  
订单金额:${__Random(10,1000)}  
下单时间:${__time(yyyy-MM-dd HH:mm:ss)}

4、​​计数器(Counter)​

适用场景​​:需要严格递增的唯一序号(如用户ID、流水号)。

​​优势​​:保证数值连续性,适合数据库主键模拟。

​​示例:用户注册性能测试​​

​​业务场景​​:模拟批量用户注册,用户ID从10001开始递增。

​​JMeter配置​​:

添加组件:线程组 → 右键添加 配置元件 → 计数器

参数设置:

名称 说明
计数器变量名 user_id 后续引用用 ${user_id}(如 ${user_id}
起始值 10001 起始数字
递增步长 1 每次请求 +1
引用名称 user_id 其他元件中通过 ${user_id} 获取当前值
数字格式 00000 可选(如生成5位数字,不足补零,如 01001
请求中使用参数​​:
在注册接口的用户ID字段中填写 ${user_id},每次请求自动递增。

业务实战组合技巧​

1、​​混合使用CSV+函数​​:

  • 从CSV读取基础参数(如用户ID),用函数生成动态值(如订单金额=${__Random(10,1000)})。
  • 示例:电商下单测试中,CSV提供商品ID和用户账号,函数生成随机购买数量和备注。

​​2、参数化与关联结合​​:

  • 先通过CSV读取用户ID,在登录接口获取token,后续请求引用${token}(关联提取)。

​​3、数据准备建议​​:

  • CSV文件数据需覆盖边界值(如最小/最大金额、极端用户名长度)。
  • 敏感数据(如真实密码)建议脱敏或使用测试环境专用账号。

Jmeter断言

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

提示: JMeter断 言是在请求的返回层面增加- - 层判断机制;因为请求成功了,并不代表结果- -定正确,因此需要检测机制提高测试准确性。

1.2 JMeter中常用断言

响应断言

  • 实验tips:


  1. Main sample and sub - samples:表示断言将应用于主样本以及所有子样本
  2. Main sample only:意味着断言仅应用于主样本。
  3. Sub - samples only:即断言仅应用于子样本。
  4. JMeter Variable Name to use:允许指定一个JMeter变量名,断言将应用于该变量所引用的样本。

JSON断言

该组件用来对JSON文档进行验证,验证步骤如下:

  1. 首先解析JSON数据,如果数据不是JSON,则验证失败。
  2. 使用Jayway JsonPath 1.2.0中的语法搜索指定的路径。如果找不到路径,就会失败。
  3. 如果在文档中找到JSON路径,并且要求对期望值进行验证,那么它将执行验证操作。

添加方式:测试计划 --> 线程组 --> HTTP请求 --> (右键添加) 断言 --> JSON断言

持续时间断言(Duration Assertion)

该元件用于验证​​请求的响应时间是否在预期范围内​​。
工作原理​​

  • 1.触发时机:当JMeter发送请求并收到响应后,会计算从请求发出到完整接收响应的总耗时(即"持续时间")。
  • 2.断言判断:将实际持续时间与用户在"持续时间(毫秒)"中设置的阈值比较: 实际时间 ≤ 设定阈值 → 断言通过(标记为绿色✓,不报错)。 实际时间 > 设定阈值 → 断言失败(标记为红色✗,在测试结果中显示错误)。
  • 3.结果影响:断言失败不会中断测试执行,但会在聚合报告、查看结果树等监听器中高亮显示,帮助分析性能问题。
    单位敏感​​:必须输入​​毫秒值​​(非秒!),例如"5秒"需填"5000"。

    接下来,怎么看实践中接口之间有关联,那么就需要对请求参数,响应参数等进行提取
    那么,大家知道有哪些提取器呢??

实践是检验真理的唯一标准