背景:
用jmeter测试系统接口。系统登录后,操作各个页面
登录做了正则表达式提取token
并添加beanshell后置处理和预处理程序将token传出其他事务:
其他事务传入token参数:
发现偶尔会有部分请求报错:
报401{“message:”:Full authentication is required to access}
在网上找了很久,都说是token失效,但按我上面的传参应该是没有问题的,而且它是偶尔有部分请求失败,就很诡异。
但还是想到“登录”这个事务就从来没有报错过,所以应该还是token问题
后面第二天开机第一次跑全部线程时,发现除了登录全部失败了,才想起来需要先跑登录获取最新token再跑其他线程(jmeter默认不会按你编辑的顺序执行,是随机的),所以就给登录设置为setup线程组,这样每次都会先跑登录,然后发现后面的线程不再报错了
总结:虽然手动先执行了登录获取了最新token,但不知道为啥可能有时候没有传入后面的部分请求里面,导致部分请求认证失败。怀疑是jmeter的问题
解决办法:在jmeter里面把登录设置为setup线程组后,默认自动先跑登录再跑其他页面的接口,就没有报错了