如何对 Apache JMeter 测试脚本进行 Debug?(上)

简介: 如何对 Apache JMeter 测试脚本进行 Debug?

使用 JMeter(或者 BlazeMeter)创建的性能测试脚本也可以算作软件。这也就是为什么性能测试脚本也会出现错误导致 Bugs。

本文中将尝试使用不同的方式来对 JMeter 脚本进行 Debug,包括 Debug 各种 sampler、post-processor 以及 JSR223 sampler。可以根据下面的目录来阅读整篇或者只阅读感兴趣的部分:

如何进行 JMeter 测试脚本的 Debug

JMeter 提供了多种工具来进行性能测试脚本的 Debug。例如,Debug 相关的用例其实就是获取你脚本中指定变量的值,它可以在任何时候获取 JMeter 脚本中的 JMeter 变量定义的内容,因此你识别哪些存储在变量中的、可能导致以外错误的非期望值。

你可以使用如下两个 JMeter 组件来对性能测试脚本进行 Debug:

  • Debug Sampler
  • Debug Post-Processor

Debug Post-Processor 和 Debug Sampler 的比较

Debug Sampler 组件和 Debug Post-Porcessor 组件都可以在 View Result Tree(查看结果树)组件中查看到变量的值。

当你在命令行运行 JMeter 脚本时,Debug 功能是无法使用的。Debug 功能仅支持在 GUI(图形界面) 模式下使用。

Debug Sampler 组件和 Debug Post-Porcessor 组件一个最大的区别是 Debug Post-Porcessor 可以用来获取上一级 Sampler 中的属性值。在 View Result Tree 中,Post-Processor 的结果嵌套在上一级 Sampler 下面。

另外,Debug Post-Porcessor 组件还包含了一个额外的属性,名为 “Sampler properties”,默认值为 true。

如何使用 JMeter 的 Debug Sampler?

我们将使用 deckOfCards 的 API 来演示 JMeter 的 Debug 功能,需要注意的是这些公共 API 仅供学习使用,请不要频繁调用。

步骤一:创建一个 Test Plan

首先,我们创建一个使用 JMeter 内置的 Functional Testing Test [01] 模板来创建一个  JMeter Test Plan,Team 可以使用这个 JMeter 模板来实现 API 功能测试。

这个模板包含了一个 Test Plan,一个 Thread Group 和一个 View Result Tree 组件,如下图所示:

image.png

接着保存并重命名测试计划的名称为 “Debugging in JMeter”,并添加两个变量,变量名和值如下表所示:

JMeter Test Plan 中的变量名 JMeter Test Plan 中的变量值
protocol https
host deckofcardsapi.com

最后将线程组的名称修改为 “Deck of Cards”。

image.png

步骤二:添加一个 Debug Sampler

现在可以选中线程组点击左键添加一个 JMeter ”Debug Sampler“ 组件,并将名称修改为 ”Before Everything Debug Sampler“。

这个 Debug Sampler 默认仅用来显示 JMeter 变量,可以通过更改 JMeter 和 System 属性的标志值来显示它们。

image.png

如何查看 Debug Sampler 的结果?

接着保存测试计划并执行。就可以在 View Result Tree 组件中当中选中并查看 JMeter Debug Smapler 的结果了,JMeter 变量值会在 Response Data 中显示。

image.png

你可以查看在 Test Plan 中定义的 protocol 和 host 变量的值也被打印出来。

调用 HTTP 请求之后 Debug JMeter 变量

接着我们继续来 Debug JMeter 脚本。我们将使用 deckofcards.com 的 API。它是一个免费的且仅供学习使用的网站。

我们将会创建一个 GET 请求并在这个请求后面添加一个 Debug Sampler 组件。通过脚本中变量的值来代表脚本的新的”状态“

可以通过调用 deckofcards 的 API 来创建一个新的 deck of cards,URL和响应值在 deckofcards.com 网站上查看,如下所示。

image.png

