一、万能法
-
先把项目启动
-
打开项目接口文档,接口文档: 一般是开发
-
特别注意事项:当你的接口请求参数为json格式时,一定要写请求头,请求头中一定要有 Content-Type: application/json(响应体的格式)
如果没有这个信息,100%报错,不局限于jmeter
-
http请求包括哪些部分
请求行:请求方法,请求地址URI
请求头:Content-Type、cookie、User-Agent
空一行
请求体:参数: 表单 和消息体数据: json 、xml
-
json格式:{"key":"value","key1":1} 键值对
-
开发人员接口中定义的返回码code,和http response_code不一样
http response_code:
2xx: 网络请求超过 200
3xx: 重定向相关 301
4xx: 请求URL地址有问题 400 404
5xx: 服务器内部异常 500、502 bad gatway
而开发人员在接口中定义的code为响应代码,如0、1、2、3,会有码表来查询
-
写脚本
-
测试计划上右键, 添加 线程组
-
线程组上右键,添加 取样器> http请求 (http协议簇)
-
线程组上右键,添加 监听器 > 查看结果树
一个最简单的jmeter脚本,包括,线程组、取样器、监听器
线程组: 性能测试中用于场景设计的,写脚本阶段不用改动。
取样器: 根据不同的协议,编写不同的脚本(填空)。
监听器: 调试脚本时使用,性能测试执行时,禁用。原因是不管哪种监听器,都是对结果数据进行不同维度的展示,这些展示,是需要消耗本地资源的。
HTTP信息头管理器:添加 Content-Type:application/json
8. tomcat的默认端口:8080
http协议的默认端口:80
https协议默认端口: 443
内容编码:utf-8
脚本需要保存之后再运行:jmeter的默认保存路径,jmeter的bin文件夹,可以更改名字
二、请注意:
-
当请求体为json, 一定要有请求头 Content-Type:application/json。
-
json格式有问题,请求会通过,返回值有错误。
-
协议: 当协议为http时,可以不写,如果是https,那就必须写。
-
服务器名称或IP:不能带有/,会报错。
-
post方法不可以丢到浏览器访问,get可以。
-
路径:不要带域名或ip,和端口,路径开头用/
不要带有空格,带有空格请求URL会出现%20这类的urlencoded编码。
URI是资源地址,URL是带有域名的domain。
-
内容编码:utf-8
请求内容出现乱码处理方法:
-
内容编码: utf-8
-
请求头加上,;charset=utf-8
-
请求体为参数类型:勾选参数“编码” 编码:urlencoded编码,在参数值为非字符(汉字、特殊符号) 我都需要勾选编码,给大家的建议:参数值,不管什么类型,都建议勾选编码,密码加密时base64也要勾选。
响应内容出现乱码处理方法:需求修改jmeter.properties中sampler.result.encoding
不是简单的设置为utf8、 gbk、gb2312、big5,同一个接口,用postmen请求,响应是正常,用jmeter请求响应中文乱码?原因是: jmeter的编码是根据操作系统编码。在国内,中文windows系统的字符集编码是gbk 936, mac系统中文编码utf-8。
-
所有非必填的都要传进参数,以确保资源消耗最大,更能反应性能(最大值)。
-
参数、消息体数量的选择
当我们的请求接口文档中说,请求体为json格式,那么我们就选择用消息体数据,来写json, soap=http+xml
参数: 我们的请求体为form-data,Content-Type: application/x-www-form-urlencoded 或者不指明请求体类型,get
-
自动重定向:不会显示中间重定向过程,无法从过程中,提取信息
跟随重定向:会自动显示重定向过程,能从过程中,提取想要信息,用于后面接口请求
使用keepAlive:保持连接, 长连接,因为现在用http协议版本为1.1就是长连接,所以默认勾选keepAlive,但是在性能测试中,我们会根据需要,去掉这个勾。
愿意:因为性能访问量太大还一直保持连接,会影响数据。