首先,根据不同维度,我们可以把支付分为不同的种类。如下图所示:
其次,一般来讲,线上支付分为两种消费模式。一种是直接支付金额,如淘宝,京东等购物网站,或是360云盘,视频会员等这种会员服务;另一种是充值购买金豆之类的虚拟币,在网站中使用虚拟币进行消费,比如游戏平台、花椒等产品。
功能测试:
通过将边界值分析、等价类划分、错误推测、因果图等各种测试方法进行结合,整理出尽可能全面的测试案例,对支付功能及其相关功能进行测试,以确保整个支付流程以及涉及到支付流程的其他流程在任何情况下都能正常进行。
接口测试:
明确整个支付流程所需要调用的接口,分清楚商家和第三方支付平台的接口以及参数和请求方式。包括对接口特定参数的加密,使用异常订单号模拟支付,对服务端的校验等等。
安全测试:
支付涉及到金额方面,所以要考虑安全测试方面。支付请求的伪造、金额的恶意篡改、恶意模拟第三方接口来调用商家接口等等。这都是我们需要考虑到的问题。
常见的支付流程如下图所示:
在这里插入图片描述
3.1. 正常的发起一笔流量充值请求,检查点:
1)用户发过去的信息有携带key值
2)商户系统本地数据会留存一份用户的订单信息,并且会根据每笔订单信息生成一笔支付信息(同时留存到本地)
3)第三方支付成功,第三方有存支付订单信息
4)充值成功,用户的流量余额有对应增加
3.2. 异常用例
3.2.1 修改用户发过去的数据
1)产品ID 与价值不对等---->检查点:篡改数据和key,检查商户系统报错:key值不对或者是用户数据有误。
2)取消充值流量
3)重复发起流量充值请求
3.2.2 商户系统-第三方之间
1)密钥搞错-第三方报错,不接收密钥
2)提交商户系统里面不存在的订单/支付订单->第三方这里也是不能通过请求
3)篡改用户支付金额–>第三方也要检查
3.2.3 第三方–用户之间
1)支付密码错误/余额不足
2)取消支付
3)重复支付[对账—>处理退款]
支付流程测试点
1. 付款金额和应付金额是否一致
(比如:扫描的支付二维码,和显示的应支付金额是否一致)。歪个楼,题主曾经就踩过坑呀,页面显示的应付金额通过接口vip.product返回了,前端显示出来应付金额。但是,支付的二维码是通过接口vip.getPayUrl这个接口返回的,结果二维码扫出来的值和显示的应付金额不一样呀!!!最后问题是在于,vip.getPayUrl中取的是服务器缓存,导致二维码显示的金额跟前端展示的应付金额不一致。所以测试支付还是要走整个支付流程才行,从确认订单到最后的支付成功,任何一步都有可能有问题。
2.同一种支付方式,不同的支付入口
(比如:如下图所示,支付宝有两个支付入口。即可通过扫描二维码支付,也可以通过支付宝网页支付。在测试过程中,两个入口都要覆盖到。再歪个楼,题主在测试过程中踩过的坑二:通过支付宝网站支付,支付成功后,页面没有跳转回原服务套餐网页。最后的原因是服务配置的return_url不正确,导致支付后,没有跳回原页面。如果测试用例覆盖不到这种场景,那么将会造成非常严重的线上事故。
3. 支付成功后,产品购买是否成功
(比如会员服务产品,购买后会员到期时间是否正常延迟;比如购买商品,支付成功后,订单状态是否更改,商品种类和数量是否正确等等)
4. 支付成功后,用户的金额是否扣除成功
支付金额测试点
a) 正常金额支付
b) 金额的最小值:0.01
c) 无意义的值:0元
d) 最大金额:设置支付的最大金额
e) 银行卡或微信等,设置每日最大消费金额或者单笔最大消费金额
f) 银行卡或微信余额不足时支付
支付流程测试点
a) 正常完成支付流程
b) 调起订单后,取消订单
c) 支付中断后,继续支付
d) 支付中断后结束支付
e) 单笔订单单笔支付
f) 多订单合并支付
g) 持续点击支付,是否会出现多次购买
支付方式测试点
a) 支付宝支付
b) 支付宝网页支付
c) 微信支付
d) 银行卡支付
优惠券或折扣(有一定的优惠)
a) 支付中使用优惠券/折扣,应付金额和实际支付金额是否正确
b) 优惠券/折扣是否是必选,是否可以不选择折扣
c) 支付订单退款完成后,优惠券/折扣是否还能使用
作者:佚名
原文链接:https://blog.csdn.net/Y1730008223CONG/article/details/125061074