jmeter实现幂等测试的一种方法(案例)
最近在研究怎样对电商系统的业务进行幂等测试,利用jmeter对单独业务开展幂等测试可能简便、直接有效吧
场景描述:买家每一笔订单选中商品后,系统会生成一个“ShopCartIds”,而订单时基于“ShopCartIds”进行创建,且具有唯一性
那么,同一个“ShopCartIds”理论上只能创建一个订单,如果去创建多个订单应该会出发幂等性保护。
思路:“ShopCart/SavePurchaseCart”接口获取“ShopCartIds”,模拟5个用户使用同一个“ShopCartIds”同求请求“Order/CreateOrderByShopCart”接口
检查创建订单情况
jmeter步骤:
第一步,创建setup线程组,把“ShopCart/SavePurchaseCart”请求规划到这个线程组内(因为如果把两个接口列入同一个线程组,所有的请求都会循环执行多次)
第二步,创建“返回ShopCartIds”http请求,通过“ShopCart/SavePurchaseCart”获取“ShopCartIds”
第三步,对“ShopCart/SavePurchaseCart”响应数据进行提取,获取“ShopCartIds”,这里使用正则表达式提取器,怎么使用正则表达式参考:https://www.cnblogs.com/becks/p/14951525.html
第四步,把提取到的结果设置为全局变量,跨线程组需要这一方式进行变量传递。怎样使用跨线程组传参可参考:https://www.cnblogs.com/becks/p/12592808.html
第五步,再建一个线程组,且把设置好线程组(线程数可以理解为用户数)
第六步,创建下订单接口,也就时“Order/CreateOrderByShopCart”接口的http请求,划红线即上一个线程组传参过来的“ShopCartIds”
第七步,设置同步定时器,可以理解为lr里面的集合点,即所有用户在这个接口进行同时操作
第八步,设置好各类结果查看和监控后,执行脚本。可以看到结果树里获取“ShopCartIds”仅返回一个结果,而下订单返回了5个结果
我们依次展开所有的“下订单”结果返回,检查请求时间和返回结果
所有的“Sample Start”请求时间均相同,展开响应数据,只有第一个返回成功,且创建订单号,其他返回下架
然后再检查系统订单列表,列表只生成一个订单
理论上,上方案例可实现提交订单幂等性相关测试,但5个用户的数据可能偏少,服务器对5个用户的处理还是没有压力,往往问题都出现再大数据的并发上
但是总体思路方向,应该问题不大,接下来的幂等测试皆以此为参考展开