news 2026/3/9 13:52:42

Jmeter压力测试详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jmeter压力测试详解

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

1、概述

一款工具,功能往往是很多的,细枝末节的地方也很多,实际的测试工作中,绝大多数场景会用到的也就是一些核心功能,根本不需要我们事无巨细的去掌握工具的所有功能。所以本文将用带价最小的方式讲解如何快速上手使用jmeter来进行压测。

JMeter,一款接口测试工具,是Java程序,需要JDK环境,建议使用JDK8或者JDK11。

下载地址:

Apache JMeter - Download Apache JMeter

启动:

安装路径/bin/jmeter.bat(.sh)

2、测试计划、线程组、取样器

test plan:

测试计划,jmeter中的一个测试计划对应一个测试场景。

thread group:

线程组,jmeter中的一个线程组对应一个行为。一个行为可以理解为一个场景,可以是由多个接口组成的,比如下单,里面就可以包含扣减库存、生成订单等多个接口。

取样器:

可以理解为一次请求,jmeter支持多种类型的取样器,当然我们常用的是http的取样器。

三者的关系:

整个jmeter的使用其实就是建立一个测试计划,然后给这个测试计划下面配上各种需要的东西,比如线程组、监听器等等,

一个线程组包含多个取样器,一个取样器就是一个请求。线程组里面的每一条线程都会完整的从上到下顺序执行一遍该组下的取样器。

建立测试计划,添加线程组:

线程组添加取样器,对http接口的请求就添加http取样器:

一整套测试计划建好后,支持导出为文件,导出为文件后可以脱离开界面通过指令来运行整个测试计划:

3、调试运行

测试计划直接执行是不会有任何结果展示的,需要添加监听器(listener)来进行调试,查看中间结果。

一般使用view results tree,查看结果树的监听器,可以查看到运行结果。

一些核心参数的意思:

Connect Time:建立TCP连接的时间。

lantency:发出请求前到接收到第一个响应的时间。

loadtime:从发出请求前到接收完所有响应的时间。

Size in bytes:整个response报文的大小=header+body。

Headers size in bytes:response的header大小。

Body size in bytes:response的body大小。

4、请求默认值

请求默认值,即请求的缺省配置默认值。配置后一个测试计划中的所有请求都的配置缺省时都采用请求默认值中的配置。

5、流量录制

测试网页页面的时候http请求里面除了API,还杂糅着很多静态资源(html/js/css)的请求,到底请求这个页面发出了多少url?可以使用jmeter的流量录制功能,可以录制出某次访问里的所有http请求。这个功能在实际压测里用的比较少,这里只是提一句有这个功能,不做展开,具体要用的时候可以搜一下,怎么使用。

6、模拟时间间隔

使用定时器可以模拟时间间隔,定时器的作用范围是所在结点下的所有同级结点及其子结点。

定时器有多种,有些定时器不是固定时间间隔的,比如时间间隔满足高斯变化的高斯定时器等,具体的种类可以搜一下。

7、压力测试

运行指令:

真正的压力测试不使用图形界面来测试,因为图形界面作为中间层也会有性能损耗,而是直接使用命令行模式。

{base dir}\bin\jmeter -n -t XXX.jmx -l log.jtl

XXX.jmx是使用图形界面配置好后导出的jmx文件。

压力测试一般会给出测试用例,对性能需求进行描述,如下就是个性能测试用例:

用户无需登录,先访问首页,再访问单课页,最后访问新闻页面。

访问页面间隔10秒。

用户数1200个,在10分钟依次上线。

照着测试用例配置jmeter就行,上面的需求描述转成jmeter的配置就是:

创建一个1200条线程的线程组,10分钟内执行完;

线程组下有三个http取样器,按照顺序为请求首页、请求单课页、请求新闻页;

创建一个定时器,每10秒取样一次。

8、报表

jmeter可以生成HTML报表

jmeter -n -t [Jmx脚本位置] -l [中间文件result.jtl位置] -e -o [报表指定文件夹]

报表文件夹内会产生HTML文件,其中会详细包含对所有url的请求的详细统计,成功、失败、耗时等信息。

以下是一个示例:

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/8 22:56:36

2026 年网络安全学习路线:从零基础到实战大神,避开 90% 的坑。从零基础入门到精通,收藏这一篇就够了!

2026 年网络安全学习路线:从零基础到实战大神,避开 90% 的坑 2026 年,数字化浪潮下的网络世界暗流涌动。数据泄露、勒索软件、供应链攻击如同悬在头顶的利剑,让企业和个人都绷紧了神经。 与此同时,网络安全人才市场却…

作者头像 李华
网站建设 2026/3/3 12:56:51

你真的懂Start和Update的调用时机吗?深入剖析C# Unity生命周期

第一章:Start和Update的调用时机本质解析 在Unity引擎中,Start 和 Update 是 MonoBehaviour 生命周期中最常用的两个方法。它们的调用时机并非随意设定,而是由引擎内部的消息循环机制严格控制。 Start方法的触发条件 Start 方法在脚本实例被…

作者头像 李华
网站建设 2026/3/5 12:31:43

Open-AutoGLM教程:list_devices API返回值解析说明

Open-AutoGLM教程:list_devices API返回值解析说明 Open-AutoGLM – 智谱开源的手机端AI Agent框架 AutoGLM-Phone 是一个基于视觉语言模型的 AI 手机智能助理框架。它能以多模态方式理解屏幕内容,并通过 ADB 自动操控设备。用户只需用自然语言下指令&…

作者头像 李华
网站建设 2026/3/6 23:08:48

从GBK到UTF-8,从JSON_UNESCAPED_UNICODE到自定义序列化器——PHP数组→JSON中文处理全栈闭环(仅限内部团队流传版)

第一章:从GBK到UTF-8,中文编码演进的底层逻辑 在计算机发展初期,中文信息处理面临字符无法正确显示的难题。为解决这一问题,中国制定了GB2312编码标准,随后扩展为GBK,支持更多汉字与符号。GBK采用双字节编码…

作者头像 李华