软件测试接口测试从入门到精通:JMeter接口测试

07 JMeter 接口测试 - 性能与功能测试的结合

🎯 本章目标:掌握JMeter的安装配置、接口测试脚本编写、性能测试执行,理解JMeter在接口测试中的应用。


7.1 JMeter 简介

什么是JMeter

Apache JMeter 是一款开源的Java应用程序,最初为Web应用性能测试设计,现支持HTTP、FTP、数据库、消息队列等多种协议的测试。

JMeter能做什么

  • 接口功能测试
  • 接口性能测试
  • 压力测试
  • 负载测试
  • 数据库测试
  • 消息队列测试

为什么选择JMeter

  • 开源免费:Apache开源项目
  • 功能强大:支持多种协议和场景
  • 扩展性好:丰富的插件生态
  • 报告丰富:多种图表和报告格式

7.2 安装与配置

安装要求

启动方式

bash 复制代码
# Windows
bin/jmeter.bat

# macOS/Linux
bin/jmeter.sh

# 命令行模式(无GUI)
bin/jmeter.sh -n -t test.jmx -l result.jtl

7.3 JMeter 界面导览

  • 菜单栏
  • 工具栏
  • 左侧面板:测试计划树
  • 右侧面板:配置区域

核心组件

组件 作用 类比
测试计划 测试的顶层容器 项目
线程组 定义虚拟用户 用户组
取样器 发送具体请求 用户操作
断言 验证响应结果 检查点
监听器 查看结果 报告
配置元件 请求配置 设置
前置处理器 请求前处理 准备
后置处理器 响应后处理 提取

7.4 创建第一个接口测试

步骤

  1. 添加线程组:右键测试计划 → 添加 → 线程 → 线程组,设置线程数:1,Ramp-Up时间:1,循环次数:1
  2. 添加HTTP请求:右键线程组 → 添加 → 取样器 → HTTP请求,协议:https,服务器名称:jsonplaceholder.typicode.com,方法:GET,路径:/posts/1
  3. 添加监听器:右键线程组 → 添加 → 监听器 → 查看结果树
  4. 运行测试:点击工具栏绿色运行按钮

测试结果

复制代码
Thread Name: 线程组 1-1
Sample Start: 2024-01-01 00:00:00 CST
Load time: 234
Connect Time: 45
Latency: 234
Size in bytes: 456
Response code: 200
Response message: OK

7.5 HTTP请求配置详解

基本配置

  • 协议: http/https
  • 服务器名称/IP
  • 端口号
  • 方法: GET/POST/PUT/DELETE
  • 路径
  • 参数/Body数据

POST请求示例

HTTP请求配置:协议 https,服务器名称 api.example.com,方法 POST,路径 /api/login,Body Data 传 JSON 数据,HTTP信息头管理器设置 Content-Type: application/json

常用配置元件

配置元件 用途
HTTP请求默认值 统一设置协议、服务器、端口
HTTP信息头管理器 设置请求头
HTTP Cookie管理器 自动处理Cookie
CSV数据文件设置 数据驱动测试
用户定义的变量 定义全局变量

7.6 断言

响应断言

验证响应中是否包含指定内容:要测试的响应字段选择"响应文本",模式匹配规则选择"包含",要测试的模式填写 "success"

JSON断言

验证JSON字段值:JSON Path 填写 $.code,Expected value 填写 0,验证方式选择"等于"

断言类型对比

断言类型 适用场景
响应断言 验证响应文本内容
JSON断言 验证JSON字段值
持续时间断言 验证响应时间
大小断言 验证响应大小
XPath断言 验证XML内容

7.7 参数化与数据驱动

CSV数据文件设置

数据文件(users.csv)

复制代码
username,password,expectedCode
admin,123456,0
admin,wrong,1001
test,123,1002

JMeter配置

  1. 添加 → 配置元件 → CSV数据文件设置
  2. 文件名:users.csv
  3. 变量名称:username,password,expectedCode
  4. 在HTTP请求中使用:username、password 变量

用户定义的变量

复制代码
用户定义的变量
├── baseUrl: https://api.example.com
├── timeout: 30000
└── version: v1

使用:baseUrl、timeout 变量


7.8 接口关联

正则表达式提取器

从响应中提取token:引用名称 authToken,正则表达式 "token":"(.+?)",模板 1,匹配数字 1

JSON提取器

