本文为霍格沃兹测试学院优秀学员课程学习系列笔记,希望大家可以在这里学到想了解知识。
1.4 POST/order/generateConfirmOrder
GET /cart/list
1.4.1 接口分析
上述是一个确认订单的post请求接口,但是从接口文档中看到的是没有需要传入的请求参数,具体原因可以来看一下源码:
找到对应的方法实现:
通过源码可以看到,程序会去回去当前用户的购物车信息、地址信息、优惠券信息等来计算生成订单;这也就是为什么购物车相关接口要放在整个链路靠前执行(本例中目前只涉及购物车,未涉及优惠券积分等信息)。
1.4.2 Jmeter脚本编写
1.5 POST/order/generateOrder
1.5.1 接口分析
有接口文档可以看到这是一个传入购物车信息然后生成订单的接口,这里传入的有优惠券id,收货地址,付款类型和积分信息,查看部分源码如下:
从源码中可以看到会先对优惠券和积分的null值进行判断,而在刚才介绍过当前的场景中不涉及优惠券和积分,因此在接口传参时我们就不传入couponId和useIntegration了。
1.5.2 Jmeter 脚本编写
运行调试脚本,我们发现了如下失败:
我们查看日志,发现在OmsPortalOrderServiceImpl.generateOrder方法的第189行报了空指针异常的错误:
以此我们找到源码的位置处,发现原来是缺少收货地址信息:
因此到这里我们需要添加收货地址信息,那就利用相关接口,通过Jmeter去构建我们需要的数据。
1.6 POST/member/address/add
1.6.1 接口分析
按照请求参数填入请求信息即可。
1.6.2 Jmeter脚本编写
因为只是为了构造数据,所以我们单独在线程组下面创建一个线程,其余的都暂时Disable:
另外,id和MemberId也同样是通过鉴权信息获取到,不需要传入:
一个用户生成一个地址信息即可,所以在鉴权的CSV Data中将循环设为false
调试验证脚本通过,创造线程构造数据即可:
1.7 获取 memberReceiveAddressID
在确认订单的接口返回值中,我们可以看到 memberReceiveAddressId
这样的话直接通过JSON Extractor获取即可:
下单成功:
1.8 POST/order /paySuccess
订单总算是完成了,到了最后一步支付了。
1.8.1 接口分析
从接口文档中可以看到支付接口需要传入订单的orderId,这里有个坑要注意的是它的参数传递是类似get请求形式的在URL后面接参数:
orderId自然是要从确认的订单返回值中,因此还是老方法,JSON Extractor获取即可:
1.8.2 Jmeter 脚本编写
调试验证:
2. 阶段总结
到这里,整个电商模式的典型购物下单场景脚本已经几乎完成,整体概览如下:
上面说几乎完成,也就是还差一点,我们还需要对实际的发压场景做最后的调整,因为目前的线程数是一次性发起的,没有一个梯度的概念,而实际的场景中是呈现一种递增的形式。
所以为了测试的更真实性,我们要借助插件来完成需求,具体在下篇文章谈 Ultimate Thread Group 插件的应用。
閱讀更多 霍格沃茲軟件測試學院 的文章