十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

测试岗笔试核心考点与备考策略全解析

测试岗笔试核心考点与备考策略全解析 1. 测试岗笔试到底在考什么先聊点实在的。很多人一听到“测试岗笔试”第一反应是“不就是点点点吗随便写写就行”结果一到考场就傻眼了。2017年那会儿的秋招笔试题目已经非常成体系了不是随便刷两道题就能蒙混过关的。尤其是滴滴这种体量的公司测试岗笔试的覆盖面相当广既考计算机基础又考测试理论还考逻辑思维和场景分析能力。我身边不少朋友当年都投了测试岗有人觉得测试是技术岗里的“保底选择”结果笔试挂得比开发还惨。为什么因为测试岗笔试考的往往不是“你会不会写代码”而是“你有没有测试思维”。这个区别太关键了。开发笔试考的是“把功能做出来”测试笔试考的是“把一个已经做出来的功能找出问题”这完全是两种思维模式。那测试岗笔试到底考什么我根据自己的经验结合当年那批真题的回忆和整理大致可以把考点分成这么几类计算机基础知识数据结构、操作系统、网络协议、数据库这些是硬底子逃不掉的。测试理论与方法论等价类划分、边界值分析、因果图、场景法、正交实验法这些是测试岗的“看家本领”。逻辑推理与场景分析给你一个具体功能让你设计测试用例或者给你一个线上问题让你排查根因。编程题有的公司会考有的不考但一旦考了基本是LeetCode简单到中等难度。智商题/行测题图形推理、数字规律、文字逻辑这部分主要筛人用的。滴滴当年的笔试整体风格偏实际很多题目都围绕出行场景展开比如订单分配、司机乘客匹配、费用计算这类。这就非常考验你能不能把测试思维落到具体业务里。2. 计算机基础考点拆解这些分不能丢2.1 数据结构与算法高频考点很集中测试岗笔试里数据结构考得不像开发那么深但基础知识点是必考的。我当年遇到的题目大致集中在这么几个方向栈和队列基本是必考的。栈的“先进后出”和队列的“先进先出”这个不用多说。但笔试不会直接问你定义而是给你一个场景比如“用两个栈实现一个队列”或者“判断括号是否匹配”。这类题目的核心是理解数据结构的特性而不是死记硬背。链表也是高频考点。单链表反转、判断链表是否有环、找链表中点这几道题几乎年年出现。我印象很深的是有一道题考了“如何判断两个链表是否相交”这道题如果没准备过现场想是比较费劲的。常见的解法是把两个链表分别走到尾看尾节点是否相同或者用双指针法。二叉树考得也不少。二叉树的遍历前序、中序、后序、层序是基本功但笔试题目往往会变着花样考比如“根据前序和中序重建二叉树”、“求二叉树的最大深度”。这些题目本质上考察的是递归思维你能把递归写明白这类题基本就稳了。排序算法这边重点不是让你手写快排而是考察复杂度和稳定性。比如“快速排序在最坏情况下的时间复杂度是多少”、“稳定排序有哪些”。这些概念性的东西必须记清楚。我建议你把常见的几种排序算法冒泡、选择、插入、快排、归并、堆排的时间复杂度、空间复杂度、稳定性整理成一张表考前过一遍效率很高。2.2 操作系统进程线程和死锁是重头戏操作系统在测试岗笔试里考得不算深但进程与线程的区别、死锁的产生条件、进程调度算法这几块几乎是必考的。进程和线程的区别是送分题但很多人答不完整。核心要点是进程是资源分配的基本单位线程是CPU调度的基本单位同一进程下的线程共享地址空间而进程之间地址空间相互独立进程切换的开销比线程切换大。最好再补一句线程是进程的一部分一个进程至少有一个线程。死锁的四个必要条件互斥、持有并等待、不可剥夺、循环等待这个必须背下来而且要会分析。题目通常会给你一个场景问你“以下哪个措施可以避免死锁”你就要能对应到“破坏四个条件中的哪一个”。进程调度算法这边先来先服务、短作业优先、时间片轮转、优先级调度这几个要能说出各自的优缺点和适用场景。比如时间片轮转适合分时系统因为它能保证响应时间短作业优先的平均等待时间最短但可能造成长作业饥饿。2.3 网络协议TCP三次握手和HTTP状态码网络协议这块TCP三次握手和四次挥手是必考题。你不仅要会画流程图还要能解释清楚为什么是三次而不是两次、为什么是四次而不是三次。核心原因三次握手是为了防止失效的连接请求报文段突然又传到服务端导致资源浪费四次挥手是因为TCP是全双工的双方都需要单独关闭各自的连接。HTTP状态码也是高频考点。200 OK、301/302重定向、400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found、500 Internal Server Error、502 Bad Gateway、503 Service Unavailable这些必须看到就能说出含义。我有一个小技巧把状态码按“1xx信息、2xx成功、3xx重定向、4xx客户端错误、5xx服务端错误”去记先记大类再记具体不容易乱。TCP和UDP的区别就不用多说了但我建议你多准备一个维度TCP是面向连接的、可靠的、基于字节流的UDP是无连接的、不可靠的、基于数据报的。笔试题目往往是给一个应用场景问你该用TCP还是UDP比如视频通话用UDP、文件传输用TCP你要能说清楚为什么。2.4 数据库SQL语法和索引原理数据库这块SQL的基本增删改查是必须会的。但测试岗笔试一般不会考特别复杂的SQL重点往往在查询尤其是多表联查、分组统计、排序这些。给你两张表让你查某个条件下的数据这种题目要熟练。索引原理这块如果你有精力一定要把B树索引理解一下。为什么MySQL的InnoDB用B树而不是B树或者哈希索引核心原因B树的数据都存储在叶子节点且叶子节点之间有指针相连非常适合范围查询和顺序遍历而哈希索引虽然单条查询很快但不支持范围查询。笔试或者面试问到索引这块你能说出这一层就已经超过不少人了。我还想多提醒一句事务的ACID特性原子性、一致性、隔离性、持久性也是高频考点尤其是隔离级别这一块读未提交、读已提交、可重复读、串行化四级隔离级别对应解决什么问题弄清楚了基本够用。3. 测试理论与用例设计真正的分水岭3.1 等价类划分和边界值分析如果让我说测试岗笔试和开发岗笔试最大的区别在哪里那就是测试理论和用例设计。这一块是测试岗的“专业护城河”也是笔试中分值占比最高的部分之一。等价类划分的核心思想是把输入域划分成若干个子集每个子集中的数据对揭露程序中的错误是等价的所以只需要从每个子集中取一个代表值进行测试即可。这个概念听起来抽象但实际用起来很简单。比如一个输入框要求输入1到100之间的整数那么有效等价类就是1到100的整数无效等价类就包括小于1的整数、大于100的整数、非整数小数、字符、特殊符号、空值等等。边界值分析是等价类划分的补充因为实践证明程序最容易在边界处出错。还是上面那个1到100的输入框边界值分析要求你重点测试0、1、2、99、100、101这几个值。注意边界值不仅包括上点和下点还包括离点。对于闭区间[1, 100]上点就是1和100离点就是0和101。这个细节很多人会漏但笔试里往往专门挖这个坑。我当时准备这部分的时候自己整理了一个万能模板拿到一个输入条件先写有效等价类和无效等价类再分别对每个等价类取边界值。这样一套组合拳下来用例设计的覆盖率会高很多。3.2 场景法滴滴笔试的最爱场景法是我觉得最有意思、也最贴合实际工作的一种测试用例设计方法。它的核心思想是从用户的角度出发模拟用户操作系统的场景覆盖从“基本流”到“备选流”的各种路径。为什么说场景法是滴滴笔试的最爱因为出行场景太适合用场景法来设计了。我印象中有一道题大意是用户从叫车到下车付费中间涉及发单、接单、到达上车点、开始行程、结束行程、支付这几个关键节点。让你设计测试用例。这种题如果你脑子一热就开写很容易写成流水账。正确思路是先把基本流梳理出来用户下单 → 系统派单 → 司机接单 → 司机到达 → 用户上车 → 行程开始 → 行程结束 → 支付完成。然后考虑每个节点的备选流用户下单后无司机接单怎么办司机接单后取消怎么办司机到达后用户未出现怎么办行程中司机或用户取消怎么办支付失败怎么办这样一拆用例的层次就出来了阅卷人一眼就能看出你有测试思维。我建议你在笔试中遇到“设计测试用例”这类题不管题目是什么都先画基本流再逐层展开备选流和异常流最后再补上边界和特殊场景这个答题框架能帮你拿到大部分分数。3.3 因果图和判定表因果图法主要用于输入条件比较多、而且输入之间有相互制约关系的场景。它的核心是分析输入条件之间的组合关系然后推导出对应的输出结果。笔试中纯粹让你画因果图的题不算多但用因果图的思路来分析问题的题不少。我当时学这个的时候感觉很绕后来老师给了一个简化思路先找出所有的输入条件再找出所有的输出结果然后逐一分析“哪些输入组合会导致哪个输出”把这种对应关系列成一张判定表因果图的价值就体现出来了。举个例子还是拿滴滴的业务来说一个订单可以使用的优惠券可能受这些条件限制新用户、订单金额满X元、当前时段是否可用、是否有指定车型限制。这四个条件的组合会决定“这张券能不能用”。笔试如果出这类题你直接用判定表列出来条件、动作、规则一一对应得分效率非常高。3.4 测试用例设计题的高分答题模板我根据自己的备考经验总结了一套在笔试和面试中都能用的测试用例答题模板分享给大家拿到一个功能点不要急着写用例先按这个顺序走一遍确认功能的基本流程正常流程输入 → 处理 → 输出。对每个输入条件做等价类划分和边界值分析。梳理可能存在的异常流输入异常、中断、超时、并发、权限不足等。从用户角度补充场景误操作、连续操作、弱网环境等。考虑数据层面数据量过大、数据格式错误、数据为空等。这五步走完之后你再动手写用例思路会清晰很多。我见过很多人写测试用例写了十几条都是重复覆盖同一个逻辑却漏掉了最基本的边界情况就是因为在动笔之前缺了这个分析过程。4. 逻辑题和场景分析题用测试思维解决实际问题4.1 逻辑推理题读题别跳坑逻辑推理题在测试岗笔试里出现频率很高它主要考察的是你的思维严谨性而思维严谨性恰恰是测试工程师最核心的素质之一。我在考场上遇到比较多的是数字规律题、图形推理题和文字逻辑题。这类题的解题技巧其实和测试用例设计的思路很像先找规律再验证边界。比如数字规律题你先看相邻数字的差、比值、平方关系找到规律之后不要急着选答案先拿后面几个数验证一下确认规律能覆盖所有给出的项再选。这个步骤就像测试中的“回归验证”能帮你避免被出题人设置的“伪规律”误导。文字逻辑题这边最常见的两种题型是“削弱/加强”和“真假话”。削弱/加强题的核心是找出论点和论据然后判断选项是否直接影响论点真假话问题的核心是找矛盾关系矛盾关系必有一真一假以此为突破口来推。4.2 场景分析题像排查线上问题一样答题场景分析题是滴滴笔试中区分度很高的一类题。题目通常会给你一个线上故障的描述让你分析可能的原因。这类题考察的不只是知识点更是你是否具备测试工程师的排查思路。我印象很深的一道题大意是某个用户在高峰时段打车APP显示“附近无可用车辆”但用户截图显示地图上明明有车。问可能的原因有哪些。这种题如果你只答“系统出bug了”那就基本告别这一题了。正确的答题方式是结构化地列出可能原因并且按层次区分客户端层定位权限被关闭、定位不准、地图组件加载异常、缓存数据过期。网络层弱网导致请求失败、请求超时、数据包丢失。服务端层派单逻辑判断错误、车辆状态数据未更新、距离计算逻辑异常、数据库查询超时。数据层车辆位置数据未实时上报、筛选条件过滤掉了附近的车辆。你看这样一答阅卷人就会觉得你脑子里有一张完整的系统架构图而不是在那里瞎猜。我在面试中也用过这个思路效果很好。4.3 给出一个功能如何设计测试用例笔试中还有一种题占比很高给你一个功能点让你设计完整的测试用例考察的是系统性的测试设计能力。这里面最忌讳的是“想到哪写到哪”。我建议你一定要遵循一个固定的结构功能测试正确流程 异常流程、界面测试UI显示、交互反馈、兼容性测试不同机型、不同系统版本、性能测试响应时间、并发量、安全测试越权访问、数据加密、SQL注入、弱网和中断测试断网、来电、锁屏。我举一个实际的例子。假设题目是“为一个登录功能设计测试用例”我的答题框架大致如下功能方面正确的用户名密码登录、正确的用户名错误密码登录、不存在的用户名登录、空用户名、空密码、包含空格和特殊字符的用户名密码。界面方面密码框输入时是否掩码显示、错误提示的文案是否准确、登录按钮在未输入信息时是否置灰。兼容性不同主流浏览器的表现、不同分辨率下的布局、iOS和Android的差异。性能大量用户同时登录时是否正常、登录请求的响应时间是否在合理范围内。安全密码传输是否加密、是否可以SQL注入、频繁登录失败是否有锁定机制、是否存在越权访问用A的session访问B的数据。这个框架一旦形成你遇到任何“设计测试用例”的题往里套就行既不会漏项也显得有条理。5. 编程题与手写代码测试岗也躲不掉5.1 高频编程题类型2017年那会儿不少公司的测试岗笔试已经开始加入编程题了滴滴也不例外。虽说编程题的分值占比不如开发岗高但如果你想进大厂编程这关是躲不掉的。测试岗的编程题难度整体低于开发岗主要集中在LeetCode的简单到中等难度。最常见的几类字符串操作字符串反转、判断回文串、统计字符出现次数、去除重复字符。这类题考察的是基础API的熟练程度。数组操作数组去重、求最大最小值、求连续子数组的最大和、两数之和。两数之和几乎是所有笔试的“亲儿子”一定要滚瓜烂熟。链表操作反转链表、合并两个有序链表、删除倒数第N个节点。简单算法二分查找、斐波那契数列、冒泡排序、快速排序。我自己的备考经验是LeetCode刷前80道热门题基本就能覆盖测试岗笔试的编程题范围。不需要刷特别难的题但简单题一定要做到“闭着眼能写出来”的程度因为在笔试的紧张环境下手抖写错一个细节就没了。5.2 阅读代码找bug除了手写代码测试岗笔试还有一种特色题型给你一段代码让你找出其中的bug。这种题其实考察的是代码审查Code Review能力是测试工程师日常工作中非常重要的技能。我拿到这类题的习惯是先看整体逻辑再看边界条件。整体逻辑就是代码的流程是否清晰有没有明显的逻辑错误边界条件就是循环的起点终点、数组的越界风险、空值判断是否缺失。举一个小例子伪代码如下def calculate_total(prices): total 0 for i in range(1, len(prices)): total prices[i] return total你能看出问题吗循环从1开始意味着prices[0]被跳过了这在大多数场景下是bug。这就是典型的边界条件问题。这种题刷多了之后你会练出一种“肌肉记忆”看到for循环先看起点和终点看到数组先看索引是否可能越界看到除法先考虑除数为零的情况。5.3 Linux命令和数据库SQL测试岗笔试还会经常考Linux命令和SQL。Linux这块高频的包括查看进程ps -ef、ps aux查看端口占用netstat -tlnp、lsof -i:端口查看日志tail -f、grep、sed、awk文件操作chmod、chown、cp、mv、rm查看系统资源top、free、df、duSQL这块考得比较多的-- 查询表中重复数据 SELECT name, COUNT(*) FROM users GROUP BY name HAVING COUNT(*) 1; -- 多表联查 SELECT u.name, o.order_no FROM users u INNER JOIN orders o ON u.id o.user_id; -- 查询第N高的记录 SELECT DISTINCT salary FROM employee ORDER BY salary DESC LIMIT 1 OFFSET 1;这些都是测试工程师日常工作中高频用到的命令和SQL笔试考它们其实是在变相考察“你有没有实际工作能力”而不是纯粹考理论。6. 备考路线与实用技巧这些坑我替你踩过了6.1 基础薄弱的同学先抓住这三大块如果你现在离笔试还有一段时间但基础比较薄弱我给你的建议是不要眉毛胡子一把抓先把下面三大块啃下来你的笔试通过率就能提升一大截。第一块是测试理论基础。等价类、边界值、场景法、因果图这四大用例设计方法必须吃透。我建议你找几个身边常见的功能比如登录、购物车、搜索、下单用这四种方法各设计一遍用例练到形成条件反射。第二块是SQL和Linux。这两样东西是测试岗的“日常工具”大厂笔试基本必考而且一旦考了就是送分题。SQL只需要掌握select、where、group by、order by、join四大金刚配合having、limit、distinct基本够用。Linux掌握上面列的那几个高频命令就行。第三块是编程基础。不用刷难题LeetCode前80道重点是数组、字符串、链表、简单递归做到能独立写出来就行。这里我想提醒一句千万不要只看不写。我见过太多人“看得懂”但“写不出”一到笔试就卡壳就是因为平时动手太少。6.2 笔试现场的时间分配策略笔试现场的时间分配也是个技术活。我自己总结的经验是先易后难先拿分再攻坚。一套笔试卷子发下来先用两分钟把题目快速浏览一遍标记出哪些是送分题、哪些是中等题、哪些是难题。顺序上先把送分题全部拿下再去做中等题最后剩余时间再去啃难题。最忌讳的是在一道题上死磕结果后面有会做的题没时间做这是最亏的。我当年笔试有个惨痛教训有一道场景分析题我觉得自己想法很多写了半小时结果后面两道简答题只来得及草草写几句。后来复盘发现那道场景分析题花20分钟和花40分钟得分差距可能只有三四分但后面的简答题每道都是十分起步。这个教训我一直记到现在。另外考试过程中如果遇到不会的编程题先写思路和伪代码同样能拿不少分。阅卷不是只看“能不能跑通”还要看“你的思路对不对”。你把思路写清楚代码写得乱一点都没关系。6.3 针对滴滴风格的专项准备既然目标是滴滴的测试岗那针对滴滴的业务特点做一些专项准备是非常有必要的。滴滴的核心业务是出行所以你要理解几个核心场景叫车发单、派单、接单、取消、行驶开始行程、结束行程、路线偏移、行程中断、支付支付成功、支付失败、优惠券抵扣、风控拦截、客服投诉、理赔、申诉等。我建议你备考时针对上面的每一个场景都提前准备一套测试用例的答题模板。考试的时候不管题目换什么衣服你都能迅速抓住本质。比如考“支付失败”的场景你脑子里立刻能浮现出余额不足、网络超时、支付密码错误、风控拦截、重复支付回调、金额不一致……这些提前储备好的点在考场上是救命的。我还有一个建议平时多使用滴滴这类出行APP站在用户的角度去感知产品同时站在测试的角度去思考“如果我是测试我会怎么测这个功能”。这种日常积累比考前突击更有用。6.4 考前一周的冲刺建议考前一周不建议再大量刷新题了这时候最重要的是回归基础和查漏补缺。我自己的冲刺节奏是前两天过一遍测试理论基础把等价类、边界值、场景法、因果图的经典例子重新写一遍确保不手生。中间两天集中刷SQL和Linux命令题这类题是“短平快”的拿分点性价比极高。每天写20道SQL把多表联查和分组统计练熟。最后两天回顾自己做过的笔试题和错题把容易混淆的知识点比如TCP和UDP的区别、进程和线程的区别、各种排序算法的稳定性再过一遍。最后一天不刷题了休息好准备好身份证、笔、纸、充电器保持良好的精神状态。笔试既是脑力活也是体力活状态不好水平再高也发挥不出来。7. 常见问题速查表与避坑提醒这里把我备考过程中和后来辅导别人时遇到的高频问题整理成一个速查表希望对你有所帮助。高频问题易错点正确思路等价类划分遗漏无效等价类先划分有效等价类再划分无效等价类二者都要测边界值分析只测上点不测离点闭区间取(上点、上点1、上点-1)以及(下点、下点1、下点-1)都要覆盖TCP三次握手只背流程不理解原因重点记住“防止失效请求建立连接”这个核心原因进程与线程答不全区别从资源分配、CPU调度、地址空间、切换开销四个维度回答测试用例设计想到哪写到哪无框架按功能、界面、兼容、性能、安全、异常六大维度逐步展开场景分析题只答表面原因从客户端、网络、服务端、数据四个层次全面分析代码找bug只看逻辑忽略边界先看整体逻辑再检查循环边界、空值、索引越界SQL查询忽略分组条件和having先写where过滤再group by分组然后用having过滤分组后的结果我最后想说的是测试岗笔试不像很多人想的那样“随便准备一下就行”它其实是一个非常系统的工程。计算机基础、测试理论、逻辑思维、编程能力每一块都要扎扎实实地准备。但反过来只要你把这些模块一一攻克你会发现测试岗笔试的题型是非常有规律的远没有想象中那么可怕。我当时备考的时候把能找到的历年真题都刷了一遍然后针对自己薄弱的环节逐个击破。这个过程很枯燥但回头看正是这种“笨功夫”让我在笔试中占了先机。你如果正在准备测试岗的笔试不妨也试试这个方法先摸清自己的底子再有针对性地补短板最后用大量的练习形成肌肉记忆。这套打法无论到哪一年都不会过时。
返回列表