从JSON响应中提取字段:名称 userId,JSON Path表达式 $.data.id,默认值 NOT_FOUND

关联流程

  1. JMeter发送 POST /login
  2. API返回 token 信息
  3. 后置处理器提取token
  4. JMeter发送 GET /users 携带token
  5. API返回用户列表

7.9 性能测试基础

线程组配置

复制代码
线程组
├── 线程数(用户): 100        ← 并发用户数
├── Ramp-Up时间(秒): 10       ← 10秒内启动100个用户
├── 循环次数: 10               ← 每个用户执行10次
└── 持续时间(秒): 60          ← 测试持续60秒

性能指标

指标 说明 合格标准
响应时间 从发送到收到响应的时间 < 500ms
吞吐量 每秒处理的请求数 根据业务需求
错误率 失败请求占比 < 0.1%
并发数 同时在线用户数 根据业务需求
CPU/内存 服务器资源使用 < 80%

监听器

监听器 用途
查看结果树 查看每个请求的详细结果
聚合报告 统计汇总数据
图形结果 响应时间趋势图
响应断言 验证响应正确性

7.10 命令行运行

无GUI模式

bash 复制代码
# 基本命令
jmeter -n -t test.jmx -l result.jtl

# 参数说明
-n: 非GUI模式
-t: 指定jmx文件
-l: 指定结果文件
-e: 测试结束后生成报告
-o: 指定报告输出目录

# 完整示例
jmeter -n -t api_test.jmx -l result.jtl -e -o report

分布式测试

bash 复制代码
# 启动远程服务器
jmeter-server -Djava.rmi.server.hostname=192.168.1.100

# 控制机执行
jmeter -n -t test.jmx -R 192.168.1.100,192.168.1.101

7.11 JMeter 最佳实践

脚本规范

  • 命名规范:中文/英文统一、见名知意
  • 模块化设计:使用测试片段、模块控制器
  • 参数化:CSV数据驱动、变量管理
  • 断言完善:每个请求都有断言
  • 报告生成:自动生成HTML报告

注意事项

  1. GUI模式仅用于调试,正式测试用命令行
  2. 禁用不必要的监听器,减少资源消耗
  3. 使用断言验证结果,不要只看状态码
  4. 合理设置Ramp-Up时间,避免瞬间高压
  5. 定期清理结果文件,防止磁盘占满

7.12 本章小结

JMeter核心流程

  • 测试计划:线程组配置、用户数量、执行策略
  • 取样器:HTTP请求、参数配置、Body数据
  • 断言:响应断言、JSON断言、持续时间断言
  • 参数化:CSV数据文件、用户定义变量、函数助手
  • 关联:正则提取、JSON提取、XPath提取
  • 报告:聚合报告、HTML报告、命令行执行

课后练习 📝

  1. 基础题:用JMeter创建一个测试计划,测试 jsonplaceholder.typicode.com/posts 接口。
  2. 进阶题:实现登录→获取用户列表的关联测试,使用正则表达式提取token。
  3. 挑战题:设计一个压力测试场景,100用户并发访问接口,持续5分钟,生成HTML报告。

7.13 下章预告

下一章我们将了解其他接口测试工具,如Insomnia、Hoppscotch、Apifox等。


"JMeter是接口性能测试的利器,掌握它,你就能量化评估系统的承载能力。"

相关推荐
糖果店的幽灵3 小时前
软件测试接口测试从入门到精通:HTTP协议详解
软件测试·网络协议·接口测试·http协议·测试基础
糖果店的幽灵3 小时前
软件测试接口测试从入门到精通:curl命令行工具
linux·软件测试·接口测试·命令行·curl
心软小念21 小时前
2026软件测试高频面试题
软件测试·面试·职场和发展
学代码的真由酱1 天前
【自用】接口测试
接口测试·postman·测试·cookie·token鉴权
1candobetter1 天前
JMeter 性能压测监控实战
jmeter
DrMaker1 天前
【无标题】
软件测试·python·测试工具·pyqt
wenying_443237442 天前
软件测试—JMeter—跨线程组关联
jmeter·压力测试
优测云服务平台2 天前
AI 自动化拨测生成,让核心链路巡检从“人工编写”走向“智能生成”
人工智能·接口测试·云拨测
川石课堂软件测试2 天前
UI自动化测试|下拉选择框&弹出框&滚动条操作实践
开发语言·python·jmeter·ui·docker·单元测试·harmonyos