
做软件测试这么多年带过不少应届生也帮人改过不少简历。经常有人问我银行这种金融机构的测试岗位到底考什么和互联网大厂测开岗的笔试题差别大不大我印象比较深的是招商银行信用卡中心2018年秋招测试方向那套笔试题虽然过去几年了但它基本代表了金融类测试岗笔试的典型套路。借着拆这套题的机会把银行测试岗笔试的考点逻辑、答题思路、备考方向一次说清楚。这篇文章是写给谁看的第一类是准备投银行、金融机构测试岗的应届生第二类是想从功能测试转金融方向、想了解笔试深浅的从业者第三类是准备校招面试官角度、想设计测试笔试题的同学。内容不涉及具体真题翻拍而是把这类笔试最常见的题型、背后的考察意图、以及我当时是怎么带着候选人准备和复盘的一套方法完整梳理出来。你可以把它当成一份银行测试岗笔试通关笔记来用。1. 银行测试岗笔试题到底在考什么1.1 银行测试工程师的真实工作内容要搞明白笔试为什么这么出题先得知道银行信用卡中心测试团队每天在干什么。很多人以为银行测试就是点点页面、看看按钮能不能点实际完全不是。信用卡中心一般会有这样几条测试线一是核心账务系统负责额度计算、入账、还款冲销、利息计算这些是银行的心脏数据不容错一分钱二是外围渠道系统包括手机银行APP、微信公众号、小程序、网上银行三是接口联调和数据迁移测试尤其在系统升级、新旧系统切换时需要大量核对数据一致性。在这些系统上做测试和互联网公司测一个C端产品差异很大。互联网产品出bug可能影响用户体验最多灰度回滚银行系统出bug涉及的是资金安全、监管合规、客户投诉甚至被监管处罚。所以银行测试岗的核心素质要求就两个字严谨。这种严谨体现在对业务规则的理解、对异常场景的穷举、对数据的敏感性上。笔试出题人心里是有一套人物画像的他要招的人不需要你上来就能做性能测试、安全测试专项但要具备扎实的测试基础理论、清晰的分析思路、过硬的SQL和Linux基本功、基本的编程能力以及对金融业务的理解意愿。你可以没有金融背景但不能没有逻辑。1.2 金融测试笔试的四个命题逻辑我拆了这几年银行系包括招行信用卡中心、其他股份行、城商行的测试笔试题发现命题逻辑非常稳定基本围绕四个层面。第一层面是测试基础理论。黑盒白盒、测试流程、用例设计方法、缺陷生命周期这些是必考的。这部分是筛选门槛刷掉完全没学过测试的人。第二层面是技术基本功。包括SQL编写、Linux命令、简单的编程题手写代码或读代码写结果。银行测试人员日常工作中查数据靠SQL看日志靠Linux写自动化脚本靠代码这三样是核心生产力工具。笔试会单独拉出来考而且分值不低。第三层面是测试设计能力。给你一个具体功能或场景让你写测试用例或者问你这个功能你会怎么测。这考的不是背诵而是你在实际工作中能不能系统性地考虑问题。第四层面是业务理解。银行笔试经常出现信用卡相关术语或场景比如账单日、还款日、最低还款额、全额罚息、积分规则。不需要你很深入但基本概念要知道因为测试用例设计离不开业务规则。对比互联网测开岗的笔试题互联网更喜欢考算法题、框架源码、性能压测方案而银行笔试更偏向确定性知识和规范性操作说白了银行要的是稳不是炫。你不能说这个特性我用AI生成十个用例——那时候还没有AI答题但即便现在银行也依然看重逻辑链路的严谨性。2. 测试理论高频考点与答题思路2.1 冒烟、回归、探索性测试怎么区分测试理论部分出现频率最高的几个概念是冒烟测试、回归测试、探索性测试、测试计划与测试用例的关系、缺陷的优先级和严重级别。这些概念如果只背定义很容易在笔试里翻车因为它会给你一个实际场景让你判断这属于什么测试。举个典型的例子在信用卡APP发版前开发提测一个包含登录、首页、支付三个主流程的版本测试人员先用一个简短用例集验证主流程是否通畅这个过程属于什么测试答案是冒烟测试也叫冒烟验证。它的核心目的不是发现深层次bug而是判断这个版本值不值得进入正式测试。如果主流程直接挂了那测试团队没必要花时间做详细测试直接打回提测。这个概念理解到关口把控这个层面才算真懂。再回来说回归测试。我在指导候选人时经常用一个类比回归测试就像你装修完房子之后检查水电是不是还能正常用。每修好一个bug或者每加一个新功能你都要确认它没有把别的地方弄坏。信用卡系统的回归特别典型比如修改了还款流程那么账单查询、额度恢复、短信通知这些关联模块都要回测一遍因为它们共享同一套账务数据。探索性测试则是另一个维度。它不强调预先写好的用例而是强调测试人员在执行过程中结合经验、直觉、对业务的理解顺藤摸瓜地发现设计用例时没想到的问题。笔试里如果问你回归测试和探索性测试能互相替代吗一定要答不能。一个用于保障稳定一个用于挖掘盲区两者是配合关系不是替代关系。2.2 用例设计题的一题多得答法用例设计题是笔试的大头分值高也最能拉开差距。银行系统常见的题目有设计信用卡登录功能的测试用例设计还款功能的测试用例设计转账功能的测试用例。很多人一上来就写账号正确密码正确能登录账号错误提示错误这种答案只能拿到最基础的同情分。我建议的答法是分层展开每个层面都能体现你的测试思维。先看功能层面。除了正常的成功路径要穷举异常账号不存在、密码错误、密码连续错误多次触发锁定银行系统基本都有这个机制、账号被冻结、验证码过期、验证码错误、网络超时。再看界面与交互层面。输入框长度限制、是否支持特殊字符、密码是否密文显示、键盘弹出与收回、文案是否清晰、loading状态、按钮防重复提交银行支付类按钮尤其关键防重是必备。然后是安全层面。银行系统对安全的重视程度远超普通互联网产品。接口是否加密、登录态是否失效处理、抓包是否能看到明文密码、是否防止暴力破解、连续失败是否锁定。最后是兼容和异常恢复层面。不同手机型号、不同操作系统版本、弱网环境、断网重连、应用切后台再回来、进程被杀后重启这些都要覆盖。我见过最好的一个候选人答案她给每个用例都加了前置条件操作步骤预期结果优先级四列而且单独写了一个异常与数据构造小节说明登录失败后的错误计数是存在服务端还是客户端、锁定时长是多少、是否需要人工解锁。你看这就不是背模板而是真的理解银行测试要关心什么。笔试答题要尽量向这个方向靠。3. 数据库、Linux与手写代码题的备考笔记3.1 数据库题送分题与陷阱题银行测试笔试的SQL题难度基本在中等到中等偏下不会考复杂存储过程、游标这类写业务代码才用的东西。它考的是日常测试中必须熟练掌握的基础能力。最常见的几类查询、排序、分组聚合、多表连接、子查询、去重。比如很典型的有一张消费流水表trans_record字段包括卡号card_no、消费金额amount、消费时间trans_time请查询消费金额最高的前10笔交易。 这题考ORDER BY和LIMIT的写法是标准的送分题但要注意如果要求每个卡号消费金额最高的前5笔就得多一步窗口函数ROW_NUMBER() OVER(PARTITION BY ...)这个很多非科班出身的测试会卡壳。真正让多数人丢分的是看似会、实则错的细节。比如 WHERE 和 HAVING 的区别GROUP BY 之后 SELECT 中能带哪些字段NULL 值的处理用 IS NULL 而不是 NULLLIKE 查询的性能。再比如考察去重时DISTINCT 对多个字段的组合去重结果是什么很多人想当然。另一个高频考点是关联查询的结果集大小比如一张客户表和一张卡片表一个客户可以有多张卡让你用 INNER JOIN 查询有卡的客户信息并要求注意重复行的问题。如果没做去重一个客户两张卡就会出两行记录这在做数据核对、测试断言的时候是致命伤。笔试出这道题本质上是在提醒你银行系统里一对多关系很常见写断言前先想清楚结果集。我当时给候选人的建议是把常用SQL语法练到闭着眼睛能写对的程度不要到笔试现场边想边写。你不仅要知道怎么写还要知道为什么这么写。因为银行测试的实际工作里SQL写错了比不写更危险——你可能会基于错误数据得出测试通过的结论。3.2 Linux命令从用过到能写对Linux命令在银行测试笔试里考的不是你知道哪些命令而是给你一个场景你会怎么组合命令。常见的场景有查看Tomcat进程是否存在、查看某个端口是否被监听、实时跟踪日志文件、在日志里按关键词过滤、统计日志里某个错误出现的次数。以查日志为例。一个高频题是日志文件server.log持续写入需要实时查看最新内容并过滤出包含ERROR的行。 答案是 tail -f server.log | grep ERROR。简单但很多人只知道 tail 不知道 -f只知道 grep 不知道管道符组合。还有一类题我特别建议准备一下就是统计类命令。统计日志文件中包含支付超时这个关键词的行数用 grep -c统计每个IP出现的次数并按从大到小排序用 awk {print $1} access.log | sort | uniq -c | sort -rn。这类题考的是你有没有真正靠命令解决问题的经验而不是背了几个命令。踩过的坑提醒一下银行笔试环境有时候是给你一台远程Linux服务器让你写命令执行有时候只是纸上写命令或选择。不管哪种形式写完命令之后一定要自己检验一遍。我见过很多候选人把 grep 和 find 混用把 kill -9 当成万能重启命令。kill -9 在日常测试服务器上确实能解决80%的问题但如果你在笔试题里写进程卡住了用kill -9杀掉考官会认为你缺乏对进程正常退出和强制杀掉的辨析。更妥帖的答案是先查PID、看进程状态、用kill正常终止处理不了再kill -9而且重启后要确认服务成功恢复。3.3 手写编程题考的是规范和边界思维银行测试笔试的编程题和互联网大厂动不动就手写红黑树实现LRU缓存完全不同。它更贴近实际工作也更能看出一个测试的基本代码素养。常见题型大概这几类一是字符串处理比如反转字符串、判断回文、统计字符串中每个字符出现的次数二是数组处理去重、排序、找最大值三是简单逻辑题比如判断闰年、计算两个日期之间的天数这个银行很爱考因为信用卡涉及利息和账期、生成指定格式的账单编号。这类题目难度不高但陷阱在细节。举个例子判断一个字符串是否是回文字符串听起来很简单但如果你用Python写要处理空字符串、只有一位字符的字符串、含有空格和标点的字符串、大小写是否忽略、Unicode字符比如中文怎么处理。你在笔试里把这些边界条件写清楚比主逻辑写得飞快有用得多。我在指导候选人做这类题时反复强调代码的第一读者不是机器是考官。你写的代码要变量命名清晰、有缩进、有核心注释、有边界检查。如果题目要求输入输出一定要写完整的输入读取和输出打印不要只写一个函数体就算完。还有一点能跑通就别只写伪代码。虽然有的笔试允许伪代码但如果你能写出可运行的代码分数完全不一样。我见过一个候选人笔试编程题要求统计一笔金额的利息保留两位小数。他用Java写了基本逻辑没问题但在金额计算上用double直接做加减乘除。这样写面试官一看就知道你缺乏金融系统编程的基本常识。银行系统涉及金额计算必须用BigDecimal或者至少在代码里说明绕开double的精确性问题。你看这不光是编程题还隐含考察你有没有金融场景敏感度。4. 接口测试与自动化测试的笔试姿势4.1 接口基础HTTP状态码、GET/POST这些必考点银行系统现在几乎都是接口化、微服务化的。信用卡APP里看到的一个额度查询按钮背后可能经过网关、风控、账务、额度中心四五个服务的调用。所以测试岗位笔试一定会有接口相关题目。最基础的是HTTP协议的理解。比如GET和POST的区别这题烂大街但银行笔试会换一个问法查询信用卡账单明细和提交还款请求分别适合用哪种HTTP方法为什么答题要点是查询是幂等操作、参数会暴露在URL上、有长度限制所以选GET提交还款会改变服务端状态、涉及敏感信息传输所以选POST。一口气把语义、安全、状态三个角度都答上分数就拿满了。再比如HTTP状态码。你说200代表成功404代表资源不存在这是入门级。银行笔试爱考的是你拿到一个接口返回结果时怎么判断是一次真正的业务成功还是只是网络层的成功。你打开浏览器返回200不代表业务成功可能只是登录页面加载成功。测试接口时要看业务响应码、响应消息体内容、关键业务字段值而不是只看HTTP状态码。很多测试新手只断言HTTP 200就完事这在银行测试里是不够的。还有一类接口题是让你设计接口测试用例。这时候不要只写正常传参返回成功、异常传参返回错误提示要按分层来 参数校验必填、类型、长度、枚举值、鉴权校验token缺失、过期、伪造、业务规则校验额度不足、卡状态异常、异常与容错下游服务超时、数据库异常、重复请求。如果你能把重复请求提交还款这个场景写进用例里说明你已经意识到银行系统风控的重要性了。同一笔还款请求重复提交必须在接口层做幂等控制否则可能给用户重复扣款这是严重的生产事故场景。4.2 自动化框架被问到Selenium/Appium怎么答自动化测试相关的题银行笔试不会一上来就问深框架源码但很有可能会问你了解哪些自动化测试工具和框架它们各自适合什么场景或者给你一个具体场景让你选型。Selenium是最常见的Web UI自动化框架适合浏览器端的回归测试。Appium是移动端自动化工具支持iOS和Android适合手机银行APP的自动化。JMeter适合接口测试和性能测试。pytest是Python生态里非常流行的测试框架适合做接口自动化用例的组织、断言、数据驱动、报告输出。如果你还了解Java生态的TestNG、RestAssured或者企业里常搭的Java接口自动化测试框架比如HttpClient TestNG Allure可以提一嘴会加分。但我要提醒一句答题的关键不是背功能列表而是能说出选型依据。比如问APP端核心回归用Appium还是Selenium你要说清楚APP端用Appium因为它支持真机和模拟器、能处理原生控件、支持跨平台Web端才用Selenium。再比如接口自动化用JMeter还是代码框架你要说JMeter上手快但复杂断言和自定义逻辑弱代码框架pytest/RestAssured更灵活适合和CI/CD集成。还有一个高频问法是结合银行业务谈自动化实施的困难点。这个我建议所有候选人提前准备。银行系统的UI自动化最大难题是控件识别不稳定尤其H5页面、数据构造复杂比如测试环境要造一张有额度的卡、一个有积分的账户、以及环境依赖下游系统不稳定导致用例失败。这时候如果只答工具用法显得格局小了如果你能说出自动化用例的稳定率比覆盖率更重要宁可用例少而稳不要多而脆考官会觉得你有实战思考。另外现在pytest测试框架特别流行银行笔试偶尔会问pytest里fixture、参数化、conftest.py这些基本概念。比如问pytest中fixture的作用是什么你不能只答初始化环境要提到它有setup和teardown的能力、可以按作用域控制生命周期function/module/session、可以通过conftest.py实现跨文件复用、还能结合yield做后置清理。能答到这个深度说明你真用过而不是只看了个标题。5. 金融业务题拉开分差的关键5.1 信用卡业务基础概念测试前必须掌握银行测试笔试和普通软件测试笔试最大的区别就在于业务题。业务题不是考察你懂不懂金融而是考察你在测试一个金融系统时能不能理解业务规则背后的逻辑。这里列几个信用卡领域最高频的概念笔试前必须弄明白账单日是银行每月给你出账单的日期还款日是最后还款期限免息期是消费日后到还款日之间的免息时间一般在20到50天左右长短取决于消费日、账单日和还款日的相对关系最低还款额一般是当期账单金额的一定比例常见10%加上利息费用等选择最低还款后剩余部分要计息且不再享受免息期全额罚息是信用卡行业曾经的一个规则只要没有全额还款整个账单期间的消费都会计息而不是只计剩余部分。现在很多银行已改了计息方式但作为测试用例设计场景这个历史知识仍然有用。再比如分期业务。分期手续费的计算方式、提前还款是否收剩余手续费、分期后额度如何恢复、分期是否占用卡片总授信额度这些都在测试范围内。还有积分积分的累积规则哪些消费不计积分、积分有效期、积分抵扣规则。我为什么说业务题能拉开分差因为它是完全可以提前准备的但很多人根本不重视。同样两个候选人技术水平差不多一个能清楚说出还款入账成功后额度恢复是即时生效还是T1生效、这个时点差异测试用例怎么设计另一个一听账单日免息期就懵面试官优先要谁很明显。5.2 业务场景测试题常见题型和回答框架业务场景测试题通常长这样以我印象里某次在候选人模拟中用过的一道题为例非常典型用户在还款日当天通过APP手动还款还款成功但系统提示还款失败请描述你的排查思路。这种题没有标准答案但回答的框架感很重要。我建议分四步答。第一步先确认现象。提示还款失败是在哪个环节出现的是APP提示还是银行发来的短信提示用户端的提示有时和服务端实际状态不一致这是测试人员必须敏感的。第二步查数据流。从用户操作出发依次排查APP请求有没有发出去、接口网关日志有没有记录、账务系统有没有收到指令、还款交易是否入账、额度是否恢复、账单状态是否变更。第三步查数据一致性。这是银行系统的核心场景。要核对账户余额、卡片可用额度、账单欠款金额、交易流水、通知记录五张表的数据是否一致。如果还款交易已入账但额度未恢复可能是额度恢复的异步任务还没跑或者跑了但失败了。第四步定位原因并判断影响面。是数据同步时序问题是接口超时导致前端误报还是渠道和核心系统状态不一致影响范围是单笔还是批量这类问题的排查思路其实就是在考察你做测试时有没有端到端贯通的视角。如果笔试里要求你写这个过程建议用分点列步骤的方式每一步说清楚做什么操作、想看什么数据、数据出现什么结果说明是什么原因。你能把这个结构写清楚即使原因猜得不够准确面试官也会认可你的排查思路。6. 备考路线与常见误区6.1 三个月冲刺路线从理论到专项的节奏准备银行测试方向的秋招笔试我建议按三个月来规划太短容易焦虑太长容易疲劳。第一个月打地基。系统过一遍软件测试基础理论测试流程、用例设计方法、缺陷管理、SQL基础语法重点练多表查询和分组聚合、Linux常用命令文件操作、日志查看、进程管理、权限管理。这个阶段不求快但要稳每学一个知识点就自己做一遍练习。SQL和Linux是笔试的硬通货没有速成捷径就是反复练。第二个月提专项。开始刷接口测试和自动化测试的知识点。如果你有精力装一个Selenium或Appium环境写一个最简单的自动化脚本跑通。不一定要很复杂但跑通过和只在书上看过在面试的时候聊出来的效果完全不同。同时开始积累信用卡业务术语把账单日、还款日、最低还款、分期、积分、额度这些概念搞透。第三个月刷题与模拟。重点做历年银行测试笔试真题网上能找到部分回忆版每道题不只是做对还要复盘答题思路。给自己卡时间做模拟两个小时的卷子一个半小时做完留半小时检查。另外把常见面试题也过一遍因为笔试通过后紧接着就是面试你笔试里写过的用例设计、SQL语句面试官很可能再追问。6.2 笔试现场的时间分配与答题技巧银行测试方向的笔试题量和难度普遍比互联网温和但也别掉以轻心。我的经验是先做有把握的题再做需要思考的题最后做纯蒙的题。笔试的时间有限一道SQL题卡了20分钟不如先跳过把用例设计题这种写了就有分的题拿稳。选择题要注意负向选择题比如以下哪个不是测试用例设计的常用方法。这种题最坑人因为你在复习时往往只记方法名称没记它的分类归属。做题时把选项里的每个词都读清楚尤其是不是不正确不包括这类否定词圈出来再选。SQL题和编程题写之前建议先在草稿纸上把表结构和字段名列出来确认你要查哪几张表、用什么关联条件、输出哪些字段。特别是多表连接逻辑错了写得再流畅都是零分。写完后用一组简单数据在心里跑一遍验证一下结果是否符合预期。最后不要把试卷留白。拿不准的题至少写上思路哪怕写我理解的思路是先A后B原因是C。考官看笔试时除了看答案对不对也在看你的思维过程一片空白等于放弃得分。6.3 最典型的四个备考误区准备银行测试笔试时有四个误区我见了太多人踩这里集中提醒。误区一只刷题不理解原理。比如用例设计题把等价类划分、边界值分析的模板背得滚瓜烂熟但一遇到额度不足时提示用户这种具体场景就不知道怎么归类。建议每刷一道题想一想这道题在真实测试场景里对应什么情况把抽象方法和具体业务连接起来。误区二忽视SQL手写能力。很多人在本地用Navicat、DataGrip这些工具写SQL自动补全和格式化都帮你做了一到笔试手写就露馅。表名、字段名拼错缩进混乱逻辑不清。备考阶段建议大家找一个在线的SQL练习平台用手敲不要靠工具补全。误区三笔试时不写边界条件。不管是用例设计还是编程题边界条件是最容易得分也最容易丢分的地方。空值、超长输入、并发请求、断网重试、金额为0、重复提交——这些场景在银行测试中非常常见。你写用例时如果没有边界条件那一块考官会默认你经验不足。误区四对银行业务完全不准备。你投的是银行的测试岗却连账单日和还款日的关系都说不清这道题一出来你前面答得再好也会打折扣。不用懂多深把最核心的信用卡业务概念过一遍至少别在这些送分题上丢分。写在最后我对银行测试岗笔试最大的感受是它考的东西并不偏也不难但每道题都在默默筛选靠谱的人。你不需要是天才不需要三年经验但你需要让考官相信——你懂测试的基本方法论你会用工具解决实际问题你理解金融系统对严谨性的极致要求你愿意提前做功课。如果你正在准备这个方向不用焦虑题量有多大、竞争者有多强。把测试理论打牢把SQL和Linux练到形成肌肉记忆把信用卡业务的核心概念过一遍再认认真真做几套真题模拟你会发现自己比想象中更有竞争力。毕竟笔试只是第一关你真正要展示的不是我会做题而是我值得被信任。这套逻辑放在任何行业的测试岗都成立。