一般通过fiddler抓包或者开发提供的接口设计文档的形式,在Jmeter的GUI界面操作进行脚本生成,还可以使用编写java代码打包成jar包进行生成等方式。
在Jmeter手工制作脚本之前,先要获取HTTP请求的相关信息,如请求地址、请求参数、 请求类型等,一般情况下,有两种方法获取这些相关信息:
1、根据开发提供的接口设计规范文档;
2、使用第三方抓包工具如Fiddler、 Charles等抓包, 然后从中提取信息。
在介绍手工编写脚本时,就以我们公司的图表展示为例来讲解,使用的工具是jmeter和fiddler。
准备工作
1.增加过滤
把fiddler加上过滤功能,添加如下正则表达式,如下所示:
REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav|js)(\?.*)?$
2.调试环境
保证物理机与服务器的网络畅通,使用ping命令即可。
3. jmeter环境
jemter环境要搭建好,安装jdk和下载jmeter,此处省略。
录制步骤
第一步:添加线程组
打开jmeter,在测试计划中添加一个线程组,如下:
第二步:添加HTTP请求
在线程组中添加一个http请求,http请求添加方法:线程组 -->右键添加 -->Sampler -->HTTP请求如下:
第三步:添加http请求默认值
因为默认值设置好以后,就对http请求有很大的方便,详细见下:
将协议、ip或服务器名称、端口号、字符格式设置好,在之后的http请求就不用设置了,相当于设置好了一个全局的默认值:
需要注意的是:http协议的端口是80,https协议的端口是443。
第四步:手工写脚本
手工编写脚本注意事项:不要多空格也不要少空格,符号也要注意,细心会给自己调试脚本节省很多力气。
图表应用展示,使用fiddler抓取到四个请求,如下:
1.编写第一个接口
将第一个请求的请求头复制到jmeter中的http请求中
由于刚才设置了HTTP请求默认值,所以现在在HTTP请求中,协议,ip,端口号都不用填写了,是不是很方便了。
2.编写第二个接口
点击第二个请求,同样是get请求,直接将请求头复制到jmeter中的http请求中,注意有参数,get请求的话可以将参数直接写到路径下,也可以在下面的参数栏中填写。
3.编写第三个接口
点击第三个请求,是post请求,查看请求地址和请求头,因为请求的地址和上面的两个请求不一样,我们在http请求里直接输入请求的url,
因为有json格式的请求入参,我们在消息体数据里填写请求json串,且day这个参数我们想直接取系统当前时间的前一天,可以引入jmeter的一个函数来进行设置
引用函数,见下图
下面是_time Shift函数的介绍,可以参考进行设置
使用${__timeShift(yyyy-MM-dd,,P-1D,,)}
__timeShift(格式,日期,移位,语言环境,变量)函数,可以将时间进行移位,对当前时间增加或者减少对应的时间
(1)、格式 - 将显示创建日期的格式。如果该值未被传递,则以毫秒为单位创建日期。
(2)、日期 - 这是日期值。用于如果要通过添加或减去特定天数,小时或分钟来创建特定日期的情况。如果参数值未通过,则使用当前日期。
(3)、移位 - 表示要从日期参数的值中添加或减去多少天,几小时或几分钟。如果该值未被传递,则不会将任何值减去或添加到日期参数的值中。
“P1DT2H4M5S” 解析为“添加1天2小时4分钟5秒”
“P-6H3M”解析为“-6小时+3分钟”
“-P6H3M”解析为“-6小时-3分钟”
“-P-6H + 3M”解析为“+6小时和-3分钟”
(4)、区域设置 - 设置创建日期的显示语言。不是必填项
(5)、变量 - 创建日期的值将被分配给的变量的名称。不是必填项。
我们在脚本中可以这样设置${__timeShift(yyyy-MM-dd,,p-1d,,)},意思为取当前系统时间的前一天。
做完如上操作,基本的脚本就已经写完了,只剩脚本调试了,三个请求添加完成如下:
4.添加查看结果树,执行脚本能收到正确的响应报文即说明我们脚本调试好了
在我们测试过程中,其实有好多测试工具可以使用的,可以大大的加快我们的测试效率,此次文章提到的fiddler和jmeter就是接口测试时很好用的测试工具,希望大家平时多练习多学习多总结,提升自己的测试能力。