场景描述:本案例主要实现多用户同时提交订单,以检测系统对瞬时压力的响应情况。具体流程包括用户登录-添加商品-提交订单。涉及多个接口联动和参数处理,步骤如下:
第一步,登录用户
1、新建“下订单”线程组(测试计划-线程-线程组),线程数可设置并发数,比如图中30代表30个用户并发执行,ramp-up代表加载30个用户使用时间
2、添加cookie管理器(选中线程组-添加-配置元件-httpcookie管理器)
3、创建用户登录(选中线程组-添加-取样器-http请求),下图箭头注明了http请求方式,路径里填写request url,基本内填写请求的参数。参数内telphone即用户登录信息,这里采取直接读取csv文件获取用户账号
读取csv文件的方法(选中登录用户--添加-配置元件-CSV 数据文件设置)设置好变量名和文件路径,CSV文件内容右图。然后在请求即“用户登录”telphone参数内填入变量值“${user}”即可
4、登录成功后,需要返回用户鉴权信息给后面的请求使用,分析登陆后的返回值,找到鉴权信息,把这部分内容提取后做成变量
提取并设置成变量的方法(选中登录用户--添加-后置处理器-正则表达式处理器),根据上图可知,token的内容在jwttoken和logiflag之间,如此,正则表达式可写成"JwtToken":"(.+?)","LoginFlag"
如此,鉴权信息变量化,变量名称“JwtToken”
步骤二:获取商品信息
1、创建http请求,获取商品列表,且取第一个商品的信息
2、根据“1”返回结果,把价格和商品id提取出来设置成变量,这里需要注意对请求头的处理,请求头需要带入“登录步骤”获取的鉴权信息,即前文的JwtToken,否则获取列表数据非用户登录后数据,导致后面无效
头信息处理(选中分页获取商品列表 --添加-配置元件-HTTP信息头管理器),信息头包括文本类型,host和鉴权信息
3、保存直接下单数据到购物车请求,提取“CartInfo”值,这个值是提交订单接口必备的参数之一,后面几个接口都是如此,中间的参数设置已经返回值提取和变量化不再累赘
4、提取“addId”,客户收地地址信息
5、获取(计算)运费,提取运费
步骤3:订单请求,步骤2内容基本是给步骤3提交订单准备数据,可以看到,这个请求的参数里有好几个变量,实际就是步骤2里的请求提取的数据
以上,一个完整的用户-获取商品数据-提交订单流程完成了
步骤4:设置并发环境,比如我们需要30个用户同时提交订单
1、线程组设置30
2、为了实现30个用户同时提交订单,选中创建订单步骤,设置数量与线程数一致(添加-定时器-Synchronizing Timer)
3、在最后面加上察看结果树、聚合报告、用表格察看结果等结果显示(线程组-添加-监听器),如此,整个jmeter脚本环境就算配置完成
步骤5:执行,点上面绿色的按钮开始执行
步骤6:查看结果
1、察看结果树的结果
2、聚合报告的结果
3、用表格察看结果的结果,这个报告可以看出下订单接口所有的用户的请求时间,所有用户的请求时间基本误差在1秒内,如果用户数越大,差异应该越大,这个跟负载机的性能应该有关系