尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
8. 测试-性能测试-工具简介及实战
文章目录前言一、工具简介业务流程压测:JMeter企业复杂系统:LoadRunnerHTTP 极限性能:wrk简单快速验证:ab二、JMeter第一部分:基础教程🛠️ 第一步:安装适配 Java 8 的 JMeter1. 选择正确的版本2. 下载与解压3. 启动验证4. 界面汉化(可选)🚀 第二步:创建你的第一个测试计划Demo1. 添加线程组 (模拟用户)2. 添加 HTTP 请求 (模拟操作)3. 添加监听器 (查看结果)📊 第三步:运行与分析1. 运行测试2. 结果分析第二部分:进阶教程🚀 第一步:构建进阶测试计划1. 准备数据文件2. 配置登录接口3. 提取 Token4. 跨线程组传参5. 配置业务接口6. 调用全局 Token📊 第二步:运行与结果分析1. 添加监听器2. 运行测试3. 观察日志4. 结果分析第三部分:进阶分析第一步:构建测试计划(接口配置http请求)1. 进阶核心点:跨线程组传参(token 共享)2. 阶梯加压策略(Stepping Thread Group)3. 参数化配置(CSV Data Set Config)4. 关键配置细节审查5. 整体流程逻辑梳理第二步:结果分析(监听器详解)1. 查看结果树2. jp@gc - Active Threads Over Time3. jp@gc - Response Times Over Time4. jp@gc - Transactions per Second5. 聚合报告第四部分:脚本优化1. 替换 BeanShell(性能优化)2. 完善跨线程组取值3. 添加事务控制器第五部分:技巧1. 挡板机制1. 🧪 使用 WireMock(最推荐,轻量级)原理操作步骤2. ⚙️ JMeter 内部实现 Mock(无需额外工具)方案一:使用 JSR223 Sampler 模拟 HTTP 服务(最灵活)方案二:使用 JMeter 原生 HTTP Mirror Server(最简单)方案对比总结3. 🛡️ 使用 Nginx 反向代理(运维级方案)原理配置示例优点④📊 方案对比与总结前言高并发是大型架构核心,下面详解高并发技术工具。一、工具简介业务流程压测:JMeterJMeter 是 Apache 旗下开源性能测试工具,最初面向 Web 应用测试。来扩展到 HTTP、HTTPS、FTP、JDBC、SOAP、REST、JMS 等多种协议。例如:1. `登录` 2. `↓` 3. `查询商品` 4. `↓` 5. `加入购物车` 6. `↓` 7. `创建订单` 8. `↓` 9. `支付` 10. `↓` 11. `查询订单`可以通过 JMeter 模拟大量用户同时执行这套业务流程。适合大多数测试团队作为主力工具,尤其在接口测试与业务场景压测中表现突出。企业复杂系统:LoadRunnerLoadRunner 是经典的商业性能测试工具,由 Micro Focus(原 HP)推出,长期被大型企业用于复杂系统的性能验证。它覆盖协议广、建模能力强、分析报告成熟,是企业级性能测试的重要代表。相比 JMeter,它更加偏向:大型企业级性能测试与完整性能测试体系。例如:1. `10000用户` 2. `↓` 3. `多个LoadGenerator` 4. `↓` 5. `应用集群` 6. `↓` 7. `数据库集群` 8. `↓` 9. `监控系统`可以从整体系统角度分析性能。LoadRunner 常用于:银行、保险、电商等大型系统;协议复杂的企业应用;需要严谨测试流程和正式报告的项目;大规模、专业化性能测试。HTTP 极限性能:wrkwrk 是一款现代化、高性能的 HTTP 压测工具,采用多线程模型,能够在较少资源消耗下产生较高压力。典型使用:`wrk -t4-c1000-d30s http://localhost:8080/`它主要面向 HTTP/HTTPS 场景,常用于快速验证接口极限性能。简单快速验证:abab(ApacheBench)是 Apache 提供的老牌 HTTP 压测工具,使用非常简单,常用于基础性能验证。-mikechen")虽然功能不如现代工具丰富,但因其轻便、普及度高,仍被广泛使用。如何来选择?工具特点优势局限适用场景JMeter功能全面协议多、脚本强、生态丰富占资源、高并发一般接口测试、业务流程压测LoadRunner企业级专业工具协议全、报告强、流程完善成本高、复杂度高大型企业系统测试wrk高性能命令行工具压测效率高、资源占用低功能单一HTTP 接口基准测试ab经典轻量工具简单快速能力有限初步摸底、教学演示如果需要复杂业务流程和多协议支持:优先选择 JMeter;如果是大型企业、正式交付、预算充足:优先选择 LoadRunner;如果目标是快速测 HTTP 性能极限:优先选择 wrk;如果只是快速验证单接口:可以使用 ab。二、JMeter第一部分:基础教程JMeter 版本最低 Java 要求你的环境 (Java 8)JMeter 6.x (最新版)Java 17❌ 不支持 (无法启动)JMeter 5.7 - 5.9Java 11+❌ 不支持 (无法启动)JMeter 5.6.3Java 8+✅ 完美支持由于 Apache JMeter 的最新版本(5.6+)已经不再支持 Java 8,如果需要使用当前的 Java 环境,必须安装旧版本的 JMeter。以下介绍Java 8 专属的安装与使用教程。🛠️ 第一步:安装适配 Java 8 的 JMeter1. 选择正确的版本核心规则:JMeter 5.5 及之前的版本支持 Java 8。推荐版本:JMeter 5.5(这是支持 Java 8 的最后一个稳定版本,功能足够强大)。避坑指南:千万不要下载 JMeter 5.6、5.6.3 或更高版本,否则启动时会报错提示Java version not supported。2. 下载与解压下载地址:访问 Apache JMeter 官方下载归档。获取文件:找到并下载apache-jmeter-5.5.zip。解压:将压缩包解压到一个路径中不包含中文和空格的目录(例如D:\JMeter\apache-jmeter-5.5)。3. 启动验证进入解压目录的bin文件夹。双击jmeter.bat。如果成功弹出图形界面,说明 Java 8 环境与 JMeter 5.5 完美匹配。4. 界面汉化(可选)默认是英文界面,建议修改配置永久汉化:打开bin/jmeter.properties文件。搜索language=en。修改为language=zh_CN(去掉前面的#号)。保存并重启 JMeter。🚀 第二步:创建你的第一个测试计划Demo我们将模拟10 个用户在10 秒内启动,并发访问百度首页。1. 添加线程组 (模拟用户)线程组是测试的发动机。在左侧“测试计划”上右键 -添加-线程 (用户)-线程组。配置参数:线程数:10(代表 10 个虚拟用户)。Ramp-Up 时间 (秒):10(代表在 10 秒内逐步启动这 10 个用户,避免瞬间冲击)。循环次数:1(每个用户执行 1 次任务)。2. 添加 HTTP 请求 (模拟操作)这是用户具体要执行的动作。右键点击“线程组” -添加-取样器-HTTP请求。配置参数:协议:https服务器名称或IP:www.baidu.com端口号:(留空)方法:GET路径:/3. 添加监听器 (查看结果)没有监听器,测试数据将无法显示。查看结果树:用于调试,看请求是否成功。右键“线程组” -添加-监听器-查看结果树。聚合报告:用于性能分析,看响应时间和吞吐量。右键“线程组” -添加-监听器-聚合报告。📊 第三步:运行与分析1. 运行测试点击工具栏上方的绿色“播放”按钮 (▶️)。2. 结果分析测试完成后,点击“聚合报告”,重点关注以下指标:表格指标名称含义你的关注点Average平均响应时间数值越小越好(单位:毫秒)。90% Line90% 请求的响应时间比如是 50ms,说明 90% 的用户都在 50ms 内得到了响应。Error %错误率必须为 0%。如果有红色报错,说明请求失败。Throughput吞吐量 (TPS/QPS)服务器每秒处理的请求数,数值越大性能越好。第二部分:进阶教程目标的测试计划结构非常清晰,是一个典型的登录获取 Token - 传递 Token - 携带 Token 请求业务接口的链路测试场景。🚀 第一步:构建进阶测试计划构建一个“登录获取 Token - 跨线程组传递 - 业务接口调用”的实战场景。1. 准备数据文件CSV Data Set Config操作:在本地创建一个codes.csv文件,内容如下:文件内容是模拟认证鉴权Oauth2.0流程的授权码列表。测试目标是已通过用户名密码认证后进入,获取授权码-获取token-接口交互的流程h3UVsSKprUTK WY2FIJBQBlng nMkIuCspPQvCJMeter配置:右键点击“测试计划” - “添加” - “配置元件” - “CSV 数据文件设置”。文件名:选择你的codes.csv路径。变量名称:填写code(与文件列对应)。作用:让每个线程(用户)登录时使用不同的授权码。2. 配置登录接口HTTP Request + HTTP Header ManagerHTTP 请求 + HTTP信息头管理器操作:右键“线程组” - “添加” - “取样器” - “HTTP 请求”。命名为“登录接口”。配置:协议:HTTPS。服务器名称或 IP:auth-api-perf.xxx.com.cn。路径:/auth/oauth2/begin-by-postal。方法:POST。Body Data(在“发送文件随请求”上方):{"code":"${code}"}注意:这里使用了${}来调用 CSV 中的变量。信息头管理器,请求头列表中不要多余空行,请求头的键值项也必须准确无空格。3. 提取 TokenJSON ExtractorJSON提取器登录成功后,服务器会返回 JSON 数据,我们需要从中提取token。操作:右键点击“登录接口” - “添加” - “后置处理器” - “JSON 提取器”。配置:名称:提取请求结果token。作用域:主样本(Main sample only)。Names of created variables:token(定义变量名)。JSON Path expressions:$..value(假设返回的 JSON 中 token 字段叫 value,封装在两层的结构体中,请根据实际返回修改)。Match No.:1。4. 跨线程组传参BeanShell PostProcessorBeanShell 后置处理器这是进阶的核心。JMeter 默认变量是线程隔离的,为了让后续的“业务线程组”能用到这里的 token,必须将其转为全局属性。操作:右键点击“登录接口” - “添加” - “后置处理器” - “BeanShell 后置处理器”。配置:有以下两种方式可以实现使用 JMeter函数,如,内置的__setProperty函数。在脚本区域输入以下代码:${__setProperty(global_token,${token},)};不要加//注释,因为 BeanShell 可能会尝试解析注释后的符号代码解释:将提取到的局部变量 token 转换为全局属性 global_token。第三个参数 true 表示保存到文件,重启 JMeter 后依然有效(可选)使用 BeanShell 原生 API。在脚本区域输入以下代码:// 获取局部变量 tokenStringtokenVal=vars.get("token");// 判空保护if(tokenVal!=null){// 设置为全局属性props.
RELATED

