Jmeter 的使用

目录

线程组

HTTP请求默认值

HTTP信息头管理器

查看结果树

用户定义的变量

CSV数据文件设置

JSON提取器

JSON断言

同步定时器

聚合报告

事务控制器

逐步增压测试

导出测试报告


使用Jmeter来测试已经写好的博客系统

线程组

要进行测试,先添加线程组,并且设置参数:

这里设置线程数为3,相当于有三个用户发起请求:

HTTP请求默认值

由于他们的IP地址和端口号都一样,为了方便在请求之前设置一个请求默认值,将请求要发送给的ip地址和端口号写死:

HTTP信息头管理器

因为后端接口要接受的请求是json字符串格式,所以在http信息头管理器中设置Content-Type:application/json,如果是使用表单数据的话就不需要这个了,直接在参数中填写即可:

在进行除登录页的其他页面功能测试的时候,需要之前的登录信息,这个登录信息放在请求头中的user_token中,所以在http信息头管理中还需要加入token:

这里的token可以从登录页面的响应信息中获取:

还要注意一点:这里的信息头的名称要和我们自己设置的这个token的名称是一样的,如果不确定可以先在开发者工具中找到这个名称直接复制就好了:

查看结果树

为了方便查看请求结果,设置查看结果树:

查看结果树中能看到的信息包括:

用户定义的变量

如果有多个地方需要用到用户名和密码,可以自己定义变量,写在用户自定义变量中:

在使用的时候,需要用${username}才能正确获取到这个username变量中的值,并且在json传中,获取这个变量的时候也需要使用""将变量名包裹起来:

CSV数据文件设置

如果想要测试多个用户名密码的登录,可以使用CSV文件来进行:

这里需要注意的是csv的文件格式一定要对

JSON提取器

详情页测试需要blogId,这里我们可以使用JSON提取器,提取之前请求的返回值:

注意:这里要进行json提取,就需要让博客列表页有返回值,不然就没办法提取

这里是正则表达式的语法:正则表达式

这里博客列表页返回的数据是这个样子的(本文主要介绍jmeter的使用,这里的乱码无伤大雅):

JSON断言

如果不存在这样的内容,那么就会断言报错:

如果是不匹配也会出现断言报错,并且给出了断言报错的原因:

也可以使用正则表达式来匹配:

同步定时器

虽然前面设置了三个线程,但是通过这个日志可以看出,线程1执行结束后,线程2、3才准备好了。所以他们并不是在同一时间发出的请求。同步定时器就有这样的作用,让这三个线程都准备好了之后在统一开始发送请求。

这里就可以看出,和之前的并不一样,这三个线程都处于started状态之后,才开始发送请求了。

聚合报告

这个和查看结果树功能差不多,都是查看运行之后的数据信息的

通过这个我们可以看到具体的吞吐量的信息:

事务控制器

有的时候一个接口是一个事务,有的时候多个接口是一个事务,如果多个接口是一个事务的话,那就需要用事务控制器来将这多个接口在一个事务下。

事务控制器,就是将几个请求放在同一个事务里,使用事务控制器需要将这些请求统一放到事务控制器的下面,这样这些请求才能是一个事务:

与上面没有事务控制器的时候相比,这个时候的聚合报告中多了一行------事务控制器:

逐步增压测试

并且给这个线程组添加一个监听器

要使用这个两个功能还需要安装两个插件:jpgc - Standard Set 和 Custom Thread Groups。

下面是运行的结果:

我们可以看出在55秒之前,响应时间不是很长,所以TPS呈现一个向上增长的趋势,这是因为:在一开始的时候响应时间并不是很长,但是总的事务数在增加,相应的成功的事务数肯定也在增加,所以TPS呈现上升趋势;在55秒到1分50秒的这段时间内,响应时间增大,TPS整体呈现较为平缓的趋势,这是因为:这个时候线程增加到最大,导致响应时间增大,响应时间变大,成功总事务数也变大,所以TPS总体上是平缓的;在1分50秒之后,响应时间开始减少,TPS也开始下降,这是因为:在最大线程数持续了30秒之后,线程开始减少,系统压力减少,所以响应时间开始减少,并且总事务也开始减少,因此TPS整体上是一个下降趋势,直到所有线程结束。

导出测试报告

使用 jmeter -n -t 测试文件 -l 后缀为.jtl的日志文件 -e -o 导出目录 来导出测试报告,其中日志文件和导出目录可以不存在,如果存在也要为空,不然就会导出失败。

在导出目录的文件夹中,有一个html文件,打开这个文件就可以看到具体的测试报告了

相关推荐
mCell1 天前
AI 时代,我为什么开始追求 100% 的测试覆盖率?
llm·ai编程·测试
用户072367066602 天前
接口测试场景编排:把 N 个请求串成一条能定位问题的链路
测试
ClouGence3 天前
不搭 Selenium 或 Playwright,怎么测试公司的内网业务?
selenium·测试
狂师4 天前
Agent 测评指标怎么选、怎么算?
人工智能·agent·测试
狂师5 天前
AI 测试 Skill 大全,我日常在用的 27个,夯爆了!
人工智能·测试·全栈
狂师6 天前
我开发了一款免费开源的测试开发刷题学习网站
面试·开源·测试
ClouGence7 天前
2026 年 AI 自动化测试工具盘点,哪些真正值得用?
测试
LabVIEW开发9 天前
CTM-3 红外测温仪 + LabVIEW 温度怎么测?
算法·labview·测试·labview程序
用户7669184044810 天前
告别 F12 与 Charles:如何打造一款「懂业务」的浏览器原生抓包利器?
测试