jmeter基本用法
JMeter最基本的操作有三个步骤:
jmeter中的快捷键:
ctrl + s 保存
ctrl + e 清除
ctrl + r 运行
ctrl + t 禁用 启用
jmeeter是用JAVA写的所以使用前一定要安装JDK
- 先添加一个线程组。
- 添加HTTP请求。
- 添加查看结果树。
1.添加线程组
在测试计划下新建一个线程组
2.添加HTTP请求
在线程组下添加HTTP请求
3.添加察看结果树
添加完这三样组件,就可以发送Http的请求了,想要编写接口脚本,需要先熟悉HTTP协议的基础知识。
JMeter常见的请求方式
http请求方式有get、post、put、delete等多种,最常用的就是get和post
get请求和post请求的区别:1、GET请求一般用去请求获取数据,
POST一般作为发送数据到后台时使用
2、GET请求也可传参到后台,但是其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度也是有限制的
POST请求传递参数放在Request body中,不会在url中显示,比GET要安全,且参数长度无限制
3、GET请求刷新浏览器或回退时没有影响
POST回退时会重新提交数据请求
4、GET 请求可被缓存
POST 请求不会被缓存
5、GET 请求保留在浏览器历史记录中
POST 请求不会保留在浏览器历史记录中
6、GET 请求可被收藏为书签
POST 不能被收藏为书签
7、GET请求只能进行url编码(application/x-www-form-urlencoded)
POST支持多种编码方式(application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。)
8、GET请求比较常见的方式是通过url地址栏请求
POST最常见是通过form表单发送数据请求
1.发送Get请求
利用抓包工具查看数据
把数据填写到jmeter中然后点运行(注意填写的过程中不要有多余的空格)(get请求的参数可以放在路径后面)
2.发送Post请求
post 请求的数据类型 :1application/x-www-form-urlencoded
2application/json
所以如果是post 请求,首先要看 Content-Type 是什么样的数据类型,
1.如果是 /x-www-form-urlencoded 类型的,把数据直接填写在 “参数”中,可以不用加信息头管理器,因为 jmeter 工具默认发送的数据类型就是x-www-form-urlencoded。
2.如果是 json 类型的,那么要加上信息头管理器,把数据填写在 “消息体数据中”
其中请求头中 比较重要的有两个
Content-Type : 发送 post 请求的时候,数据类型的声明
User-Agent : 声明客户端类型
利用抓包工具查看数据
可以看到类型为json,所以需要1.加上信息头管理器。2.把body数据填写在 “消息体数据中”
怎么判断 接口有没有成功
查看结果树 - 绿色
本质 - 是否实现了接口的业务功能
配置元中的数据是优先运行的。
注意要加HTTP Cookie管理器,这个是全局的,只要是一个线程组就可以。(添加后Jmeter就相当于于浏览器,自动保持登录。)
函数的添加
信息头管理器(信息头管理器放在上面是下面所有的HTTP都用的是这个)
我们学过HTTP协议的基础知识,HTTP有请求行,请求头,空一行以及body组成。请求头中比较重要的值是user-agent、content-type以及sign签名等。User-agent声明是通过客户端进行访问。
HTTP协议发送请求给服务器的时候,会发送请求行、请求头以及请求体等信息。请求中的参数正确,请求不一定执行成功,还要看请求头是否正确。请求头也正确了,这样才能告诉服务器,我们的请求是合法的。
JMeter发送的请求,content-type默认的格式是www-form-urlencode格式,如果要发送json格式的请求,那么就要定义信息头管理器。
看一下禁用学校的请求:
再对比抓包(有接口文档就不用抓包了)
请求行和请求体都没有错,但是查看结果树报错了。在这里也总结一下:接口报错要怎么办?
1.查看结果树
先看一下“取样器结果”,在里面可以看到大概的信息,然后重点是看请求,一个个对比,看看请求行,请求体,请求头是否都正确了。
信息头中content-type类型不对,因为禁用的接口,content-type数据类型是json类型,所以要在请求头中加上Content-Type: application/json
2.最后看一下“响应数据”
看看响应有什么有用的提示。
加上信息头管理器后,请求就发送成功了。
要注意加信息头管理器的位置,如果只想对单个请求起作用,那么信息头管理器就加在请求里面。
如果信息头管理器放在测试计划下,看图
这样的话信息头管理器中定义的信息头,线程组中的所以请求都会继承。登录、新建学校、禁用学校的信息头都会继承刚才定义的信息头。
存在的问题是,登录和新建学校的接口的请求方式是Content-Type: application/x-www-form-urlencoded格式的,这种情况怎么办呢?
跟请求HTTP请求默认值一样的思路:
如果接口的请求格式是application/json类型的多,那么信息头管理器就放在测试计划上面,线程组中的请求如果有的请求是application/x-www-form-urlencoded格式的,那么在该请求里面加一个信息头管理器,名称和值填上Content-Type: application/x-www-form-urlencoded即可
请求默认值
添加单个HTTP请求默认值元素,并在其中填写“服务器名称或IP ”字段。 ,添加25个HTTP请求控制器时,请将“服务器名称或IP ”字段保留为空。控制器将从HTTP Request Defaults元素继承此字段值。
举个实际工作的例子:
一个项目一般会有超过一百个的接口,接口的协议、域名、端口号一般都是一样的,只是请求路径,请求方式、参数等不一样。那么我们在请求默认值中设置好协议、域名以及端口号,后面的请求就会继承这三个元素,不需要再写了。
还有一个好处就是,当服务器名称改变了,我们只需要更改默认请求中的值即可,比如从测试环境的接口切换到正式环境。
1、HTTP请求默认值
在请求默认值中填写好协议、服务器名称以及端口号。
去看登录以及新建学校的请求,登录请求中,协议、服务器名称、端口号就不需要再写了。同理,新建学校的请求也是一样,不需要再写了。
2、HTTP请求默认值
还有一种常用的用法:比如项目中有些接口调了另外一个项目的接口,那么服务器名称以及端口号就不一样了。那么在sampler请求中填写了服务器名称、端口号,就是以sampler中填写的为主。
比如:新建学校的请求中服务器名称改为www.baidu.com
看一下结果:新建学校的请求,端口号是继承了请求默认值的,因为新建学校的请求中没写端口号。服务器名称就变为了www.baidu.com了。
以上就是HTTP默认请求值得常规用法。