接下来的几个步骤将使用 JMeter 来调用 API

  1. 添加一个 HTTP Request,在 JMeter 中,一个 HTTP Request Sampler 可以通过右击线程组并且选择 ”Add => Sampler => HTTP Request“ 来添加。
    添加的 HTTP Request 默认是 GET 方式;需要将这个 Request 修改为 Shuffle
  2. 接下来提供两个变量 protocol∗和∗{protocol}* 和 *protocol{host} 填写在 HTTP Request 中的 ProtocolServer name or IP 当中。请求的路径为:
    /api/deck/new/shuffle/
  3. 现在,我们可以在 ”Send Parameters“ 表中添加 deck_count 变量,并将其值设置为 1。整个 Test Plan 如下截图所示:

image.png

需要注意的是发起 POST 请求设置的内容与上面完全一致。

当前 API 会返回一个 JSON 格式的数据,我们可以使用 JSON Extractor 组件 ”Post-      Processor“ 来提取响应结构中的值并保存在 JMeter 变量中,根据提供的 API 文档,我们可以使用 JSON Path 表达式提取我们所需要的值:

$.deck_id

image.png

  1. 要查看变量的状态,我们需要在 Shuffle 请求后添加一个 Debug Sampler 组件,并命名为 “After Shuffle Debug Sampler”。

image.png


相关文章
|
2月前
|
测试技术 Linux
VPS一键测试脚本,无痕体验+自动导出,服务器测试更轻松
NodeQuality 是一款整合 Yabs、IPQuality、NetQuality 等主流 VPS 测试脚本的全能工具,支持一键测试硬件性能、IP属性、网络质量,并新增分享与导出功能。其“无痕测试”设计不安装依赖、不留残留,兼容性强;测试结果自动排版、截图并生成分享链接,极大提升效率。适合需要全面、快速、干净测试 VPS 的用户,是运维和测评的高效利器。
237 3
|
4月前
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
652 0
|
3月前
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
874 10
|
2月前
|
存储 测试技术 API
数据驱动开发软件测试脚本
今天刚提交了我的新作《带着ChatGPT玩转软件开发》给出版社,在写作期间跟着ChatGPT学到许多新知识。下面分享数据驱动开发软件测试脚本。
106 0
|
3月前
|
监控 Java 数据挖掘
利用Jmeter工具进行HTTP接口的性能测试操作
基础上述步骤反复迭代调整直至满足预期目标达成满意水平结束本轮压力评估周期进入常态监控阶段持续关注系统运转状态及时发现处理新出现问题保障服务稳定高效运作
532 0
|
4月前
|
Web App开发 JavaScript 测试技术
Playwright 极速入门:1 小时搞定环境搭建与首个测试脚本
本文带你1小时快速入门Playwright,完成环境搭建并编写首个测试脚本。Playwright是微软推出的现代化Web自动化测试工具,支持Chromium、Firefox和WebKit三大浏览器引擎,具备跨平台、多语言(Python/JS/Java/C#)特性。其核心优势包括:智能自动等待机制减少失败率、内置录制工具实时生成脚本、多语言灵活选择,以及真移动端设备模拟能力,显著提升测试效率和可靠性。
|
5月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
974 23
|
7月前
|
数据可视化 测试技术 API
JMeter、Apipost 与 Postman 的 API 测试对比:为什么 APIPost 是更聪明的选择
API测试如同筹备一场晚宴,选对工具至关重要。JMeter功能强大但上手难,适合专业用户;Postman简单易用,但在复杂场景和团队协作中表现有限;而Apipost则是一款智能高效的“厨房神器”。它性能测试轻松、结果清晰、学习门槛低,并且能一键集成CI/CD流程。对于追求效率与便捷的团队而言,Apipost无疑是更优选择,让API测试如同五星大厨烹饪般丝滑流畅。
|
9月前
|
人工智能 自然语言处理 测试技术
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
Potpie.ai 是一个基于 AI 技术的开源平台,能够为代码库创建定制化的工程代理,自动化代码分析、测试和开发任务。
790 19
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
|
10月前
|
前端开发 JavaScript 测试技术
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
291 35

推荐镜像

更多
下一篇
oss云网关配置