【测试】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 中可以以图形化(饼状图、柱状图...)的方式显示脚本运行结果,相比聚合报告或查看结果树更直观,用户体验更友好。

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

  1. 进入bin目录下的cmd
  2. 输入命令:jmeter -n -t 脚本文件 -l 日志文件 -e -o 目录
    -n 无图形化运行
    -t 被运行的脚本
    -l 将运行信息写入日志文件(文件要么不存在自动创建,要么里面是空的)
    -e 生成测试报告
    -o 指定报告输出目录(目录要么不存在自动创建,要么里面是空的)
  3. 查看结果
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请求结果对照。

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值