用户定义的变量+HTTP Cookie 管理器组合实现接口关联+问题处理
1、实例对象:手机蜜罐产品()
2、实例接口:
用户登录: post /login/
用户登出: get /logout/
获取所有用户: get /user/
3、用户定义的变量组件设置:
4、添加HTTP Cookie 管理器设置
① 添加HTTP Cookie 管理器后,Jmeter会自动记录并保存服务端返回的cookie信息,并且在后面所有请求中自动添加cookie。每个线程的cookie都是独立的。
(注意跨域的cookie默认是不会自动管理的,可以修改Jmeter属性”CookieManager.check.cookies=false”)
② 手动添加cookie信息:遇到没法自动获取的cookie就只能手动添加了,但注意手动添加的cookie会被所有线程共用的
③ 一个测试计划内最好只有一个HTTP Cookie 管理器,因为Jmeter是无法指定使用某一个Cookie 管理器的;另外,如果Cookie名称有重复的话,前面的会被后面的替代。5、添加http 信息头管理器
通过浏览器的开发模式或者抓包工具fiddler获取创建的请求的header
6、手动创建请求
按照已有接口文档填写请求内容(包括端口,请求方式,路径,参数)
- 端口和参数可能为空
- 有的post请求参数不可直接添加,需要以json格式脚本输入,因为不同系统后台数据处理方式可能不同
7、添加查看结果树
运行并查看请求状态
8、问题处理
- 问题描述:
按照上述方法运行脚本,但查看结果树中显示的结果总是第一个通过,然后每间隔一个请求便失败一个,即若有4个请求,则1,3成功,2,4失败,
并且失败的请求返回的错误提示均为下图所示
- 解决方式:
通过抓包工具fiddler抓取目标web请求数据,并保存到本地,再导入jemter中运行,发现抓包数据可正常运行通过。经反复对比和假设求证,
得出以下问题有3个因素导致,即
① 请求路径不同(接口文档与实际接口不一致导致)
② 目标web不需要端口,但随意填写了一个端口
③ 一个测试计划下有多个线程,其他线程添加了全局http请求默认值组件,组件内容影响了测试线程
- 解决结果:
将上述3个因素均修改后,脚本运行成功。
- 遗留问题:
通过http代理服务器录制手机蜜罐web,可打开登录页面,也可录制到登录接口,但无法登陆,账号密码正常的情况下仍报“用户名或密码错误,请重试!”
关闭代理服务器后可正常访问。