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)经常会导致数据不一致和团队协作低效率。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
这个DBA有点耶2 小时前
NULL不是空——数据库里最反直觉的设计,90%新人踩过的坑
数据库·mysql·代码规范
karry_k3 小时前
MyBatis批量insert-select踩坑:useGeneratedKeys=true 可能让PostgreSQL返回大量插入结果
java·后端
karry_k3 小时前
PostgreSQL 在 MyBatis 中执行正常 SQL 失效:一次 DELETE USING 踩坑记录
java·后端
这个DBA有点耶4 小时前
AI写的SQL跑崩了生产库,这锅谁背?
数据库·人工智能·程序员
镜舟科技5 小时前
Databricks 再提 LTAP,AI 时代的数据底座为何重回大一统叙事?
数据库·架构·agent
Databend6 小时前
从湖仓升级为 Agent 时代的数据控制面,Snowflake 和 Databricks 有哪些布局
大数据·数据库·agent
SamDeepThinking6 小时前
从源码到代码:MyBatis-Flex 与 MyBatis-Plus 的逐项对比
java·后端·程序员
ClouGence9 小时前
SQL Server CDC 能放到 Always On 备库读吗?一文讲透原理与实践
数据库·sql server
她的男孩9 小时前
Spring Boot 接 Flowable 工作流:用 3 个注解搭一个请假审批流程
java·后端·架构
荣码11 小时前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python