一、手机转账
我主要负责了转账模块,这个大模块中包含了智能转账、手机转账、语音转账、预约转账、收款人管理等5个子模块,我这次着重介绍一下我们生活中使用最多的手机转账子模块。
对于转账需要关注的是转账前、转账中、转账后这三个状态下的测试。一个完整的业务流程就是用户在转账录入页输入转账信息,包括选择付款账户,收款人姓名,收款人账号,收款银行,转账金额,转账方式等,输入完毕后点击下一步进入确认页,确认页会显示用户在录入页输入的所有信息,确认无误后点击确认,会根据转账金额提供不同的验证方式,一般来说手机动态码验证即可。但是本银行采取的是卡密、短信、人脸识别三重验证,验证成功点击确认提交之后,就会跳转到结果页,提示用户转账已受理,基本上就是这么一个流程。
后端逻辑的话首先我发起一笔转账,我要去后端调取我这张付款卡的状态(正常,挂失,冻结,注销),是否可以正常支付(正常和挂失状态的卡可以转账,冻结和注销状态不可),确认可以正常支付的话就要去调查卡里有没有钱,如果余额不足,转账金额大于余额的话肯定也无法转账成功,然后这两种情况都是在录入页就会报错的,然后确认转出的卡状态正常余额充足之后,就要去确认转入卡的状态,如果转入卡状态不正常的话,行内转账的话是在录入页就进行报错的,跨行实时转账是在结果页报错,跨行延时转账则是在到时间后通过转账失败的通知告知用户对方账号状态异常。
然后转账的状态我们也要测试一下,比如说延时转账设置的两小时后转账,那这两个小时内这笔转账应该都在转账中状态,两小时后准时转换为转账成功或转账失败。
转账前后我们都要用数据库去查看一下卡余额,转账前的余额是多少,转账后的是多少。账户表、渠道表、用户信息表、流水表、交易记录表、交易撤销表、对账文件表等等。
二、智能转账
我主要负责了转账模块,这个大模块中包含了智能转账、手机转账、语音转账、预约转账、收款人管理等5个子模块,我这次着重介绍一下智能转账子模块。
对于转账需要关注的是转账前、转账中、转账后这三个状态下的测试。一个完整的业务流程就是用户在转账录入页输入转账信息,包括选择付款账户,收款人姓名,收款人账号,收款银行,转账金额,转账方式等,输入完毕后点击下一步进入确认页,确认页会显示用户在录入页输入的所有信息,确认无误后点击确认,会根据转账金额提供不同的验证方式,一般来说手机动态码验证即可。但是本银行采取的是卡密、短信、人脸识别三重验证,验证成功点击确认提交之后,就会跳转到结果页,提示用户转账已受理,基本上就是这么一个流程。
后端逻辑的话首先我发起一笔转账,我要去后端调取我这张付款卡的状态(正常,挂失,冻结,注销),是否可以正常支付(正常和挂失状态的卡可以转账,冻结和注销状态不可),确认可以正常支付的话就要去调查卡里有没有钱,如果余额不足,转账金额大于余额的话肯定也无法转账成功,然后这两种情况都是在录入页就会报错的,然后确认转出的卡状态正常余额充足之后,就要去确认转入卡的状态,如果转入卡状态不正常的话,行内转账的话是在录入页就进行报错的,跨行实时转账是在结果页报错,跨行延时转账则是在到时间后通过转账失败的通知告知用户对方账号状态异常。
然后转账的状态我们也要测试一下,比如说延时转账设置的两小时后转账,那这两个小时内这笔转账应该都在转账中状态,两小时后准时转换为转账成功或转账失败。
转账前后我们都要用数据库去查看一下卡余额,转账前的余额是多少,转账后的是多少。账户表、渠道表、用户信息表、流水表、交易记录表、交易撤销表、对账文件表等等。
三、测试点
行内外转账:
1.行内:
借记卡(珠峰IC借记卡普卡、珠峰IC借记卡金卡、社会保障卡、惠农一卡通、藏建一卡通)、活期存折、基本户、一般户、临时户、专用户都转账成功,定期存折、存单则转账失败
2.行外:
节假日转账:
(0,100万]:银联贷记(卡bin表的他行卡)、小额、超网(超网行号表的他行卡)
(100万,500万]:银联贷记(卡bin表的他行卡)
非节假日转账:
(0,20万]、超网、小额
(20万,100万]银联贷记(卡bin表的他行卡)、超网(超网行号表的他行卡)、小额
(100万,500万]银联贷记(卡bin表的他行卡)、大额
(500万,+∞]大额
这里主要都是测试各个支付汇路通道转账的限额,涉及到开区间和闭区间的边界值测试。
转本人账户以及他人账户:
本人:
1.有证书,本次转账金额加累计转账金额超过100万,验证取款密码,转账成功
2.有特殊限额,本次转账金额加累计转账金额超过特殊限额,验证取款密码,转账成功
3.无证书,单笔转账金额超过50万,验证取款密码,转账成功
4.本次转账金额加累计转账金额超过非柜面日累计限额,验证取款密码,转账成功
5.本次转账加累计转账次数超过非柜面当日累计笔数限额,验证取款密码,转账成功
6.本次转账金额加累计转账金额超过非柜面年累计限额,验证取款密码,转账成功
7.本人账户转本人本行账户,转账失败
他人:
1.验证转账金额与安全认证(转他人账户):单笔、当日累计限额
2.验证日累计特殊限额(转他人账户):单笔、当日累计、特殊限额
3.验证非柜面转账限额(转他人账户):日累计、当日笔数累计、年累计、特殊限额
二三类户转账
这里主要测试二类户和三类户的转入、转出以及绑定账户转账以及非绑定账户转账的限额测试。
账户状态规则
主要根据收款账户、付款账户的账户状态进行测试,对呈现结果中的转账成功和失败进行测试。
状态异常情况测试
1.付款方子账户状态全额冻结-只进不出,转账失败
2.付款方止付状态全额止付-只进不出,转账失败
3.付款方渠道限制生效,转账失败
3.付款方强制备注生效,转账失败
4.付款方子账户状态部分冻结-可进,转账成功
5.付款方止付状态部分止付-可进,转账成功
四、有意义的bug
bug1
其实转账模块没有什么太典型的bug,基本上问题会出现在限额的边界值上以及转账之后不能到账或者到账金额不正确,又或者是需求规定转账失败的情况却做成了转账成功。这些都是需要开发应该加判断或者限制的部分没有做正确,修复代码之后基本都能解决。
bug2
A账户余额100元,然后开两个窗口(app和web同时进行,因为银行网站的web端也是可以转账的)同时给两个不同的账户转账100元,最后都转账成功了。(意思就是余额只有100,同时转账的时候,却转了200出去)
经过排查,这个是开发在进行多线程处理的时候比较容易出问题的地方。这里应该对转账动作有先后限制,第一时间触达转账的账号转账成功,扣款。第二账户触达转账的时候就应该提示余额不足。