【测试】JMeter从入门到进阶

本文参考 Jmeter自动化测试工具从入门到进阶6小时搞定,适合手工测试同学学习_哔哩哔哩_bilibili

JMeter介绍

JMeter 是 Apache 组织使用 Java 开发的一款测试工具:

1、可以用于对服务器、网络或对象模拟巨大的负载

2、通过创建带有断言的脚本来验证程序是否能返回期望的结果

优点:

  1. 开源、免费 2. 跨平台 3. 支持多协议 4. 小巧 5. 功能强大

缺点:

  1. 不支持IP欺骗 2. 使用JMeter无法验证JS程序,也无法验证页面UI,所以要和Selenium配合来完成Web2.0应用的测试

下载安装查看 【超详细】Jmeter安装配置详细教程_jmeter安装教程以及jdk环境配置-CSDN博客


JMeter基本使用

这里查询我的博客系统的接口。

添加线程组

添加HTTP请求

添加结果树


线程组相关设置

进 程: 正在运行的程序

线 程: 是进程中的执行单元

线程组: 进程中有许多线程,为了方便管理,可以对线程按照性质分组,分组的结果就是线程组

三者关系:一个进程可以包含多个线程组,一个线程组可以包含多个线程

特殊线程组

**setUP线程组:**最先执行的线程。

**tearDown线程组:**最后执行的线程组(要勾选主线程结束后运行它)

这两个线程组在任何情况下都是一个最先,一个最后。

**开发模型线程组:**在设计自定义负载模式时将非常有用,而无需计算线程的数量。表达式中的函数有助于生成动态工作负载模型。使用这个线程组,不需要计算测试所需线程的确切数量,只要负载生成器足够强大,可以生成负载模式。


常用配置元件

JMeter配置元件可以用来初始化默认值和变量,读取文件数据,设置公共请求参数,赋予变量值等,以便后续采样器使用。将在其作用域的初始化阶段处理。配置元件(Config Element)提供对静态数据配置的支持,可以为取样器设置默认值和变量。

详见Jmeter(八) - 从入门到精通 - JMeter配置元件(详解教程) - 北京-宏哥 - 博客园 (cnblogs.com)

HTTP请求默认值

http请求默认值:被复用的内容的封装。比如IP,端口等这些信息都是重复的,可以提取到这里,后续就不用写了。

信息头管理器

支持用户添加或者重写HTTP请求头。JMeter支持多个信息头管理器。多个信息头条目合并成一个信息头列表,跟随http请求一并提交到服务端。这里我们只添加字符集和信息内容为json

用户自定义变量

对于一些常见的变量,我们可以提取到这里。

CSV数据文件设置

使用

JDBC连接数据库

现在我们想要把数据库中的内容查询出来,并在百度中查询。

下载jar包

在maven仓库中下载所需的数据库jdbc的jar包。Maven Repository: Search/Browse/Explore (mvnrepository.com)

添加jar包

添加元件

添加JDBC取样器

查看结果

添加调试取样器

添加HTTP请求取样器

这个取样器来调百度的接口。


函数

下面将介绍几个常见的函数。

counter计数器函数

然后复制生产的函数使用即可。

true和false的使用

问题已找到,版本匹配错误。

random随机数函数

time函数


前置处理器

Jmeter的前置处理器可以用来在取样器执行前做一些数据准备操作,也需要注意使用的作用域问题。常用的前置处理器有:用户参数、BeanShell预处理器。

用户参数

使用用户参数传参的方法通常不使用,更多的还是用CSV文件传参,因为它把脚本和数据分开了。

使用还是和CSV数据文件一样。

BeanShell预处理器

线程组B 想要使用线程组A中的结果数值时,就可以用到该处理器。在同一个线程组中可以用后置处理器。

设置全局变量

把生成的代码放到BeanShell取样器中

获取全局变量

哪里需要这个变量就把代码复制到哪里。

对应关系如下:

结果如下


后置处理器

XPath提取器

先用一个http请求到知乎的官网, 然后拿到它的title放到百度中搜索.

正则表达式提取器

如果从标签文档提取数据建议使用 XPath 提取器,如果从非标签文档提取数据建议使用正则表达式提取器。

现在准备把之前博客列表中的标题拿出来放到百度中搜索。

同上添加正则表达式提取器。


断言使用

断言:让程序代替人工判断响应结果是否符合预期

分类:

响应断言 = 断言状态码和响应体

大小断言 = 判断响应内容的字节长度

断言持续时间 = 判断响应时间(发送结果到得到响应之间的时间)

