作为初学者,记录下用jmeter实现抽奖项目的过程。项目网址http://doc.nnzhp.cn/index.php?s=/5&page_id=19。
设置如下:
1、注册接口
创建线程组,线程组下添加http请求和结果树,根据接口文档填写后,发送。
请求的结果,因为该账号已经存在,所以提示“用户已经存在”。如果时注册的新账号,会提示注册成功。(ps:用户名、密码都有格式限制,如果注册的格式不正确,会返回不同的提示)
2、登录
用前面注册的账号,登录
结果
3、添加奖品
这里涉及上图片上传,可以百度学习下。运行结果,不是管理员账号密码。
是管理员的账号则显示成功【管理员账号从另一篇接口文档获知】
后续重复调用该接口时发现,管理员账号的sign出现变化,导致添加不了,故优化该处脚本。
4、抽奖接口
抽奖接口的参数,可以看到是登录以后才可以抽奖,因此在线程组下,添加一个http的登录请求,在登录请求下添加两个正则表达式分别提取userid、sign,添加调试取样器查看提取的数值(这个非常有用)。添加http抽奖请求,添加结果树
在用正则表达式的时候,形成了一个定向思维,提取值一般都用(.+?)或者(.*?),但是用了以后发现抽奖结果中会一直提示该账号不存在。就想到提取的时候应该出错了,添加了调试取样器查看。
发现userid的取值是4.而正确取值应该是47194,灵光一闪想到 ?表示:不要太贪婪,在找到第一个匹配项后停止匹配。而该 "userId": 47194右边界是为空的。所以添加?后,提取到第一个值4以后,就停止匹配了。后把正则表达式修改为(.+),结果就正确了。
在查看结果
5、查看中奖记录
同上条一样,也需登录。且参数也一致,所以从上条将登录复制过来就行
查看结果
6、获取所有奖品信息
查看结果
脚本优化:
配置元件-http请求默认值。
上述脚本中,请求的协议和服务器都是一样的。将所有http请求中相同的部分提取出来,填入http请求默认值中。
实现简化脚本,简化工作量的目标。