JMeter的使用

发布于:2024-05-07 ⋅ 阅读:(33) ⋅ 点赞:(0)

一、

1、优点:

(1)开源

(2)跨平台

(3)支持多协议

2、缺点

(1)不支持ip欺骗

(2)使用JMeter无法验证JS程序,也无法验证页面UI

3、性能指标(TPS QPS RPS形容服务器,HPS形容客户端(用户每秒点击率))

(1)虚拟用户数

(2)并发数

(3)事务

(4)场景:性能测试的用例

(5)响应时间

(6)TPS:一定时间能处理的事务数(如果事务只有一个接口,TPS=吞吐量)

(7)QPS:每一秒的查询率(针对查询接口,增删改跟他没关系,一般是用来描述数据库的)

(8)吞吐量:衡量网络成功传输的数量

(9)资源利用率:CPU 内存 硬盘 网络

4、性能测试分析

(1)需求分析以及需求确定(指标值、场景、环境、人员)

(2)性能测试计划和方案制定(基准测试,负载测试,压力测试,稳定测试等)

(3)性能测试准备(人力,硬件,软甲,环境折算)

(4)测试执行

(5)测试报告,测试总结

5、接口测试

(1)拿到api接口文档,熟悉接口业务,地址、端口、错误码等

(2)编写接口测试用例以及评审

正例(对内部系统):

(2.1)输入正常的参数,验证接口能够正常返回

反例(对外部系统):

(2.2.1)鉴权异常:为空,错误,过期

(2.2.2)参数异常:为空,长度异常,类型异常,其他业务异常

(2.2.3)其他异常:黑名单,调用次数限制,分页场景

(2.2.4)兼容异常:一个接口被多端调用

(3)使用接口测试工具

(4)输出报告

6、JMeter组件

(1)测试计划:JMeter测试的起点,容器

(2)线程组:代表一定的用户

(3)配置原件:配置请求

(4)前置处理器:请求之前的操作

(5)定时器:演示请求

(6)逻辑控制器:处理请求逻辑

(7)取样器:发送请求的最小单元

(8)后置处理器:请求之后的操作

(7)断言:判断请求结果是否正常

(10)监听器:收集测试结果

7、组件的作用域

(1)组件可以作用于同级组件

(2)组件可以作用于同级组件下的子组件

(3)组件可以作用于父组件

8、JMeter的使用

(1)新增线程组

(2)添加配置组件

(3)基本的这三个需要加上

(4)添加控制器(我们这里添加简单的控制器)

(5)控制器里面添加请求(取样器)

(6)增加监听器(线程组,控制器,取样器下面都可以加)

(7)目前状态栏

9、目前市面上的三类接口

(1)基于webservice协议接口,通过xml传输数据(比较老)

(2)基于dubbo协议接口,通过json传输数据(微服务)

(3)基于http协议接口(Restful大部分是这种协议),传输json数据(最多)

10、http协议:请求和响应

(1)请求:请求方式,请求路径,请求头,请求数据

(2)响应:响应码,响应信息,响应头,响应数据

11、接口约定

(1)请求数据通过json格式传递,需要添加一下请求头

列如:Content-Type:application/json(Postman默认是这样的,Jmeter需要我们手动设置)

(2)除注册登录接口外,请求时需要提供token

(3)token通过登录获取,需要添加以下请求头

列如:Authorization:Bearer abc  其中abc为token值

(4)2XX状态码表示请求成功

(5)4XX状态码表示请求失败,并通过detail字段返回原因

12、禁用线程组

13、注册接口

(1)添加个http请求

(2)给我们创建的http请求设置默认参数(http默认端口80,https443)根据测试文档请求进行设置,这里给的参数只是举例,每个测试不一样

(3)设置请求头

(4)根据我们的需求对我们的内容进行填写

 (5)都设置完我们可以进行测试

14、登录接口这些接口跟我们的项目而定,项目不同接口不同(如果没有接口文档我们的部分测试可以通过抓包来定)

15、我们除了注册和登录接口外其他接口都需要添加token(要注意好作用域,将我们的请求头放在我们要测的请求下面)

 17、接口关联(我们的查询接口需要从登录接口获得token值)

(1)正则表达式提取器

(2)JSON提取器

(3)配置(正则)

(3.1)内容讲解

(3.1.1)变量名:随意定义

(3.1.2)正则表达式:要包括有左边界和右边界以及(.*?),而且必须唯一

(3.1.3)$1$表示取第一个正则,$2$表示取第二个正则

(3.1.4)匹配数字:表示取第一个匹配到的值

