用Jmeter进行压测详解

简介: 1.概述 一款工具,功能往往是很多的,细枝末节的地方也很多,实际的测试工作中,绝大多数场景会用到的也就是一些核心功能,根本不需要我们事无巨细的去掌握工具的所有功能。所以本文将用带价最小的方式讲解如何快速上手使用jmeter来进行压测。 JMeter,一款接口测试工具,是Java程序,需要JDK环境,建议使用JDK8或者JDK11。

1、概述

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

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

下载地址:

Apache JMeter - Download Apache JMeter

启动:

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

同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档

软件测试视频教程观看处:

字节大佬教你逼自己如何在15天内掌握自动化测试(接口自动化/APP自动化/Web自动化/性能测试),内含项目实战

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的请求的详细统计,成功、失败、耗时等信息。

以下是一个示例:

小小助力

PS:这里分享一套软件测试的自学教程合集。 对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。

☑ 240集-零基础到精通全套视频课程
☑ 课件+源码-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

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

相关推荐
caoerzhong17 分钟前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·python·开源
正在走向自律31 分钟前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
databook1 小时前
从手动检查到自动监控:一个数据质量工作流的实现
后端·python·数据分析
北冥有鱼被烹3 小时前
砷化镓与磷化铟:光模块的地基——从化学键到AI缺货潮的底层逻辑
人工智能·python
for_ever_love__4 小时前
线性回归与梯度下降——从零手写一个模型
python·机器学习·线性回归·梯度下降
code_whiter5 小时前
7.自动化测试常用函数
python·功能测试
小园子的小菜5 小时前
Python协程深度解析:从原理演进到实战避坑
后端·python
砚底藏山河5 小时前
量化实战:截面因子有效性检验(IC 分析与分层回测)
java·python·金融·maven
Interview Aid1125 小时前
OpenAI SWE 面试流程
面试·职场和发展
我命由我123455 小时前
Photoshop - Photoshop 使用对齐功能定位元素
学习·职场和发展·产品运营·求职招聘·职场发展·产品经理·学习方法