jmeter介绍
Apache JMeter 是一个用于对软件进行性能测试的开源工具。它最初是为测试 Web 应用程序而设计的,但后来扩展到了其他测试领域。JMeter 可以用于模拟多种负载类型,包括静态资源、动态资源、Web Service、数据库等,从而对应用程序的性能进行评估和调优。这里主要介绍jmeter压力测试的过程和一些常用的元素。
jmeter json提取流程
1.打开jmeter
在jmeter安装目录下双击jmeter.bat打开就行,如果桌面有快捷键直接打开也行噢~
2.添加线程组
线程组模拟用户的并发访问,它主要包含三个参数:线程数、准备时长、循环次数。线程数模拟虚拟用户数,如设置10表示10个线程,模拟10个虚拟用户;准备时长表示设置的线程个数全部启动的时间,如设置10,如果有5个线程,表示5个线程在10秒钟全部启动,那么2秒启动1个线程;循环次数表示每个线程请求的次数,如设置为10,有5个线程表示共请求5*10=50次请求。如果勾选“永远”就会一直发送请求,直到停止运行。
直接在测试计划下右键添加,可以给计划命名,看需要!
3.添加http请求
http请求即向服务器发送请求
鼠标放置线程组上右键选择 添加->取样器->HTTP请求,如图配置相关信息
4.添加http信息头管理器
(1)位置:线程组 -> 右键 -> 添加 -> 配置元件 -> HTTP信息头管理器。HTTP 请求发送请求到服务器,请求报文包含:请求行、请求头、请求体。请求行和请求体可以在 HTTP Request 取样器中填写,那么请求头就是在这里填写了~
(2)常见的请求头和标头说明
标头说明Accept浏览器可以接受服务器回发的类型。Accept-Encoding浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法Accept-Language浏览器申明自己接收的语言Connection
长连接,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Connection:close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接
Content-Type数据类型Host当前请求要被发送的目的地,仅包括域名和端口号Origin当前请求资源所在页面的协议和域名,用来说明请求从哪里发起的,这个参数一般只存在于CORS跨域请求中,普通请求没有这个header!Referer当前请求资源所在页面的完整路径Authorizationheader中的TokenUser-Agent浏览器信息
我这里只需要一个参数,如果需要参数化的变量就用${变量名}的形式代替
5.添加响应断言
位置:HTTP请求右键->添加->断言->响应断言
(1)测试字段(指用什么返回信息做断言)
**响应文本: **响应服务器返回的⽂本内容。
响应代码:断⾔Http 响应码是否符合预 期,⽐如 200。
响应的消息:验证响应消息是否按预期 显示。
响应头:断⾔查看特定的 HTTP 标 头是否存在。
(2)模式匹配规则
**包括 Contains: **响应内容【包含】需要匹配,⽀持正则 表达式。
**匹配 Matches: **响应内容要【完全匹配】需要匹配代表 响应成功,⼤⼩写不敏感,⽀持正则表达式。
**相等 Equals: **响应内容要【完全等于】需要匹配代表响 应成功,⼤⼩写敏感,内容是字符串
字符串Substring: 响应内容【包含需要匹配】的内容才代 表响应成功,⼤⼩写敏感,内容是字符串
**不相等 Not: **取反操作,不相等
OR: 应⽤ OR 组合中的每个断⾔,将多个断⾔模式进⾏ OR连接
我的简单设置一下断言就欧克了~,这里只是做展示,如果是真正的压力测试建议大家不要只添加一个断言,因为不是很准确! 位置是放在登录请求下面,我这里手动拖动移动,大家不要被截图迷惑,其实放这里也可以的!
6.添加json提取器(取登录后jwt,因为后面操作需要jwt,比如电商管理系统,增加商品是登录后的操作,那么我们访问增加商品这个接口就要携带登录的token,我这里使用jwt,所以json提取的是jwt)
位置:HTTP请求右键——>添加——>后置处理器——>JSON提取器
- Apply to应用范围,选取默认的main sample only就行
- names of created variables :接收值的变量名,多个变量时用分号分隔
- json path:json path表达式,提取某一个值,也是用分号分隔。另外一种特殊提取数据有多个id,可用$.data[*].id,获取相应数据的data中的所有id,引用_N取第N个值
- match no:0随机;n取第几个匹配值;-1匹配所有
- default values:缺省值,匹配不到值的时候取该值
6.1添加增加角色的http请求和断言,http请求信息头管理引用jwt
断言我设置和登录请求断言一样比较简单 ,虽然不太准确,但是查看结果树看响应内容是正确的!
7.添加查看结果树
位置:右键->添加->监听器->查看结果树
这里我在之前就添加了,前面后面加都没有问题的,然后点击运行,在查看结果树那里查看结果
**注意我还添加Http请求默认值,它具体作用是测试的接口都是这个服务器,那这里配置http请求默认值会简化一些操作,如果都不一样,就不需要这个http请求默认值 **
** 就比如我在这里配置这些**
那么我在这个线程组组下面的所有请求,就不需要填这些信息
还有我刚是在Http信息头管理引用提取的jwt, 那么大家也可以试一下在消息数据体里面引用。比如,先在这个上图这个请求里面添加json提取,选取要传入参数,在添加修改角色HTTP请求,在修改角色消息体数据体中引用提取的参数,可以实际操作一下噢,步骤差不多,这里就不作描述了!!
单接口压力测试
1.添加获取作品列表的请求接口,断言,HTTP信息头管理
2.添加仅一次 控制器
把登录手动移动到仅一次控制器中,因为登录只需要进行一次,我这里有把之前的新增角色请求禁用掉噢,直接选择请求右键禁用。
3.添加循环控制器
把获取作品请求手动移入到循环控制器中,因为要实现这个接口压测,设置循环控制器循环次数,看需要设置。如果设置线程数那么,执行这个接口次数等于线程数与接口循环次数相乘。
4.添加聚合报告
点击运行,查看聚合报告,运行成功如下图
** 聚合报告 **
- Label:请求的名称,就是脚本中Sampler的名称。
- #Samples(样本):总共发给服务器的请求数量,如果模拟10个用户,每个用户迭代10次,那么总的请求数为:10*10 =100次。
- Average(平均值):默认情况下是单个Request的平均响应时间,当使用了Transaction Controller(事务控制器) 时,也可以用Transaction的时间,来显示平均响应时间 ,单位是毫秒。
- Median(中位数):50%用户的响应时间小于该值。
- 90% Line(90% 百分位):90%用户的响应时间小于该值。
- 95% Line(95% 百分位):95%用户的响应时间小于该值。
- 99% Line(99% 百分位):99%用户的响应时间小于该值。
- Min(最小值):最小的响应时间。
- Maximum(最大值):最大的响应时间。
- Error%(异常%):错误率=错误请求的数量/请求的总数。
- Throughput(吞吐量):默认情况下表示每秒完成的请求数(Request per Second)。
- Received KB/sec (接收数据):每秒从服务器端接收到的数据量。
- Sent KB/sec(发送):每秒发送到服务器端的数据量。
版权归原作者 小滕爱读书 所有, 如有侵权,请联系我们删除。