当前位置: 首页 > backend >正文

Jmeter并发测试和持续性压测

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快  

并发测试和持续性压测都是评估系统性能的常用方法,它们可以帮助开发人员发现并解决系统中的性能问题。本文来详细介绍下。

一、概念

并发测试:旨在评估系统在同时处理多个用户请求时的性能。在这种测试中,系统会暴露于一定数量的用户负载下,并且会记录系统的响应时间、吞吐量和资源利用率等指标。这些指标可以用来确定系统的性能瓶颈,以及在不同负载下系统的表现。

持续性压测:旨在评估系统在长时间运行或高负载下的性能。在这种测试中,系统会暴露于一定数量的用户负载下,并且会持续一段时间运行,通常在几个小时或几天。这种测试可以用来确定系统在长时间运行下的表现,以及在高负载下系统是否具有可扩展性。

二、并发测试

在并发测试中,需要选择合适的参数,以模拟实际场景中的用户行为。这些参数包括:

  • 并发用户数:应根据系统的预期使用情况和硬件配置来确定。
  • 请求类型:应选择与实际场景中的用户行为相同或相似的请求类型。
  • 请求频率:应根据实际场景中的用户行为和系统的处理能力来确定。
  • 测试时间:应考虑系统的稳定性和可靠性,通常应持续一段时间。
  • 测试环境:应选择与实际生产环境相同或相似的测试环境。

并发是在线程组下的线程属性中设置的。

  • 线程数:对应的是并发用户数。10 个线程就是模拟 10 个用户。
  • Ramp-Up 时间 (秒):线程准备时长。对应的是测试时间。如果线程数为 10,准备时长为 10,那么需要 1秒钟启动 1 个线程。
  • 循环次数。如果线程数为 10,循环次数为 10,那么每个线程发送 10 次请求。总请求数为 10*10 = 100。如果勾选了“永远”,那么所有线程会一直发送请求,直到手动停止。

设置不同的负载配置,来查看系统在不同负载下的表现。

三、持续性压测

持续性压测和并发测试比,主要的不同就是持续时间长。在Jmeter中持续性压测,只需:

  1. Ramp-Up 设置到比较大的值,比如说 1天(86400秒) 。
  2. 循环次数设置为永远。

四、查看报告

JMeter 监听器用于收集测试结果并生成报告。在使用 JMeter 进行性能测试时,监听器非常重要,可以帮助您确定性能瓶颈和优化机会。以下是一些常用的 JMeter 监听器:

  • 聚合报告:提供有关事务响应时间、吞吐量和错误率的信息。
  • 查看结果树:显示每个请求的响应,包括请求头、请求正文和响应正文。
  • 监听器图形结果:将测试结果可视化,以便更轻松地分析性能问题。
  • 断言结果:验证响应是否满足特定条件。
  • 分布式负载测试图:显示不同服务器上的负载情况。

点击运行,可以看到报告。 汇总报告:

图形结果:

五、总结

在 JMeter 中设置并发是一个重要的过程,需要仔细考虑您要模拟的负载情况以及系统的容量。通过正确设置,可以更好地模拟实际情况并获得更准确的测试结果。

六、试试其他 API 工具

在Apifox中做并发测试也比较容易。上面的例子,对应在Apifox中的实现如下。

创建测试步骤:

配置并发:

点击上面的 “运行” 按钮来执行用例,会展示结果报告:

JMeter 可以用来做性能测试,但在日常工作中,我们还有更多的内容要做: API 设计,API 调试,API Mock等。我们可能会使用多个工具,但在多个工具之间频繁切换(API 设计工具 Swagger、API 测试工具 JMeter)经常会导致数据不一致和团队协作低效率。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

http://www.xdnf.cn/news/14728.html

相关文章:

  • AI+实时计算如何赋能金融系统?DolphinDB 在国泰君安期货年度中期策略会的演讲
  • 鸿蒙版FlutterSDK3.27.4可以使用了
  • 报道称CoreWeave洽谈收购Core Scientific,后者涨超30%
  • 人工智能-基础篇-2-什么是机器学习?(ML,监督学习,半监督学习,零监督学习,强化学习,深度学习,机器学习步骤等)
  • 报表控件stimulsoft教程:在报表、仪表板和 PDF 表单自动生成缩略图
  • 华为云鸿蒙应用入门级开发者认证 实验(HCCDA-HarmonyOS Cloud Apps)
  • 【缓存技术】深入分析如果使用好缓存及注意事项
  • C++(模板与容器)
  • python中学物理实验模拟:斜面受力分析
  • 苍穹外卖day3--公共字段填充+新增菜品
  • python基于协同过滤的动漫推荐系统
  • 【51单片机5毫秒定时器】2022-6-1
  • Linux 内核 TCP 的核心引擎:tcp_input.c 与 tcp_output.c 的协同之道
  • Miniconda+Jupyter+PyCharm初始环境配置
  • 物联网与低代码:Node-RED如何赋能工业智能化与纵横智控的创新实践
  • 【已解决】Android Studio gradle遇到unresolved reference错误
  • 【机器学习深度学习】线性回归
  • 【thinkphp5】Session和Cache记录微信accesstoken
  • 【原创】【4】【辅助工具】基于视觉模型+FFmpeg+MoviePy实现短视频自动化二次编辑+多赛道
  • Gartner《敏捷化组织团队拓扑方法论》学习心得
  • [特殊字符]推客带货小程序解决方案——0门槛裂变营销,佣金赚不停!
  • 华为交换机 USG6311E 新建 vlan
  • 海澜之家旗下斯搏兹选择百胜软件,E3+企业中台持续为运动品牌业务发展赋能
  • Node.js特训专栏-实战进阶:9.MySQL连接池配置与优化
  • Java全栈面试实录:从电商平台到AIGC,技术栈深度解析
  • 领域驱动设计(DDD)【13】之重构中的坏味道:深入理解依恋特性(Feature Envy)与表意接口模式
  • 八股文——JAVA基础:基本数据类型与包装类的区别
  • 基于 Python 的批量文件重命名软件设计与实现
  • FPGA基础 -- Verilog 建模示例之通用移位寄存器
  • Linux远程机器无法连接-------解决方案