使用jmeter模拟用户注册操作,其中一步是短信验证码验证,使用beanshell从redis中获取,
在单线程执行的时候没有问题,一启用多线程,就概率性出现beanshell中的计数器取值与线程中其他请求的计数器请求不一致,为什么
beanshell内编码与jmeter结构如图
网络环境导致,多线程启动的时候,获取redis值可能连接数据库失败,此时无法获取jedis.get(key)
按个人理解,此时本次beanshell未做执行,ssmscode、autonum的赋值还是本线程上一次的赋值,因此导致赋值错位(jmeterlog打印说jedis.auth执行失败侧面证明此原因)
若想杜绝此故障可在jedis连接处加判断,但是即使加了判断,如果ridis连接失败,依然无法获取正确的验证码信息,校验也会不通过,因此没有实际场景意义