面试 | 支付功能如何测试?

支付、退款流程和场景设计

Posted by Haauleon on July 20, 2021

一、背景

  支付功能大体上可以从支付流程、退款流程、非功能测试点及支付测试的方法四个方向考虑。



二、测试分析

1.支付流程

  支付的测试流程:点击支付 –> 选择支付方式 –> 确认金额 –> 输入密码 –> 成功支付。需要针对支付流程中的每个阶段和步骤分别测试。

(1)点击支付

序号 场景描述
1 验证点击支付按钮然后取消订单,订单能否正常取消、订单列表和订单详情的信息和状态是否正确


(2)选择支付方式

序号 场景描述
1 大多数应用支持的支付方式:信用卡,储蓄卡,网银支付,余额,第三方支付(微信、支付宝、京东、百度、聚合支付、组合支付),找人代付。验证是否支持这些支付方式、是否可以正常选择并支付
2 支付时结合优惠券/折扣券/促销价抵扣进行相关的抵扣,验证规则正确,并且可以正常抵扣和支付
3 手机上没有安装微信、支付宝等 APP 时,选择对应的支付方式,系统如何处理


(3)确认支付金额

序号 场景描述
1 验证订单支付金额的显示是否有精度问题(前端未处理或者后端接口返回的数值有精度问题)
2 验证组合支付条件下是否出现负数情况
3 验证在全额抵扣后支付金额为 0 时是否发生支付异常
4 验证支付账户余额(支付宝、微信等)小于支付金额时是否发生支付异常


(4)支付密码

序号 场景描述
1 可以支持的支付密码类型有:指纹,人脸识别,账号密码,动态获取验证码,手势,信用卡和支付码,小额免密等,确认自己的产品所支持的密码类型,确认可以验证并支付成功
2 输入错误的密码,检查有无提示信息且正确
3 超过密码错误上限,检查是否冻结等


(5)其他场景测试点

序号 场景描述
1 多笔订单合并支付,是否可以成功
2 重复点击支付按钮,是否会出现多次购买,并同步检查数据库的数据账目是否正确
3 支付失败之后,是否支持补单和退单
4 主动中断支付后后期是否支持继续支付且支付成功
5 被动中断支付后(电话、低电量、闹钟,断网、切换后台、耳机插拔等)是否可以继续支付
6 使用 Fiddler 等抓包篡改价格:不允许抓包或者数据加密,篡改不成功



2.退款流程
序号 场景描述
1 验证正常的退款流程是否能走通
2 退款成功后检查交易状态是否正确,退款金额是否正确且是否到账
3 验证使用优惠券/折扣券/促销价抵扣/积分/平台余额等进行抵扣支付时,退款金额金额是否正确
4 检查数据库的退款数据和账目是否正确
5 提交错误退款(如退款订单号不正确、不存在、其他人的订单号等)或者退款金额错误,验证是否都退款失败(此场景需要借助 postman 进行接口测试或者使用 fiddler、charles 进行接口请求数据篡改)



3.非功能测试点

(1)UI测试

序号 场景描述
1 支付按钮是否足够明显
2 支付的界面是否简洁、美观,符合大众审美
3 支付页面的字体大小是否合理


(2)兼容性测试

序号 场景描述
1 BS:如果是 BS 架构的产品,需要测试浏览器的兼容性,所以就需要根据浏览器的内核,选择一些主流的浏览器进行测试
2 APP:测试手机移动端的兼容性,比如手机型号,系统版本和屏幕大小及分辨率等


(3)易用性测试

序号 场景描述
1 是否支持快捷键功能
2 点击付款按钮,是否有提示
3 取消付款,是否有提示
4 输入框是否对齐,大小是否适中等


(4)性能测试

序号 场景描述
1 多次点击支付按钮时,是否会出现多次扣款
2 如果发生多次扣款,如何通过原支付渠道退回
3 如果在双十一、双十二这种支付高峰的时候,支付时是否会排队
4 是否会响应超时
5 如果响应超时,是否会返回友好提示


(5)安全测试

序号 场景描述
1 验证敏感信息是否加密,是否可以篡改
2 通过一些工具进行安全扫描,检查是否有安全漏洞或者采用一些其他的手段进行专门的安全测试
3 支付请求的伪造,金额的恶意篡改,恶意模拟第三方接口来调用商家接口等,均是我们需要考虑清楚的问题


(6)网络测试

序号 场景描述
1 验证各种网络类型:2G、3G, 4G,5G,wifi 下都可以正常支付
2 进行网络切换,支付功能正常
3 弱网测试下支付功能正常:不会重复支付多次,APP 不会闪退 崩溃,而且页面提示友好



三、测试方法

  支付功能要用真实的钱么?目前提供的思路有以下四种:

1.小额支付
  让开发修改代码,不管支付多少钱,实际支付都是 1 分钱;不过这种方法只能测试小额支付,就有可能会出现产品小额支付没问题,但是大额支付就错误的漏测情况。

2.申请测试金额,走报销流程
  这种方式一般会作为小额支付的一种补充,比如测试完小额支付后,再测试一些大额支付,这就需要跟公司申请测试基金,走报销流程。

3.把收款方改成自己的收款账号
  这样就可以自己支付,自己收款,避免浪费自己的金钱做公司项目的支付测试。但是这也是有风险的,万一扣款成功,但是支付的金额没有到账可该怎么办?

4.沙箱支付
  沙箱支付是一种虚拟的支付,不是真实的金额。这种方法可以验证小额和大额的支付流程;目前支付宝沙箱比较成熟,推荐使用。