响应断言

大小断言

同响应断言,只不过比较的是长度。

断言持续时间


逻辑控制器

逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。JMeter逻辑控制器可以对元件的执行逻辑进行控制,除仅一次控制器外,其他可以嵌套别的种类的逻辑控制器。

if逻辑控制器

场景如下: 当用户自定义变量 if_key = value时, 访问百度官网.

ForEach控制器

在百度中一次所有 java c++ python.

循环逻辑控制器

线程1访问百度官网5次, 线程2访问bing官网10次.

循环控制器比在线程组中控制循环次数要灵活的多.


性能测试

模拟各种正常的、峰值的测试环境,检测程序的各项性能指标是否能够达标。

高并发场景设置

JMeter 中内置了 定时器,可以实现时间模式相关的性能测试

需求:同一时刻 100 个同学去访问博客系统的博客列表,统计高并发情况下平均响应时间以及错误率(高并发)

添加同步定时器

首先添加一个线程组线程数量为100。

添加聚合报告

查看结果

高频率场景设置

一个用户以 20QPS的频率访问博客系统的博客列表,持续15秒,统计服务器的平均响应时间

QPS: Query per Seconds 每秒查询数(查询率),每秒访问多少次服务器

循环次数 = 访问频率 * 持续时间

每分钟访问次数 = 访问频率 * 60

添加常数吞吐量定时器

添加聚合报告

同上。

观察结果

上面只是对接口的测试,并没有获取其他资源。若想模拟浏览器操作,获取dom元素,查看该博客操作即可。jmeter压测学习11-模拟浏览器访问web页面 - 上海-悠悠 - 博客园 (cnblogs.com)

图形化报告制作

在 JMeter 中可以以图形化(饼状图、柱状图...)的方式显示脚本运行结果,相比聚合报告或查看结果树更直观,用户体验更友好。

图表信息详解:

Jmeter测试报告图表说明 - 大九~ - 博客园 (cnblogs.com)

对于上述的第二个场景设置我们使用图形化展示。

  1. 进入bin目录下的cmd
  2. 输入命令:jmeter -n -t 脚本文件 -l 日志文件 -e -o 目录
    -n 无图形化运行
    -t 被运行的脚本
    -l 将运行信息写入日志文件(文件要么不存在自动创建,要么里面是空的)
    -e 生成测试报告
    -o 指定报告输出目录(目录要么不存在自动创建,要么里面是空的)
  3. 查看结果
bash 复制代码
jmeter -n  -t D:\code\test\blog\博客测试计划.jmx -l D:\code\test\blog\log\test.txt -e -o D:\code\test\blog\graph

接口功能测试

测试博客系统的添加博客功能。由于该功能必须得登录才能操作,所以这里

准备工作

添加cookie管理器

由于登录是需要图形验证码的,我们这里直接手动登录复制cookie。操作见下面的博客:

Jmeter入门18 Jmeter添加cookie的两种方式 - dinghanhua - 博客园 (cnblogs.com)

添加信息头管理器

添加http请求默认值

准备测试用例

这里只是简单写了个测试用例

id,title,content 其中id可以为空,其他的都不能为空

测试接口

CSV数据文件设置

表单传值

对照结果

根据HTTP请求结果对照。

相关推荐
love静思冥想2 小时前
JMeter 使用详解
java·jmeter
测试者家园5 小时前
ChatGPT生成接口文档的方法与实践
软件测试·chatgpt·测试用例·接口测试·接口文档·ai赋能·用chatgpt做软件测试
Heaven6457 小时前
6.8 Newman自动化运行Postman测试集
软件测试·自动化·接口测试·postman·newman
测试老哥11 小时前
Python自动化测试图片比对算法
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
测试者家园19 小时前
ChatGPT接口测试用例生成的流程
软件测试·chatgpt·测试用例·接口测试·测试图书·质量效能·用chatgpt做测试
互联网杂货铺1 天前
几个常见的Jmeter压测问题
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
测试者家园1 天前
ChatGPT与接口测试工具的协作
软件测试·测试工具·chatgpt·接口测试·ai赋能·用chatgpt做软件测试·测试图书
ggggyyyyy09281 天前
接口测试-Fidder及jmeter使用
测试工具·jmeter·fiddler·接口测试
明月与玄武1 天前
Jmeter 分布式压测部署--常见坑以及解决方案
分布式·jmeter
字节程序员1 天前
使用JUnit进行集成测试
jmeter·junit·单元测试·集成测试·压力测试