用Jmeter进行压测详解

2023-09-16 16:31:04

简介: 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个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

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

更多推荐

苹果从成熟到落地,Apple Newton 背后的工程师们 | 历史上的今天

整理|王启隆透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。1983年3月的最后一个星期日,史蒂夫·乔布斯(SteveJobs)和时任百事公司总裁约翰·斯卡利(JonSculley)坐在阳台上俯瞰纽约中央公园。在深思熟虑之后,斯卡利对着眼前年轻人说:“我们已经互相了解彼此,但是,史蒂夫,我已经考虑过了,我不会

Linux系统使用(超详细)

目录Linux操作系统简介Linux和windows区别Linux常见命令Linux目录结构Linux命令提示符常用命令lscdpwdtouchcatechomkdirrmcpmvvimvim的基本使用grepnetstatLinux面试题Linux操作系统简介Linux操作系统是和windows操作系统是并列的关系。

STM32H5开发(3)----电源控制&RCC

STM32H5开发----3.电源控制&RCCSTM32H503供电样品申请STM32H562/563/573LDO供电STM32H562/563/573SMPS供电LDO/SMPS供电PWR特性电源电压监测温度监测低功耗模式低功耗模式-SLEEP模式低功耗模式-STOP模式低功耗模式-STANDBY模式低功耗模式监控

2023年中职组“网络安全”赛项吉安市竞赛任务书

2023年中职组“网络安全”赛项吉安市竞赛任务书一、竞赛时间总计:360分钟竞赛阶段竞赛阶段任务阶段竞赛任务竞赛时间分值A模块A-1登录安全加固180分钟200分A-2本地安全策略配置A-3流量完整性保护A-4事件监控A-5服务加固A-6防火墙策略B模块B-1Windows操作系统渗透测试400分B-2隐藏信息探索B-

STM32 ADC基础知识讲解

文章目录前言一、ADC的基本介绍二、STM32ADC讲解1.ADC分辨率2.ADC通道讲解3.ADC转换模式单次转换模式连续转换模式4.扫描模式5.数据对齐方式左对齐右对齐总结前言在正式的学习如何编写ADC代码时我们先来学习一下ADC的基础知识部分,只有掌握好了这些基础知识才能顺利的进行后面的代码编写。一、ADC的基本

.NET网络编程——TCP通信

一、网络编程的基本概念:1.网络就是将不同区域的电脑连接到一起,组成局域网、城域网或广域网。把分部在不同地理区域的计算机于专门的外部设备用通信线路互联成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。2.计算机网络通过传输介质、通信设施和网络通信协议,将地理位置相

git 常用命令有哪些

Git是我们开发工作中使用频率极高的工具,下面总结下他的基本指令有哪些,顺便温习一下。前言一般项目中长存2个分支:主分支(master)和开发分支(develop)项目存在三种短期分支:功能分支(featurebranch)补丁分支(hotfixbranch)预发分支(releasebranch)一旦完成开发,它们就会

Spring MVC拦截器和跨域请求

一、拦截器简介SpringMVC的拦截器(Interceptor)也是AOP思想的一种实现方式。它与Servlet的过滤器(Filter)功能类似,主要用于拦截用户的请求并做相应的处理,通常应用在权限验证、记录请求信息的日志、判断用户是否登录等功能上。拦截器和过滤器的区别拦截器是SpringMVC组件,而过滤器是Ser

docker系列(8) - docker网络

文章目录8.docker网络8.1四种网络模式8.2常用命令8.3桥接网络模式8.3.1桥接网络模式说明8.3.2桥接网络模式案例8.4host网络模式8.4.1host网络模式说明8.4.2host模式案例8.5none网络模式8.5container网络模式8.5.1container网络模式说明8.5.2cont

Android面试题汇总(二)

一、Java集合1、谈谈Java中List、Set以及Map的区别?List:有序的,数据可以重复。。Set:无序的,数据不能重复。Map:键值对存储。键是唯一的,值不是唯一的。2、谈谈ArrayList和LinkedList的区别?ArrayList:底层是基于数组的,数组占用的是一个连续的内存空间。在新增和删除的时

(面试经典刷题)挑战一周刷完150道-Python版本-第3天(40个题)-I(前10个题)

一、长度最小的子数组给定一个含有n个正整数的数组和一个正整数target。找出该数组中满足其总和大于等于target的长度最小的连续子数组[numsl,numsl+1,…,numsr-1,numsr],并返回其长度。如果不存在符合条件的子数组,返回0。可以是暴力解法也可以是滑动窗口。可以降低复杂度。classSolut

热文推荐