(3.1.5)默认值:表示没有匹配到就用默认值

 

 (4)查看我们的刚才的操作取没取到,添加调试取样器

 (5)调试取样器查看

 (6)在我们的接口信息头中添加我们取到的token

(7)也可以匹配多个正则

 

如果像这种写法我们还可以把我们请求头进行删减(去掉了Bearer这个从我们的关联接口中获取)

 (8)配置(JSON)

(8.1)语法格式:$表示根目录,. 表示子节点,$.access_token表示获取token的值 ,取数组的值通过[下标],下标从0开始

(8.2)token取值演示($.*表示取所有值)

 (8.3)举例取值(id=189):$.data.goods_list[0].goods_items[0].id(看到{}用$. 看到[] 用[下标])

 (8.4)创建JSON提取器

(8.5)提取器设置

 (8.6)JSON规则

(8.6.1)变量名

(8.6.2)jsonpath表达式(只能取一个不能跟正则一样写多个)

(8.6.3)匹配数字,表示取第一个匹配到的值

(8.6.4)默认值,没有匹配到就使用默认值

(8.7)我们可以在创建一个取Bearer值(用这种方法在信息头中获取两者)

 (8.8)目前项目栏

(8.9)如果出现中文乱码(加编码格式)

18、我们要进行修改操作时候我们用到PUT请求,我们需要获取到相应的id才能进行更改

(1)提取

(2)获取(直接在消息体中修改就可以)

19、删除接口

 20、测试接口要实现一个业务闭环:不能测试完接口多了或少了id之类的内容

21、我们url的内容可以这样展示,可以这样写

 22、文件上传(两个\\可以换成一个/)

23、我们要注意我们的有的标签名只能出现一次(比如name‘广东人’,运行一次后,有了广东人,在运行就会报错)

 24、函数工具,为了应对23的name标签重复(加随机数的函数)

(1)

(2)

 (3)

25、如果我们的生成树太快太频繁我们可以增加一个定时器

设置两秒定时

 

26、如果给我们指定端口我们就不用管443或80了,直接用指定的

27、重要加密网站:https://www.bejson.com/   

28、AES,DES,Base64,RSA (可以解密),MD5,SHA,HmacSHA(不能解密)

29、加密接口的实现

(1)生成加密函数(MD5方式)

(2)带入加密后的函数

 (3)用其他方法加密(举例SHA)

(4)举例Base64

 30、获取token

(1)首先把日志打开

(2)后置处理器

 

 然后在日志处查看token,也可以写成String token = vars.get("access_token"); log.info(token)

31、token是可以通过cookie传播的

32、Http cookie管理器实现cookie关联的原理(默认:作用域在同级别的组件)

(1)当Jmeter第一次请求服务器的时候,如果说服务器有通过响应头的Set-Cookie有返回cookie,那么Http cookie管理器就会自动保存这些cookie的值

(2)然后当Jmeter第二次以后请求服务器的时候,那么Http cookie管理器会自动的把保存的这些cookie通过请求头的cookie字段传输给服务器,从而实现cookie管理

33、cookie实现接口

 34、增加断言(常用)

35、断言的使用(响应里面有seccess就成功,没有就失败)

(1)响应断言

(2)JSON断言(判断state内容是否是success)

(3)响应断言状态码

 36、接口测试CSV参数化(做正反例测试时候用)

(1)增加反例

 (2)首先构建我们的数据类

(3)将我们刚才创建的CSV文件添加进来

(4)设置好我们的CSV文件

 (5)我们刚才写死的参数就不能写死了

(6)设置循环控制器:因为我们有三组用例所以我们要循环三次 

(7)有多少数据循环多少次

 (8)增加个断言判断state

 37、接口测试调试

(1)调试取样器(作用就是能够看到全局变量)

(2)看请求和响应的四要素(请求体,请求头,响应体,响应头)

38、Jmeter的非GUI命令行的执行

(1)jmeter -n -t test.jmx  (-n非GUI的方式 -t指定需要执行的脚本)

(2)生成jtl报告  jmeter -n -t test.jmx -l result.jtl

(3)生成html文件 jmeter -n -t test.jmx -l result.jtl  -e -o results  注意:修改全局配置文件jmeter.propties 中的 jmeter.save.savesrevice.output_format=csv

39、我们需要下载ant插件用于生成测试报告(下载可参考):https://blog.csdn.net/qq_40384309/article/details/134992732?ops_request_misc=&request_id=&biz_id=102&utm_term=jmeter%E6%8F%92%E4%BB%B6ant%E4%B8%8B%E8%BD%BD&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-134992732.142^v100^pc_search_result_base6&spm=1018.2226.3001.4187