JMeter 典型电商场景(下单/支付)的性能压测(二)

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)


本文为霍格沃兹测试学院优秀学员课程学习系列笔记,希望大家可以在这里学到想了解知识。

1.4 POST/order/generateConfirmOrder


GET /cart/list


1.4.1 接口分析
实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

上述是一个确认订单的post请求接口,但是从接口文档中看到的是没有需要传入的请求参数,具体原因可以来看一下源码:

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

找到对应的方法实现:

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

通过源码可以看到,程序会去回去当前用户的购物车信息、地址信息、优惠券信息等来计算生成订单;这也就是为什么购物车相关接口要放在整个链路靠前执行(本例中目前只涉及购物车,未涉及优惠券积分等信息)。

1.4.2 Jmeter脚本编写
实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

1.5 POST/order/generateOrder

1.5.1 接口分析
实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

有接口文档可以看到这是一个传入购物车信息然后生成订单的接口,这里传入的有优惠券id,收货地址,付款类型和积分信息,查看部分源码如下:

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

从源码中可以看到会先对优惠券和积分的null值进行判断,而在刚才介绍过当前的场景中不涉及优惠券和积分,因此在接口传参时我们就不传入couponId和useIntegration了。

1.5.2 Jmeter 脚本编写
实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

运行调试脚本,我们发现了如下失败:

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

我们查看日志,发现在OmsPortalOrderServiceImpl.generateOrder方法的第189行报了空指针异常的错误:

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

以此我们找到源码的位置处,发现原来是缺少收货地址信息:


实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

因此到这里我们需要添加收货地址信息,那就利用相关接口,通过Jmeter去构建我们需要的数据。


1.6 POST/member/address/add


1.6.1 接口分析
实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

按照请求参数填入请求信息即可。

1.6.2 Jmeter脚本编写


因为只是为了构造数据,所以我们单独在线程组下面创建一个线程,其余的都暂时Disable:


实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)


另外,id和MemberId也同样是通过鉴权信息获取到,不需要传入:


实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)


一个用户生成一个地址信息即可,所以在鉴权的CSV Data中将循环设为false


实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)


调试验证脚本通过,创造线程构造数据即可:


实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)


1.7 获取 memberReceiveAddressID

在确认订单的接口返回值中,我们可以看到 memberReceiveAddressId

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

这样的话直接通过JSON Extractor获取即可:

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

下单成功:

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

1.8 POST/order /paySuccess

订单总算是完成了,到了最后一步支付了。

1.8.1 接口分析


从接口文档中可以看到支付接口需要传入订单的orderId,这里有个坑要注意的是它的参数传递是类似get请求形式的在URL后面接参数:

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

orderId自然是要从确认的订单返回值中,因此还是老方法,JSON Extractor获取即可:

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

1.8.2 Jmeter 脚本编写
实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

调试验证:

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)


2. 阶段总结

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

到这里,整个电商模式的典型购物下单场景脚本已经几乎完成,整体概览如下:

实战 | JMeter 典型电商场景(下单/支付)的性能压测(二)

上面说几乎完成,也就是还差一点,我们还需要对实际的发压场景做最后的调整,因为目前的线程数是一次性发起的,没有一个梯度的概念,而实际的场景中是呈现一种递增的形式。

所以为了测试的更真实性,我们要借助插件来完成需求,具体在下篇文章谈 Ultimate Thread Group 插件的应用。


分享到:


相關文章: