最近在研究怎样对电商系统的业务进行幂等测试,利用jmeter对单独业务开展幂等测试可能简便、直接有效吧

 

场景描述:买家每一笔订单选中商品后,系统会生成一个“ShopCartIds”,而订单时基于“ShopCartIds”进行创建,且具有唯一性

  那么,同一个“ShopCartIds”理论上只能创建一个订单,如果去创建多个订单应该会出发幂等性保护。

 

思路:“ShopCart/SavePurchaseCart”接口获取“ShopCartIds”,模拟5个用户使用同一个“ShopCartIds”同求请求“Order/CreateOrderByShopCart”接口

  检查创建订单情况

 

jmeter步骤:

第一步,创建setup线程组,把“ShopCart/SavePurchaseCart”请求规划到这个线程组内(因为如果把两个接口列入同一个线程组,所有的请求都会循环执行多次)

jmeter实现幂等测试的一种方法(案例)_幂等性

 

 

第二步,创建“返回ShopCartIds”http请求,通过“ShopCart/SavePurchaseCart”获取“ShopCartIds”

jmeter实现幂等测试的一种方法(案例)_数据_02

 

 

第三步,对“ShopCart/SavePurchaseCart”响应数据进行提取,获取“ShopCartIds”,这里使用正则表达式提取器

jmeter实现幂等测试的一种方法(案例)_数据_03

 

第四步,把提取到的结果设置为全局变量,跨线程组需要这一方式进行变量传递。

jmeter实现幂等测试的一种方法(案例)_幂等性_04

 

 

 第五步,再建一个线程组,且把设置好线程组(线程数可以理解为用户数)

jmeter实现幂等测试的一种方法(案例)_线程组_05

 

 

第六步,创建下订单接口,也就时“Order/CreateOrderByShopCart”接口的http请求,划红线即上一个线程组传参过来的“ShopCartIds”

jmeter实现幂等测试的一种方法(案例)_数据_06

 

 

第七步,设置同步定时器,可以理解为lr里面的集合点,即所有用户在这个接口进行同时操作

jmeter实现幂等测试的一种方法(案例)_幂等性_07

 

 

第八步,设置好各类结果查看和监控后,执行脚本。可以看到结果树里获取“ShopCartIds”仅返回一个结果,而下订单返回了5个结果

jmeter实现幂等测试的一种方法(案例)_正则表达式_08

 

我们依次展开所有的“下订单”结果返回,检查请求时间和返回结果

jmeter实现幂等测试的一种方法(案例)_幂等_09jmeter实现幂等测试的一种方法(案例)_幂等_10

 

 所有的“Sample Start”请求时间均相同,展开响应数据,只有第一个返回成功,且创建订单号,其他返回下架

jmeter实现幂等测试的一种方法(案例)_线程组_11jmeter实现幂等测试的一种方法(案例)_幂等_12

 

 

然后再检查系统订单列表,列表只生成一个订单

jmeter实现幂等测试的一种方法(案例)_幂等_13

 

 

理论上,上方案例可实现提交订单幂等性相关测试,但5个用户的数据可能偏少,服务器对5个用户的处理还是没有压力,往往问题都出现再大数据的并发上