目录
一、添加线程组
- 鼠标右键点击“测试计划-->添加-->线程组(用户)-->线程组”,添加测试场景设置组件,接口测试中一般设置为1个“线程数”,根据测试数据的个数设定“循环次数”;
- 设置线程数:线程数即虚拟用户数,每个线程将会完全独立的运行测试计划,互不干扰,多个线程用于模仿对服务器的并发访问;接口测试中一般设置为1个“线程数”;
- 设置ramp-up 时间:设置虚拟用户数全部启动的时长;如果线程数为20,准备时长为10秒,那么需要10秒钟启动20个线程,也就是平均每秒启动2个线程;
- 设置循环次数:每个线程发送请求的个数。如果线程数为20,循环次数为10,那么每个线程发送10次请求。总请求数为20*10=200。如果勾选了“永远”,那么所有线程会一直发送请求,直到手动点击工具栏上的停止按钮,或者设置的线程时间结束。
图 1 线程组--元件位置
图 2 线程组--相关参数
二、添加HTTP请求默认值
HTTP请求默认值可以对同级别HTTP请求设置默认域名、路径、传参等。如果HTTP请求的值与请求默认值冲突,以HTTP请求为主。
使用场景:为一组访问同域名的请求设置HTTP请求默认值,避免每个HTTP请求都设置同样的参数。修改时也更方便。
- 鼠标右键点击“测试计划-->添加-->配置元件-->HTTP请求默认值”;
- 填写域名、路径,设置传参。
图3 HTTP请求默认值--元件位置
图 4 HTTP请求默认值--相关参数
三、添加HTTP Cookie管理器
HTTP Cookie管理器像Web浏览器一样存储和发送Cookie。如果HTTP请求响应包含cookie,则Cookie管理器会自动存储该cookie,并将其用于将来对该特定网站的所有请求,每个jmeter线程都有自己的“cookie存储区”。如果手动将Cookie添加到Cookie管理器,cookie将由所有jmeter线程共享。
- 鼠标右键点击“测试计划-->添加-->配置元件-->HTTP Cookie管理器”;
- 填写Cookie键,Cookie值,Cookie作用的域。(手动添加Cookie时填写)
图 5 HTTP Cookie管理器--元件位置
图 6 HTTP Cookie管理器--相关参数
四、添加http请求
一个http请求指的是从客户端到服务端的请求信息。
- 鼠标右键点击“线程组-->添加-->取样器-->HTTP请求”;
- 填写服务器协议、域名或IP地址、端口号、请求类型、路径、参数等。(HTTP请求默认值已设置的参数不填写,可直接调用)
- 自动重定向:如果选中该项,发出的http请求得到响应是301/302,jmeter会重定向到新的界面
- 使用keep Alive:jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信。(默认选中)
图 7 HTTP请求--元件位置
图 8 HTTP请求--相关参数
- 注意事项
(1)常用请求方法
get:从指定的资源请求数据。(把参数包含在URL中)
post:向指定的资源提交要被处理的数据。(通过request body传递参数将请求整体提交给服务器)
(2)参数化方式
一般来说,Get请求用Parameters。
Post请求,根据post请求数据的格式,分两种情况:map格式、json格式。当post请求数据为map格式,即参数名、参数值为key-value键值对,请求的参数添加在Parameters参数表中即可;post请求数据为json格式时,将json格式的请求数据加入到http请求BodyData中。(json规则:缩进一定要准确,参数名与值要用””包住,并用英文逗号隔开,在这里也可以引用其他接口的出参,格式如其它接口一样“${参数名}”,最后一组参数不要加逗号)
由于POST请求方式,如果不设置Headers的content-type,基本默认会以 application/x-www-form-urlencoded 方式提交数据。为了Post请求确保传的是json格式,还需要在HTTP信息头管理器中设置:Content-Type为application/json。
(3)Content-Type方式
①content-type: application/x-www-form-urlencoded
如果不指定content-type,默认使用此格式。
参数可以在Parameters或Body Data里输入(只能使用其中一个),格式不同。
传参格式:key1=value1&key2=value2
②content-type: application/json
要添加http信息头管理器(Content-Type为application/json),在http请求中的“BodyData”中输入参数。
传参格式:
{
"key1":"value1",
"key2":"value2"
}
注:数据类型为list格式时,不需要参数名称,直接在“BodyData”中输入:[“value1”,”value2”,”value3”]
③form-data(很少用到)
在http请求中一定要勾选“use multipart/from-data for POST”,Parameters中输入除了上传的文件以外的参数:参数名和参数值,Files Upload中上传文件,参数名和MIME类型。
传参格式:name="XXXX";value="XXXX"
(4)参数中有中文时,需要将编码方式配置为:utf-8,参数行勾选编码。
五、添加HTTP信息头管理器
用于定制HTTP请求的请求头内容,在请求需要一些验证信息时使用的较多,在http请求之前添加一个HTTP信息头管理器,将所需的头信息以键值对的方式添加进去,能够更真实的模拟该接口的访问,在后边的HTTP请求发送时则将使用该管理器中的header信息。
注:同一作用域下,不论添加多少个信息头管理器, 只会取第一个管理器的值, 不合并
示例:接口文档中content-type为:application/json时,需要配置HTTP信息头管理器,并且参数要在消息体数据中输入。并且配置的信息头管理器一定要放在各自的http请求下,不要放在总线程下,不然格式不同时,不能共用,就会容易出错。
- 鼠标右键点击“http请求-->添加-->配置元件-->HTTP信息头管理器”;
- 填写信息头名称和值。
图 9 HTTP信息头管理器--元件位置
图 10 HTTP信息头管理器--相关参数
六、添加响应断言
响应断言可以对服务器的响应接口进行断言校验,来判断接口测试得到的接口返回值是否正确。
- 鼠标右键点击“http请求-->添加-->断言-->响应断言”;
- apply to:通常发出一个请求只触发一个请求,所以勾选“main sampie only”就可以;若发一个请求可以触发多个服务器请求,就有main sample 和sub-sample之分了;
- 测试字段:一般的http响应,都勾选“响应文本”;
- 模式匹配:包括(返回结果包括你指定的内容,支持正则匹配),匹配和相等(效果相同,当返回值固定时,可以返回值做断言),字符串(与 “包括”差不多,都是指返回结果包括你指定的内容,但是不支持正则字符串);
- 测试模式:输入结果期望值(空格要去掉,与响应数据对应)。
图 11 响应断言--元件位置
图 12 响应断言--相关参数
七、添加察看结果树
添加察看结果树可以看到请求的发送和返回信息,判断返回的请求是否正确。
http响应指的是从服务端到客户端的响应消息,包括响应状态码,响应头,响应报文。
- 鼠标右键点击“线程组-->添加-->监听器-->察看结果树”;
- 执行测试后,就可以在察看结果树里看到详细请求信息;
- 查看结果树中执行成功的请求在左侧会显示绿色,执行失败会显示红色。(当我们没有加断言时,显示绿色并不一定就是成功了,只代表响应码是200或300系列,显示红色说明响应码是400或500系列,所以要想确定请求返回的是正确的,必须要加上断言,只有断言成功才会显示绿色)
图 13 察看结果树--元件位置
图 14 察看结果树-相关参数
八、jmeter快捷键
快捷键 | 功能 | 备注 |
Ctrl+C | 复制 | 可复制组件 |
Ctrl+V | 粘贴 | 可粘贴组件 |
Ctrl + Shift + C | 复制粘贴当前组件到下一行 | |
Ctrl + R | 运行测试计划 | |
Ctrl + E | 清空运行结果 | |
Ctrl + T | 启用/禁用当前组件 | 可以多选 |
Ctrl + F | 全文搜索 | 一般用来搜索组件, 搜索完成后可点击Search -> Reset Search恢复 |
Ctrl + - | 全部收起 | “-“为主键盘的减号 |
Ctrl + Shift + - | 全部展开 | “-“为主键盘的减号 |
Ctrl + G | 当前节点截屏 | |
Ctrl +0 | 创建线程组 | |
Ctrl +1 | 新增HTTP请求 | |
Ctrl +2 | 正则表达式提取器 | |
Ctrl +3 | 响应断言 | |
Ctrl +4 | 固定定时器 | |
Ctrl +5 | 测试活动 | |
Ctrl +7 | JSR223 预处理程序 | |
Ctrl +8 | 调试取样器 | |
Ctrl +9 | 察看结果树 |