支付测试
引言:如今,随着非现金支付手段的不断推广和应用,“非现金社会”正在形成。非现金支付已成为日常生活中不可或缺的伙伴。那么,对于互联网产品来说,支付也是涉及到公司收入的一个重大环节。对于我们测试人员,支付测试也是测试中的重要一环。下面就结合工作中遇到的问题,来给大家介绍一下常用的支付测试。
★支付分类★
首先,根据不同维度,我们可以把支付分为不同的种类。如下图所示:
其次,一般来讲,线上支付分为两种消费模式。一种是直接支付金额,如淘宝,京东等购物网站,或是360云盘,视频会员等这种会员服务;另一种是充值购买金豆之类的虚拟币,在网站中使用虚拟币进行消费,比如游戏平台、花椒等产品。
★测试方法★
功能测试:
通过将边界值分析、等价类划分、错误推测、因果图等各种测试方法进行结合,整理出尽可能全面的测试案例,对支付功能及其相关功能进行测试,以确保整个支付流程以及涉及到支付流程的其他流程在任何情况下都能正常进行。
接口测试:
明确整个支付流程所需要调用的接口,分清楚商家和第三方支付平台的接口以及参数和请求方式。包括对接口特定参数的加密,使用异常订单号模拟支付,对服务端的校验等等。
安全测试:
支付涉及到金额方面,所以要考虑安全测试方面。支付请求的伪造、金额的恶意篡改、恶意模拟第三方接口来调用商家接口等等。这都是我们需要考虑到的问题。
★支付流程★
常见的支付流程如下图所示:
★测试点★
支付流程测试点
▼
- 付款金额和应付金额是否一致(比如:扫描的支付二维码,和显示的应支付金额是否一致)。歪个楼,题主曾经就踩过坑呀,页面显示的应付金额通过接口vip.product返回了,前端显示出来应付金额。但是,支付的二维码是通过接口vip.getPayUrl这个接口返回的,结果二维码扫出来的值和显示的应付金额不一样呀!!!最后问题是在于,vip.getPayUrl中取的是服务器缓存,导致二维码显示的金额跟前端展示的应付金额不一致。所以测试支付还是要走整个支付流程才行,从确认订单到最后的支付成功,任何一步都有可能有问题。1. 同一种支付方式,不同的支付入口(比如:如下图所示,支付宝有两个支付入口。即可通过扫描二维码支付,也可以通过支付宝网页支付。在测试过程中,两个入口都要覆盖到。再歪个楼,题主在测试过程中踩过的坑二:通过支付宝网站支付,支付成功后,页面没有跳转回原服务套餐网页。最后的原因是服务配置的return_url不正确,导致支付后,没有跳回原页面。如果测试用例覆盖不到这种场景,那么将会造成非常严重的线上事故。
- 支付成功后,产品购买是否成功
(比如会员服务产品,购买后会员到期时间是否正常延迟;比如购买商品,支付成功后,订单状态是否更改,商品种类和数量是否正确等等)
- 支付成功后,用户的金额是否扣除成功
支付金额测试点
▼
a) 正常金额支付
b) 金额的最小值:0.01
c) 无意义的值:0元
d) 最大金额:设置支付的最大金额
e) 银行卡或微信等,设置每日最大消费金额或者单笔最大消费金额
f) 银行卡或微信余额不足时支付
支付流程测试点
▼
a) 正常完成支付流程
b) 调起订单后,取消订单
c) 支付中断后,继续支付
d) 支付中断后结束支付
e) 单笔订单单笔支付
f) 多订单合并支付
g) 持续点击支付,是否会出现多次购买
支付方式测试点
▼
a) 支付宝支付
b) 支付宝网页支付
c) 微信支付
d) 银行卡支付
优惠券或折扣(有一定的优惠)
▼
a) 支付中使用优惠券/折扣,应付金额和实际支付金额是否正确
b) 优惠券/折扣是否是必选,是否可以不选择折扣
c) 支付订单退款完成后,优惠券/折扣是否还能使用