尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

手机银行APP专项测试指南:登录、交易链路与安全风控核心要点

手机银行APP专项测试指南:登录、交易链路与安全风控核心要点 接到“手机银行APP专项测试”这种活的时候我的第一反应其实挺真实的登录能登、转账能转、账单能看点一圈下来不就行了后来真正下场做了两周才发现“专项”两个字的分量和平时那种日常迭代回归完全不在一个量级。手机银行APP测试本质上是在一个高风险业务场景里做全链路体检漏掉一个测试点背后可能就是一笔真实资金的差错。这个系列我想把整个银行测试项目的拆解过程、登录模块测试点的梳理方法、交易链路和安全风控专项的验证思路按模块一篇一篇写出来顺带聊聊怎么把项目经验整理成面试时能讲清楚的故事。这一篇是第一部分核心聚焦三件事专项项目怎么拆、登录模块怎么用Xmind把测试点铺全、交易链路和安全风控里那些最容易漏掉的验证点。1. 专项项目拆解先分清这单到底在测什么刚入行做银行测试那会儿我拿到“专项测试”需求的第一反应就是把App里所有页面从头到尾点一遍觉得覆盖率只要高问题就一定能兜住。结果项目复盘时发现功能测试时间花了一大半真正出问题的风险模块反而没覆盖到位。后来我自己总结了一条经验——专项测试和功能回归最大的区别在于目标专项一定要带着“找特定问题”的心态去拆项目而不是无脑铺用例。1.1 三类专项项目接单前先对号入座我接触过的手机银行专项项目大致可以分成三类不同类型的拆解方式完全不同。第一类是渠道专项。比如银行新推了一个手机银行App版本或者从某个旧框架整体迁移到新框架这时重点在渠道本身的能力验证。登录、主页面、账户查询、转账、理财购买这些主干业务要全部通一遍但这不等于所有角落功能都做一遍而是要验证“用户在真实场景下最高频的路径”没有断。第二类是业务专项。银行经常搞活动比如新客理财体验、扫码立减、消费抽奖这类专项的测试重心在业务规则上而不是系统功能上。举个例子活动规则写“每人限购一次”那你就得测重复购买、替他人购买、解绑再绑、换设备登录后还能不能买这类边界条件才是测试点的大头。第三类是兼容质量专项。银行App要覆盖几百种安卓机型加上iOS全系专项目标往往是“新系统适配、新机型适配、老机型回归”。这类项目最怕无脑铺真机通常要靠机型排行榜去圈定高覆盖率的Top机型和系统版本再配合模拟器做补充覆盖。类型 | 主要目标 | 测试点重心 渠道专项 | 主干功能可用性 | 登录、查询、转账、支付主链路 业务专项 | 业务规则正确性 | 活动条件、限额、次数、时间窗 兼容专项 | 设备与系统适配 | 新系统、屏幕、网络切换、后台恢复1.2 测试环境物料清单少一样后面都会卡壳银行项目的测试环境搭建比普通互联网项目复杂得多。普通App测试拿到测试包就能开跑银行项目不是这样。我最开始踩过一个大坑项目启动第一天没有申请测试账号等到真正要测转账的时候才发现手机银行绑定的银行卡是虚拟卡号必须由核心系统那边配置好联行号、开户行、卡状态才能正常走通交易。结果整个链路测试硬生生卡了一下午。所以我现在的习惯是接到专项项目的第一时间就拉一张物料清单测试App安装包而且要区分测试环境包和演示环境包两者后端地址不一样。测试账号至少覆盖不同客户等级、不同实名状态、不同绑卡状态的账号。测试卡分本行卡、他行卡、二类户挂接卡、已挂失卡各种卡状态都要有。虚拟定位工具不少银行的网点相关功能依赖GPS定位这个没有会测不了。弱网工具和抓包工具用于验证弱网提示、断网恢复、接口异常场景。白名单配置有些银行的风控系统会将测试环境手机号、设备指纹加入白名单否则会触发真实风控导致用例跑不通。这里给新入行的朋友一个提醒银行项目里“环境问题”和“产品缺陷”往往是纠缠在一起的。如果一笔转账用例失败了先别急着提单先确认是不是账号没有白名单、卡状态是不是正常、核心系统的交易开关是不是没打开。我在项目里吃过这个亏提单提得很快结果开发一查是环境配置问题最后还得自己灰溜溜地关单挺尴尬的。1.3 我的拆解惯例业务链路优先于功能模块拿到需求之后我的拆解顺序不是按“登录模块、转账模块、理财模块”这样按页面模块去切而是先画出完整的业务链路。就拿转账来说用户从登录开始到进入转账页面到输入收款人信息到选择付款卡到输入短信验证码到确认提交再到交易结果返回和回单查看这是一条完整的链路。我会把每个链路节点标记出来再去每个节点上挂测试点。这样做的好处很明显很多缺陷发生在模块与模块的交接处而不是模块内部。比如登录态在转账中途过期这类问题如果你按功能模块拆登录和转账分别设计用例根本测不出来。但按业务链路拆登录态过期这个条件天然就会出现在链路上。这个拆解习惯直接影响了我后面所有测试点梳理的质量后面几节都是在这个基础上展开的。2. 登录模块测试点用Xmind把脑洞铺成一张网登录模块是每个手机银行App打开后的第一个页面也是所有专项测试里我花时间最多的地方。为什么因为登录模块虽然看起来只有账号、密码、验证码、一个登录按钮但它背后承载的规则远比表面复杂。粗略统计一下手机银行App登录相关的测试点可以拆出60到100个从正常登录到设备更换、从手势密码到生物识别、从会话超时到并发登录每一个分支都需要单独验证。面试里经常被问到“怎么用Xmind梳理登录模块的测试点”其实就是考察你能否从零散的功能描述中抽象出结构化的测试维度。我的做法是分三个维度来铺登录方式、测试性质、会话周期。这三个维度互相交叉基本能覆盖登录模块的绝大多数场景。2.1 第一维登录方式决定一半的测试分支手机银行App的登录方式远不止“账号密码”一种。我梳理过的登录方式至少包括这些账号密码登录常规用户名登录密码。手势密码登录首次登录后会引导设置。指纹登录依赖手机硬件指纹模块。面容登录依赖前置摄像头人脸识别。短信验证码登录常见于首次激活、更换设备时使用。一键登录基于运营商网关取号。证书登录用于企业银行或大额交易的场景。无感登录/信任设备登录常见于已绑定设备的快捷登录。你会发现每一类登录方式都是独立的测试分支并且这些分支不是孤立的。比如指纹登录失败之后App是不是会自动降级到账号密码登录面容登录在暗光环境下识别失败系统有没有给出清晰的引导一键登录在飞行模式下怎么表现这些跨方式的过渡场景恰恰是用户吐槽最多的地方。2.2 第二维正常情况下、异常情况下、安全情况下三条线并排展开对每一种登录方式我都会从三条线去铺测试点。正常流程这条线关注的是功能能不能正常走通。以账号密码登录为例首次登录是否引导完善安全设置记住密码功能开不生效二次登录时默认登录方式是不是切换到上次的方式切换账号是否需要重新输入密码自动登录的时效是多久异常流程这条线关注的是给了错误输入之后系统的表现。密码错误提示是否清晰密码连续输错多少次会触发验证码连续输错多少次会锁定账号验证码发送后超时未输入是否还能用验证码最长有效期是多久手机号已停用的情况下怎么找回账号更换新手机登录旧账号需要哪些验证步骤安全流程这条线很多测试新人会漏。失败次数达到阈值后是否要同时校验图形验证码来防接口爆破登录接口是否做了短信发送频率限制取消记住密码之后本地缓存是否完全清除登录期间的网络通信是否使用了加密通道这些点不一定有产品需求文档写得很细但它们是银行App和其他App在测试要求上最大的分水岭。2.3 第三维会话周期和状态流转不能漏登录不是一个瞬间动作它有一段完整的生命周期建立会话、保持会话、会话过期、主动登出、被动登出。Xmind梳理到这里时我会单独拉一条“会话状态”的主干分支。这条分支下要覆盖的场景包括登录成功之后切到后台5分钟再切回来有没有要求重新验证如果设置了“后台运行超过60秒自动锁屏”锁屏之后要不要输手势密码账号在其他设备上登录了本机会不会被挤下线修改登录密码之后其他端已登录的会话是否全部失效夜间长时间挂机后第二天打开App是否需要重新登录交易中途会话过期交易请求能否安全地返回提示而不是报一个五颜六色的崩溃页这里有一个很难发现的坑有些银行App会在支付交易时单独校验一次登录态但校验失败后不会把用户引导回登录页而是直接返回“支付失败”。用户去查银行卡流水发现钱已经扣了但App这边提示的是支付失败。这种场景如果不放在会话周期里主动设计用例非常容易漏掉。2.4 检查漏测的小习惯把最后一个分支再往下问一句“然后呢”每次我画出完整的Xmind脑图之后不会马上去转测试用例而是先做一道自我检查把每一个叶子节点当成用户操作结束的那个瞬间然后问一句“然后呢”。登录成功然后呢跳首页。首页的接口如果挂了怎么办需要弹一个兜底提示而不是白屏。 验证码倒计时结束然后呢能不能重新发送重新发送有没有冷却时间 账号锁定然后呢锁多久是当天24点自动解锁还是必须人工客服处理锁定期限到了之后错误次数是否重新累计 登录失败然后呢失败页面上的“忘记密码”入口能不能正常跳转到找回流程这个小习惯帮助我补了很多测试点也是我在面试里带出的一个加分亮点。因为它体现了你会做测试设计而不是只会照着需求文档一条一条执行。Xmind的价值也在这里——它不只是一种画图工具更像一张记忆的外挂把脑子里的隐性逻辑铺成显性的树状结构。3. 交易链路专项重点不是“转出去”而是账怎么平转账交易是手机银行App测试里最核心、风险最高、也是最容易被测试人员“表面化”的一个模块。我刚测转账的时候重点全放在“能不能转成功”“余额够不够扣”“手续费算得对不对”这些功能表现上。后来被一个故障教育了有一笔转账在核心系统已经记账成功但App端因为网络超时没有收到结果页面展示成“处理失败”用户反复点提交结果系统里产生了多笔重复交易。从那以后我才明白交易链路的测试重心不在“转出去”这个动作上而在“账怎么平”这件事上。3.1 交易状态机画出来才知道哪里会断交易不是一个瞬时动作而是一套状态流转。以转账为例我通常会把交易状态拆成这样一条链待提交 → 待校验 → 受理中 → 处理成功 / 处理失败 → 冲正 / 挂账每个状态之间都可能断每个断点都对应一批测试用例。待提交阶段要测超时未提交、页面返回后草稿是否存在待校验阶段要测短信码错误重发、指纹校验失败后是否保留原单据受理中阶段是重点要测接口断网、进程被杀、App直接退出、手机没电关机这几种情况恢复之后这笔单据去哪里了。把状态机画出来之后你会发现“用户看到的成功”和“系统记录的成功”是两个概念。测试用例需要并存两条断言接口层的响应码是什么数据库里的交易状态字段变成了什么这两个必须一致交易才算真正通过。3.2 限额、风控、白名单交易前的隐形关卡很多测试新人容易忽略转账最终提交之前系统其实已经过了好几道隐形关卡。首先是账户余额和可用余额。可用余额和账户余额不一样后者还要扣掉冻结金额和未入账金额。测试时得准备有冻结金额的账号验证转账可用金额计算对不对。其次是限额体系。手机银行的限额通常分单笔限额、日累计限额、月累计限额不同类型交易限额还不一样。信用卡还款和普通转账可能共用日累计限额也可能分列这要看产品设计。提额操作要额外测用户主动申请提额后是实时生效还是次日生效提额之后高风险交易开关要不要重新打开然后是收款人管理。银行通常允许客户维护收款人名册转账给未维护过的收款人限额会低得多。这部分要测新增收款人、编辑收款人、删除收款人、设置常用收款人以及收款人变更之后原交易是否受影响。最后是风控规则。当转账金额接近单笔限额时风控系统会不会弹窗要求二次确认收款方是黑名单账号时系统能不能在提交前就给出拦截交易触发了反欺诈模型之后人工复核流程怎么走这些关卡全部走通之后一笔交易才算真正成功任何一个卡点都可能导致交易挂起。3.3 账务一致性校验不能只看界面有没有报错银行测试里最忌讳的就是“界面通过就等于测试通过”。我做转账专项时有一个固定动作每执行完一笔交易要去后台核心系统查这笔交易对应的流水记录核对账户借方、贷方、手续费分账、可用余额变化、交易摘要字段。界面显示成功只是前端表现核心系统的记账明细才算权威结果。举一个具体例子用A卡向B卡转账成功后A卡的账户余额减少了1000B卡的账户余额增加了1000这个很简单。但如果涉及跨行转账、或者收款方是他行卡入账时间可能是T1、甚至T2。在这笔交易处于“在途”状态时付款方的余额冻结有没有体现收款查询接口在对方行没有及时回复时App是否展示了“交易已受理结果待确认”的状态这些问题不查账根本发现不了。我在测试过程中积累了一个表格模板专门用来做账务一致性校验。每次交易用例跑完之后把界面要素和核心系统流水字段填进去做一次比对。字段包括交易时间、交易流水号、转账金额、手续费、付款方账号、收款方账号、交易状态、摘要。这套模板后来直接复制到了团队的回归测试规范里测交易链路基本不会再漏账务类问题。3.4 重复提交、超时、冲正脏场景要主动造很多测试新人只测“干净场景”也就是所有环节都正常的场景。但交易链路的脏场景才是银行测试的精华所在。重复提交是最常见的一类。用户不耐烦地连点两次“确认转账”按钮App端有没有做按钮防重重复提交的接口请求银行端有没有做幂等处理如果后端没有幂等就可能产生重复扣款。这个测试点可以说是转账模块的高频Bug点。超时和断网也需要主动造。提交转账请求之后立刻开启飞行模式会出现什么情况有些银行App会显示“提交结果未知”然后提供一个“查询交易结果”的按钮点进去能查到这笔交易在核心系统的真实状态。这才是合格的交互设计。如果App直接一屏灰色崩溃或者把未知状态展示成确定失败都是需要提缺陷的。还有冲正场景。银行的大小额支付系统之间可能出现交易超时核心系统会发起自动冲正。这个场景在测试环境里面不太好构造通常需要依赖后端模拟工具配合。一旦触发冲正App端的账单列表应该出现一条负数冲正记录同时余额要回到原本的状态。我见过不少App在冲正场景下余额展示错乱这种属于重要的需求问题。4. 安全与风控这两个专项金融App和普通App真不一样很多从互联网App转到银行项目上的测试工程师最初都会问一个问题安全测试不是有专门的安全团队做吗我们功能测试还需要关注安全吗我的回答是功能测试人员不可能替代安全团队但你如果完全不关注项目上线后的风险会非常高。手机银行APP的安全专项不是让你去挖漏洞而是让你在功能验证过程中把那些会直接影响用户资金安全的场景当成一等公民来测。4.1 客户端安全三大件防截屏、防录屏、防调试银行App的特殊之处在于它承载的是资金交易和个人敏感信息。常规App可以允许用户随意截屏分享页面银行App不行。防截屏测试要覆盖几个地方交易流水页、银行卡详情页、身份证上传页、转账确认页这些页面在开启“禁止截屏”策略之后截图是黑色或空白的。有些App的防截屏策略是动态的只在用户停留在敏感页面时生效切到其他页面自动恢复这个策略切换本身也要测。防录屏和防截屏相似。现在主流手机都有屏幕录制功能银行App在敏感页通常要检测录屏行为并禁止。视频通话核身、身份证OCR识别这些功能也不能被录屏。测试时需要在真机上打开系统录屏功能再进入相应页面看App是否弹出了禁止提示。防调试偏技术向。简单说就是银行App在发布包中会做防调试检测检测到运行环境有调试器连接时要么退出要么隐藏敏感操作。这一块功能测试可以和开发确认日志输出策略在测试环境验证核心日志是否包含卡号、手机号、身份证号这些明文敏感信息如果有就要提出整改。4.2 键盘安全、剪贴板、Toast泄露容易栽跟头的细节这几个点很细但是在银行App的安全测试里非常关键。键盘安全指的是输入密码和银行卡号时App应该使用自定义安全键盘而不是系统键盘。自定义键盘的按键排列往往是随机的每次弹出的键盘数字布局不一致这样能防止按键轨迹被记录。细心的测试一定会验证输入密码时是否出现系统键盘切到后台再切回来自定义键盘的随机布局是否重新打乱键盘截图时是否有遮挡处理。剪贴板也是一个常见信息泄露点。在浏览器或微信里复制了卡号切到银行App时系统会不会自动把剪贴板内容读取出来然后出现在输入框里正规的银行App只允许用户在输入框内手动长按粘贴而不应该自动读取。测试时要验证App是否申请了剪贴板读取权限以及复制卡号之后App是否主动清空了剪贴板内容。还有一类信息泄露来自Toast提示。比如支付失败时的报错提示不应该在页面上展示“当前余额不足3000元”这种金额信息给旁边的人看到。转账成功提示的摘要里不应完整显示对方银行卡号要做脱敏处理。这些细节虽然不影响资金安全但直接影响用户对银行的信任度。4.3 会话超时与自动锁屏看的是产品设计默契会话超时和安全息息相关。银行App为了账号安全都会在一段时间没有操作后自动登出或自动锁屏。问题在于不同模块之间的超时时间不一样有时产品文档并不会明确写。我做专项时会把所有涉及会话的页面都跑一遍总结出一张观测表App切后台1分钟、3分钟、5分钟、10分钟再切回来每个页面的表现是什么。有的App设计是切后台就立即锁屏这个最安全但用户体验差一点有的是5分钟内无操作锁屏有的是交易前单独验证。产品设计逻辑本身没有绝对的对错但“设计之间不能互相矛盾”是底线。比如App设置里允许用户选择“免密支付”但交易时又强制要求登录密码这种前后矛盾就需要提出来。4.4 风控触发和人机验证测试数据怎么准备银行App在高风险场景下会触发人机验证。最常见的触发条件是登录环境异常设备不在常用地、频繁修改密码、短时间内大量转账、绑定新设备后立即进行大额交易。人机验证的测试难点在于怎么复现风控触发条件。真实风控系统不会轻易被测试环境触发所以我通常的做法是和开发或风控负责人配合在测试环境把风控规则引擎的频率阈值临时调低例如一天内转账超过3笔就触发人机验证。然后测试用例里要覆盖触发人机验证后完成验证能不能继续交易验证超时了交易是取消还是挂起人机验证失败5次后账号会不会临时冻结这块内容往往是最能体现一个银行测试工程师经验的。因为普通功能测试根本接触不到风控规则的配置你如果在面试里能把这个过程讲清楚面试官基本能确认你是真实做过银行项目的。5. 收个尾把项目经验沉淀成面试能讲清楚的故事银行测试项目的面试是很多测试工程师最发怵的环节。原因很简单银行项目里的很多测试点网上搜不到标准答案日常工作中如果不刻意记录面试时很容易讲得零散。我在前面几节里分享的所有内容其实都可以转成面试素材。重点是讲的时候要有结构。5.1 “登录模块你怎么测”——一个不会被问倒的答题框架面试官问“登录模块你怎么测”时我最怕听到的回答是“验证正确的账号密码能登录、错误的有提示”。这种回答等于暴露了你没有测试设计的结构化思维。我建议用这套框架来答先说拆解维度我会从登录方式、正常异常安全三条线、会话周期三个维度来设计测试点。再说覆盖范围登录方式包含密码、手势、指纹、面容、短信验证码、一键登录正常流覆盖首次登录、自动登录、切换账号异常流覆盖密码错误、验证码过期、设备变更、账号锁定安全流覆盖失败次数锁定、防爆破验证码、加密传输。然后举一个容易漏的案例比如App从后台切回前台时会话过期的判定逻辑怎么测系统在什么时间点要求重新验证。最后说工具用Xmind把脑图铺开每个叶子节点再追问一句“然后呢”补上边界场景。这套回答结构有层次、有案例、有工具面试官一听就知道你有真实项目经验而不是背了测试理论。5.2 踩过的坑比功能点更值钱我参与过不少面试官的角色发现一个现象候选人讲自己做了多少测试用例真的记不住但讲自己踩过什么坑、怎么解决的反而印象深刻。银行测试项目经验要沉淀的核心其实就是坑。我在第一部分里埋了不少伏笔包括交易重复提交、会话过期后支付失败但已扣款、环境配置和产品缺陷混淆、界面状态和核心系统流水不一致这些都是在真实银行测试项目里反复出现过的问题。建议你在做项目的时候每发现一个典型缺陷就顺手记录三句话什么场景触发的为什么会出现我后续用什么方式避免它再次发生这三句话写下来就是最好的面试素材。5.3 第二部分的预告兼容性、性能、弱网这三个大模块还在前面等着这一篇聚焦在项目拆解、登录模块、交易链路、安全风控四个专项上其实还有一个很大的板块没有展开兼容性测试、性能测试和弱网专项测试。比如银行App在不同安卓机型和系统版本下的表现差异、冷启动和热启动的耗时、弱网环境下的超时兜底机制、网络切换时连接保持策略这些都是手机银行APP测试里非常吃经验的领域。后面我会用第二部分单独展开把这些模块的测试点用同样的方式做系统性梳理。还有一个小建议如果你是新手做银行测试项目时一定要养成“双轨记录”的习惯。一轨是缺陷记录另一轨是业务逻辑记录。银行App的业务规则多到让人头大你不记录做完一个项目回头就忘光了。而这两类记录也正是你后续跳槽面试时最值钱的资产。
返回列表