搭好环境后就开始写jmeter脚本
第一步:添加线程组
测试计划···添加 ···threads(users)···线程组

第二步:在线程组中添加http请求
添加···Sampler···HTTP请求

第三步:填写http请求的相关数据
服务器名称或ip:{填写接口地址即可}【注意,这里是接口地址,不是网站地址】
路径:ip+接口路径
协议:
方法:
内容编码(content encoding):utf-8(中文编码)
登录接口的话一般会需要再添加一个http信息头管理器,如图
没有添加这个头信息运行时会报错

信息头中的数据可以去抓包获取

抓到了头部的一些信息,但是这么多每个都要加上去吗,答案是no
搞清楚登录时需要用到的放上去就行,我这里就加了一个

下面http请求内容的图来了

填好了之后需要看是不是对的,请求有没有通。这个时候可以添加一个察看结果树
第四步:添加察看结果树

但是察看结果树有个不好的地方在于,接口通了但是没有成功的情况下不会报错,会显示成功例如这样:

明明返回了5010,察看结果树竟然没有报错,震惊
但是不要慌张,我们可以添加一个相应断言来解决这种情况
上面是"code":5010,那一般情况下接口返回200才是成功
第五步:添加响应断言

其余的不用改,只需添加上检查点的唯一标识即可,比如说接口返回的200

这个时候再重新运行刚刚的接口,就报错了,如下

还告诉了断言失败信息:响应数据中没有200这个唯一标识
那接口没有返回200是为什么呢,为什么上面的登录接口又可以呢,答案是每个系统为了确保安全
登录之后的每一步操作都有一个cookie值
每位用户有不同的cookie
而且这玩意儿会过期
有些是退出后就过期
有些是过了时间就过期
具体要看接口怎么写的
cookie值可以抓包得到,那么这里我抓了一个登录接口的包,获取到了本次操作的cookie值

这个图是一个叫做charles的抓包工具,抓包工具使用请见另外一篇文章
知道了cookie的值之后在需要添加cookie的接口添加一个http cookie管理器,如图

然后填上该接口的cookie值

这个时候再次运行,成功了

但是这个响应是啥,一堆堆的,不是很好看这个时候我们把这里的格式改为json


顿时光明了,我还要再当100年测试!
如果是一个流程的话,那么添加一个http请求就要填一次ip加路径,多来几个一天时间就浪费了,而且接口前面的ip地址一般都是一致的,那么有一种方式可以参数化这些东西,省事省力
第六步:在线程组下添加一个用户定义的变量
2180915af0b82f4f59c95d8cc4a07d5.png
内容可以这样填,比如我这里是想参数化ip

我这里的名称是ip,那下次添加http请求时直接调用这个ip即可
如图

如果查看结果树不太明显的话还可以添加多几个用来分析结果数据


然后就是循环了,这些东西全部调好之后,开始测试,在线程组中填写循环次数

然后就静等结果出来,还没写完,我还要研究下怎么操作更方便,后续会再更
自动更新cookie方法:
jmeter配置文件中可以设置自动保存cookie变量,具体如下:
1、在bin目录下的jmeter.properties,搜CookieManager.save.cookies,把后面的值改为true,去掉行首的#号,然后保存后重启jmeter。
2、在需要取Cookie的线程里添加一个Http Cookie管理器(管理器可以默认为空,但是一定要添加,否则是不会存储cookie变量的)
网友评论