相关推荐

【芳芯科技】图像识别教室无人关灯系统

【芳芯科技】图像识别教室无人关灯系统

实物效果图:实现功能:1.采用ARM内核STM32单片机作为控制核心。2.采用OV7670摄像头实现图像获取。3.采用TFT2.8显示配合图像调试显示。4.通过按键进行布放,布放后采用图像算法进行检测,检测到有人体后通过电开关进行教室灯光的开启…

📅 2026/11/6 3:23:18
OpenCV实战第二篇:用代码给照片做一场精细的“像素级整容”

OpenCV实战第二篇:用代码给照片做一场精细的“像素级整容”

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/11/6 3:23:18
ArkUI -- 状态管理 V1和 V2 混用

ArkUI -- 状态管理 V1和 V2 混用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/11/6 3:23:18
MORE NEWS

更多资讯

📰

JavaWeb购物车源码解析:Servlet+JSP+Session实现与二次开发指南

简介:这份JavaWeb简易购物车源代码面向具备Java基础、正在学习Web开发的学生与初级开发者,通过一个可运行的在线购物车系统串联Servlet与JSP、HTTP请求处理、Session会话管理、JDBC数据库交互、MVC分层设计以及JSTL与EL表达式等核心知识点,帮…

📰

JavaWeb简易购物车实战:Servlet+JSP+JDBC完整实现与避坑指南

