JMeter性能测试

JMeter性能测试是检验应用程序性能的一种手段

通过性能测试,可以预测程序的潜在问题,如

  • 程序在多人同时使用的时候是否会变慢
  • 能够在短时间内处理大量请求
  • 系统在高压情况下,是否会崩溃

通过性能测试,大概能够了解程序接口的吞吐量

术语

  • QPS:每秒执行的查询次数,如:一个网站首页每秒可以响应1000次用户请求,则该页面的QPS为1000
  • TPS:每秒事务数(吞吐量),是衡量系统性能的一个重要指标
  • RPS:每秒请求数
  • RT:响应时间,从客户端发起到接收的用时

VU和TPS

  • VU:并发用户

TPS = VU / RT(秒为单位)

如果1个用户在1秒内可以完成1个事务,那么TPS为1

如果这个事务的处理时间是1ms,那么1个用户在1s内能完成1000次事务,那么TPS为1000

如果这个事务的处理时间是1S,那么1个用户在1S内能完成1次事务,那么TPS为1,若想要TPS为1000,那么就需要1000个用户

下载JMeter

访问 Jmeter 官网:https://jmeter.apache.org/download\_jmeter.cgi
image-20250410165716358.png

安装JMeter

JMeter 是 Apache 组织开发的一个开源的性能测试工具,主要用于对Web应用进行功能测试和性能测试。它最初是为了进行软件性能测试而设计的,但随着时间的发展,它的功能已经扩展到可以支持多种协议的测试,包括 HTTP、HTTPS、FTP、JDBC、JMS、SMTP 等

主要特性

  • 多协议支持: JMeter 可以用来测试各种协议的应用程序,这使得它成为一个非常灵活的工具,适用于多种场景
  • 负载测试和压力测试: 它能够模拟大量用户并发访问,用于评估系统的性能和稳定性。这对于识别系统瓶颈和优化系统至关重要
  • 可扩展性: 通过插件和脚本,JMeter 可以扩展其功能,以适应更复杂的应用环境和测试需求
  • 结果分析: JMeter 提供了丰富的图表和报告功能,帮助用户直观地理解测试结果,包括响应时间、吞吐量、错误率等关键指标
  • 脚本录制与回放: 使用 JMeter 的代理服务器功能,可以轻松地记录用户的浏览器操作,生成测试脚本,然后进行自动化测试
  • 分布式测试: 支持在多台机器上进行分布式测试,从而模拟更大的负载,测试大规模并发情况下的系统表现
  • 跨平台: JMeter 是基于 Java 编写的,因此可以在任何安装了Java运行环境的平台上运行
  • 免费开源: 作为 Apache 项目的一部分,JMeter 是完全免费且开源的,这意味着用户不仅可以使用它,还可以修改和扩展其功能
  • 社区支持: 拥有活跃的开发者和用户社区,提供持续的支持和更新,以及大量的教程和资源
  • 易于学习和使用: 尽管功能强大,但 JMeter 的界面直观,对于初学者来说相对容易上手

启动 Jmeter

  • 进入bin目录

    • 双击jmeter.bat,启动window版本Jmeter
    • 双击jmeter.sh,启动Mac、Linux版本Jmeter
      image-20250410165929425.png

语言设置

Jmeter 默认的语言是英文,如果想修改为中文,有两种方式,一种是临时修改,一种是永久修改

临时修改

  • 点击菜单options
  • choose Lanuage
  • Chinese(Simplified)

当重写打开Jmeter后,设置就会失效
image-20250410173119344.png

永久修改

  • 进入bin目录
  • 修改jmeter.properties配置文件
  • 将语言设置项的注释取消,并修改为 zh-CN
    image-20250410173254128.png

保存退出,重启 Jmeter即可

发送GET请求

流程

  • 添加线程组

    • 线程组:模拟用户行为、控制并发数、设置循环次数等
      image-20250410173753654.png
  • 添加HTTP请求

    • 相关参数:名称、ip、请求方式、内容编码等
      image-20250410173819416.png
  • 添加监听器=>查看结果树

    • 测试运行后,会在结果树中看到每次请求的结果
      image-20250410173900327.png

image-20250410173941485.png

注:运行前需要保存

发送POST请求

发送POST请求前,需要添加一个HTTP信息头管理器
image-20250410174042224.png

image-20250410174121525.png

到HTTP请求中,添加参数即可
image-20250410174202386.png

批量发送不同的请求体

如果需要模拟不同用户在同一时间请求某一个接口,可用如下方式

  • 创建一个CSV文件,并编辑
    image-20250410174554374.png
  • 添加CSV文件配置
    image-20250410174407111.png
  • 选择本地自己编写的CSV文件
    image-20250410174458942.png

可以设置CSV数据文件

HTTP中消息请求体修改为

{
    "raffleId": "${value1}",
    "userId": "${value2}"
}

运行即可

最后修改:2025 年 04 月 11 日
如果觉得我的文章对你有用,请随意赞赏