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

软件测试接口测试从入门到精通:JMeter接口测试 07 JMeter 接口测试 - 性能与功能测试的结合本章目标掌握JMeter的安装配置、接口测试脚本编写、性能测试执行理解JMeter在接口测试中的应用。7.1 JMeter 简介什么是JMeterApache JMeter是一款开源的Java应用程序最初为Web应用性能测试设计现支持HTTP、FTP、数据库、消息队列等多种协议的测试。JMeter能做什么接口功能测试接口性能测试压力测试负载测试数据库测试消息队列测试为什么选择JMeter开源免费Apache开源项目功能强大支持多种协议和场景扩展性好丰富的插件生态报告丰富多种图表和报告格式7.2 安装与配置安装要求Java 8或更高版本下载地址https://jmeter.apache.org/download_jmeter.cgi启动方式# Windows bin/jmeter.bat # macOS/Linux bin/jmeter.sh # 命令行模式无GUI bin/jmeter.sh -n -t test.jmx -l result.jtl7.3 JMeter 界面导览菜单栏工具栏左侧面板测试计划树右侧面板配置区域核心组件组件作用类比测试计划测试的顶层容器项目线程组定义虚拟用户用户组取样器发送具体请求用户操作断言验证响应结果检查点监听器查看结果报告配置元件请求配置设置前置处理器请求前处理准备后置处理器响应后处理提取7.4 创建第一个接口测试步骤添加线程组右键测试计划 → 添加 → 线程 → 线程组设置线程数1Ramp-Up时间1循环次数1添加HTTP请求右键线程组 → 添加 → 取样器 → HTTP请求协议https服务器名称jsonplaceholder.typicode.com方法GET路径/posts/1添加监听器右键线程组 → 添加 → 监听器 → 查看结果树运行测试点击工具栏绿色运行按钮测试结果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: OK7.5 HTTP请求配置详解基本配置协议: http/https服务器名称/IP端口号方法: GET/POST/PUT/DELETE路径参数/Body数据POST请求示例HTTP请求配置协议 https服务器名称 api.example.com方法 POST路径 /api/loginBody Data 传 JSON 数据HTTP信息头管理器设置 Content-Type: application/json常用配置元件配置元件用途HTTP请求默认值统一设置协议、服务器、端口HTTP信息头管理器设置请求头HTTP Cookie管理器自动处理CookieCSV数据文件设置数据驱动测试用户定义的变量定义全局变量7.6 断言响应断言验证响应中是否包含指定内容要测试的响应字段选择响应文本模式匹配规则选择包含要测试的模式填写 successJSON断言验证JSON字段值JSON Path 填写 $.codeExpected value 填写 0验证方式选择等于断言类型对比断言类型适用场景响应断言验证响应文本内容JSON断言验证JSON字段值持续时间断言验证响应时间大小断言验证响应大小XPath断言验证XML内容7.7 参数化与数据驱动CSV数据文件设置数据文件users.csvusername,password,expectedCode admin,123456,0 admin,wrong,1001 test,123,1002JMeter配置添加 → 配置元件 → CSV数据文件设置文件名users.csv变量名称username,password,expectedCode在HTTP请求中使用username、password 变量用户定义的变量用户定义的变量 ├── baseUrl: https://api.example.com ├── timeout: 30000 └── version: v1使用baseUrl、timeout 变量7.8 接口关联正则表达式提取器从响应中提取token引用名称 authToken正则表达式 token:(.?)模板 $1$匹配数字 1JSON提取器从JSON响应中提取字段名称 userIdJSON Path表达式 $.data.id默认值 NOT_FOUND关联流程JMeter发送 POST /loginAPI返回 token 信息后置处理器提取tokenJMeter发送 GET /users 携带tokenAPI返回用户列表7.9 性能测试基础线程组配置线程组 ├── 线程数用户: 100 ← 并发用户数 ├── Ramp-Up时间秒: 10 ← 10秒内启动100个用户 ├── 循环次数: 10 ← 每个用户执行10次 └── 持续时间秒: 60 ← 测试持续60秒性能指标指标说明合格标准响应时间从发送到收到响应的时间 500ms吞吐量每秒处理的请求数根据业务需求错误率失败请求占比 0.1%并发数同时在线用户数根据业务需求CPU/内存服务器资源使用 80%监听器监听器用途查看结果树查看每个请求的详细结果聚合报告统计汇总数据图形结果响应时间趋势图响应断言验证响应正确性7.10 命令行运行无GUI模式# 基本命令 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分布式测试# 启动远程服务器 jmeter-server -Djava.rmi.server.hostname192.168.1.100 # 控制机执行 jmeter -n -t test.jmx -R 192.168.1.100,192.168.1.1017.11 JMeter 最佳实践脚本规范命名规范中文/英文统一、见名知意模块化设计使用测试片段、模块控制器参数化CSV数据驱动、变量管理断言完善每个请求都有断言报告生成自动生成HTML报告注意事项GUI模式仅用于调试正式测试用命令行禁用不必要的监听器减少资源消耗使用断言验证结果不要只看状态码合理设置Ramp-Up时间避免瞬间高压定期清理结果文件防止磁盘占满7.12 本章小结JMeter核心流程测试计划线程组配置、用户数量、执行策略取样器HTTP请求、参数配置、Body数据断言响应断言、JSON断言、持续时间断言参数化CSV数据文件、用户定义变量、函数助手关联正则提取、JSON提取、XPath提取报告聚合报告、HTML报告、命令行执行课后练习 基础题用JMeter创建一个测试计划测试 jsonplaceholder.typicode.com/posts 接口。进阶题实现登录→获取用户列表的关联测试使用正则表达式提取token。挑战题设计一个压力测试场景100用户并发访问接口持续5分钟生成HTML报告。7.13 下章预告下一章我们将了解其他接口测试工具如Insomnia、Hoppscotch、Apifox等。JMeter是接口性能测试的利器掌握它你就能量化评估系统的承载能力。