简介:这份JavaWeb简易购物车源代码面向正在学习JavaWeb开发、希望打通完整业务流程的初学者与进阶者,围绕在线购物车这一典型场景,串联Servlet与JSP、HTTP请求处理、Session会话管理、JDBC数据库交互、MVC分层设计以及JSTL与EL表达式等核心知…

📰

PowerBuilder 11.5 安装配置全攻略:从环境准备到避坑验证

简介:PowerBuilder 11.5 的完整安装包,面向需要搭建 PB 经典开发环境的学习者与维护旧项目的开发者,可用于快速还原一套可用的 PowerBuilder 11.5 开发工具链,解决新机器上缺少安装介质、版本不匹配等问题。压缩包为 rar 格式&…

📰

零基础用HTML+CSS+JS做贪吃蛇游戏

简介:本资源是一份面向前端初学者的HTML贪吃蛇游戏实战项目,聚焦HTML结构搭建、CSS样式布局与JavaScript核心逻辑协同开发,帮助学习者掌握网页交互应用开发的基本流程与关键技巧。压缩包共3个文件(1个HTML主程序文件、1张背景图JP…

📰

C#学籍管理系统源码:Access+WinForms毕设实战指南

简介:这是一套面向计算机专业本科生的C#毕业设计实战源码,聚焦学生学籍管理这一典型校园信息化场景,帮助学习者掌握Windows桌面应用开发、Access数据库集成与基础权限控制等核心技能。资源包含108个文件,主体为28个C#业务逻辑文件…

📰

OPC DA客户端工具包:绕过DCOM直连本地/远程服务器

简介:OPCClientToolKit C/C库是一套面向工业自动化开发者的轻量级OPC DA客户端实现工具包,专为需要快速集成OPC通信功能的C/C工程师设计,支持本地与远程OPC服务器连接,适用于SCADA系统对接、设备数据采集等嵌入式或工控软件开发场…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