测开笔试备考:从网易真题看测试思维与工程能力如何兼得

📅 发布时间:2026/8/31 19:38:40
测开笔试备考:从网易真题看测试思维与工程能力如何兼得
2018年网易校园招聘的测试开发工程师BJ笔试卷我在求职那会儿认真刷过一遍后来带团队招人时又翻出来参考过几次。说实话这份卷子的题目本身并不算偏难的是它考察的方式——它把测试思维和工程能力拧在一起考很多算法基础不错的人反而在测试设计题上栽了跟头。这个筛选思路放到今天依然是判断一个测开候选人是否合格的核心标准。这篇文章不打算做逐题解析网上的面经已经很多了我更想从备战逻辑的角度拆一下这份笔试卷到底在考什么能力每个环节背后的筛选意图是什么以及如果现在你准备投测试开发岗位应该怎么有针对性地准备。不管你是科班出身还是半路转行只要目标是做测开这套思路应该都能帮上忙。1. 从试卷反推岗位定位测开到底在招什么样的人1.1 测开不是高级点工笔试考的是工程能力很多人对测试开发有个误解觉得这个岗位就是不用写太多代码的测试。实际上大厂测开的日常工作包含大量代码工作自动化测试框架的开发、性能压测脚本的编写、测试工具的二次开发、CI流水线的维护。网易的笔试在计算机基础上考察得很扎实数据结构、操作系统、网络这些硬核内容一个不少就是这个原因——他们招的不是只会点点点的功能测试而是具备工程实现能力的工程师。我当时有个同学测试理论背得滚瓜烂熟黑盒白盒的覆盖方法倒背如流结果笔试成绩不理想。后来复盘发现问题出在编程题和计算机基础上代码题只AC了一半网络和OS的题目全靠蒙。他后来跟我说我以为是考测试没想到一大半是软件工程师的题。这就是对岗位定位没想清楚。测试开发的笔试本质上是软件工程师笔试 测试专业能力笔试的合卷。计算机基础决定了你能不能写好测试代码、能不能理解被测系统的原理测试理论和设计能力决定了你能不能发现别人发现不了的问题。两条腿都要硬缺一条都会被筛掉。1.2 试卷结构推演每个模块都在测什么网易这类一线互联网公司的笔试题型结构通常有相对固定的套路。根据我对2018年这套题以及其他年份题目的对比整体可以分成四个大板块逻辑与通用能力题考察思维严谨性通常是选择题涉及逻辑推理、数字规律、语言理解。这一部分筛掉的是思维漏洞多的人因为测试的本质就是找漏洞。计算机基础题数据结构、算法复杂度、操作系统、网络协议、数据库题型为选择题或者简答题。这部分筛掉的是工程基础不过关的人没法写高效测试代码。编程题一般2~3道纯手写代码题目难度中等偏上涉及字符串处理、链表操作、简单动态规划等。这部分筛掉的是代码能力弱的人。测试专业题用例设计、测试流程、缺陷分析、场景设计。这部分是区分度最高的部分筛掉的是没有测试思维的人。这个结构背后有一条隐藏逻辑测试开发工程师既要能写代码也要知道怎么测代码更重要的是要能站在用户角度想问题。四个板块分别对应了代码能力、专业基础、思维方式三个维度。你在准备的时候一定要先分清每个板块的考察目标而不是眉毛胡子一把抓。2. 动手刷题前先想明白的几件事2.1 编程能力测试不是能跑就行是稳、准、快测开的编程题通常不会特别难但要求边界条件考虑周全。2018年这套卷子里的编程题我印象比较深的一道是字符串相关操作类的题目这类题看起来简单实际上陷阱很多空字符串、全空格、超大输入规模、中文字符混入每个边界都可能成为扣分点。我当时刷题的习惯是每道题做完之后强迫自己再列一遍边界条件清单——空值、单元素、最大值、最小值、重复值、特殊字符。这个过程看起来很笨但对于测试开发来说这就是核心职业素养的体现。面试官或者阅卷系统虽然看不到你的思考过程但代码的健壮性一定会体现在通过率和代码质量上。另外要注意语言的选择。建议提前确认笔试系统支持的编程语言然后固定用你最熟的一门。不要在主语言不扎实的情况下想着顺便练练新语言笔试现场没有这个试错成本。实战经验是C和Java的候选人通常在内存管理上更细心Python候选人在写题速度上有优势但要注意Python的全局解释器锁GIL在性能题里偶尔会是个坑比如涉及多线程并行计算的地方。2.2 测试设计题拿分的关键是结构化思维测试专业题是测开笔试中区分度最高的一块。围绕一个功能让你设计测试用例看起来谁都能写上几条但能拿到高分的人往往展现出了清晰的测试设计方法论。以2018年试卷里典型的登录功能测试用例设计这类题目为例多数人会写输入正确的账号密码能登录、输入错误的密码会提示错误、点击登录按钮无反应——然后就没了。这种回答最多拿个基础分因为它暴露的是想到哪写到哪的无序思维。高分的回答一定是有结构化层次的通常是这样的组织方式功能测试正常流程、异常流程、权限控制、数据校验兼容性测试不同浏览器、不同操作系统、不同分辨率性能测试单用户登录、并发登录、弱网环境安全测试密码加密传输、SQL注入、暴力破解拦截、会话超时这个结构不是死记硬背的模板而是测试金字塔思维的具体体现从底层功能逐层向上覆盖质量属性。笔试时不需要把每一层都写全但一定要让阅卷人看到你的思考是有框架的而不是零散的。2.3 逻辑题别硬算要建立假设-验证循环逻辑推理题在很多理工科学生眼里是小学奥数题但测试开发岗位考逻辑题深层目的是测试你在面对未知系统时的推理能力——你是否习惯于先建立假设再设计验证方案最后根据反馈修正假设。举个例子一套数字规律题常规做法是找差值、找倍数、找交替规律。但如果你用测试思维去做这道题先把已知数据当作观测结果然后列出至少三种可能的生成规则再用备选数据去验证哪条规则成立——这就是一个标准的假设-验证循环。这种思维方式在真正的测试工作中极其重要你看到一个bug先猜测可能是哪一层的问题前端、后端、数据库、网络然后设计排查步骤去证实或证伪而不是毫无章法地瞎试。面对不会的逻辑题一个实用的技巧是顺推加逆推。顺推是根据已知条件逐步推导逆推是从选项出发看哪个答案能让条件自洽。两道方法一结合绝大多数选择题都能在合理时间内解决。3. 核心题型拆解与复习路线图3.1 计算机基础测开的内功心法计算机基础在测试开发笔试中的分量经常被求职者低估。有人觉得我是做测试的操作系统网络了解个大概就行这么想的人笔试成绩一般都不太好看。网络部分是重中之重其中TCP的三次握手和四次挥手几乎是必考题。但测开的考察方式跟后端开发不太一样他们更看重你能否从这个协议行为中推导出测试场景。比如三次握手的第三次失败会怎样SYN Flood攻击的原理是什么这里面可以引申出大量的性能测试和安全测试场景。具体来说有这几个细节为什么是三次而不是两次因为要防止失效的连接请求突然传到服务器让服务器建立不必要的连接资源。四次挥手为什么客户端要等待2MSL最大报文段生存时间为了保证最后一个ACK能到达对方同时让过期报文段从网络中消失。这些知识在做接口压测、抓包分析、TCP长连接测试时非常有用。操作系统里进程和线程的区别是另一个高频题目。测试开发考这个通常是为了判断你能否设计出合理的并发测试场景。此外死锁的四个必要条件互斥、占有并等待、非抢占、循环等待考得也很多而且经常跟多线程编程题结合起来考比如让你写一段可能产生死锁的代码再让你设计用例去检测它。内存管理中的堆和栈区别、进程调度算法、页面置换算法也是需要注意的知识点。数据库这块SQL的增删改查是基本功但测开笔试经常考多表联查和聚合函数复杂一点的会考事务的ACID特征、索引失效的场景。因为做测试时经常需要写SQL去构造测试数据、验证测试结果SQL不好会非常影响效率。数据结构中链表、二叉树、哈希表出现的频率最高。链表相关的编程题反转链表、判断是否有环几乎是必刷题。哈希表则是理解测试数据如何快速定位的基础。3.2 编程题策略性价比最高的得分点编程题是笔试中分数占比最高的单项也是可以通过短期刷题快速提分的部分。针对测开岗位的笔试我不建议把时间花在偏难怪的算法题上而应该集中火力解决两类问题第一类是经典必刷题包括链表反转、字符串括号匹配、二分查找变体、数组去重排序、二叉树前中后序遍历、哈希表计数。这些题目是笔试中的常客拿到的概率极高。每一道都要做到能默写的程度不是看过思路就行是能脱离IDE直接在白板或在线编辑器里写出来。第二类是业务模拟题就是模拟一个具体业务场景的编程题。比如写一个函数判断括号是否匹配这类题目考的是你把业务规则转化成代码的能力正是测试开发日常写测试脚本时做的事情。遇到这类题不需要什么高深的算法关键是把逻辑拆清楚、边界想全面。刷题方法上强烈推荐三遍法第一遍看完题目自己尝试写写不出来就看题解看懂后合上答案自己写一遍第二遍隔一天再写看能不能独立完成第三遍隔一周再写要求做到30分钟内完整通过。这个过程能确保你真正掌握了题目而不是眼睛会了手不会。3.3 测试理论与用例设计构建你的测试知识体系测试理论在笔试中占比不算大但它是专业性的体现不能丢分。核心知识点包括测试级别单元测试、集成测试、系统测试、验收测试测试方法黑盒、白盒、灰盒黑盒用例设计方法等价类划分、边界值分析、因果图法、判定表法、场景法、错误推测法白盒覆盖标准语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖测试流程需求分析、测试计划、用例设计、用例执行、缺陷管理、测试报告缺陷管理缺陷生命周期新建、指派、修复、回归、关闭、缺陷等级定义这些知识看起来是纯理论背起来也很枯燥但对于笔试题来说它们是送分题。尤其是等价类划分和边界值分析几乎每次笔试都会出现而且是后面场景设计题的基础工具必须透彻掌握。举个例子如果让你设计一个输入1到100的整数的测试用例没学过测试理论的人可能写几个正常值再加个0和101就完了。学过等价类和边界值的人会这样设计有效等价类1~100内的数字、无效等价类小于1、大于100、非数字、空值、小数、特殊字符然后边界值全覆盖1、100、0、101、-1、1.5等。这就是专业与非专业的差距。3.4 场景设计题从答题者切换到测试负责人这部分是整个笔试真正的分水岭。2018年的卷子里有一道题大致是给一个购物车结算功能的场景要求设计测试用例。这种题目没有标准答案但高水平的回答会有鲜明的工程逻辑。拿到题目先别动笔花几分钟做三件事理解需求先把结算的流程捋一遍从购物车勾选商品、点击结算、确认订单信息、选择支付方式、支付、支付结果回调、订单生成。每一步都可能出问题每一步都需要测试。列出测试维度功能、兼容、性能、安全、易用、异常场景。分层组织输出每个维度再往下拆形成完整用例集。功能测试里要特别注意异常场景这是最容易出彩的地方。比如结算过程中商品被人买走了怎么办支付成功后订单丢了怎么办支付成功了但回调超时怎么办网络中断时用户重复点击支付按钮会怎样这些都属于错误推测法的范畴体现的是你对真实业务的理解深度。另外回答场景题时如果能把自动化测试的考虑也写进去会明显加分。比如支付流程可以用PythonRequests写接口自动化脚本覆盖冒烟测试用例跑在CI流水线上每次代码提交后自动触发这样就让阅卷人看到你是一个有工程全局视角的测开工程师而不只是一个执行用例的测试员。4. 实操复盘一道典型的编程测试复合题4.1 题目回顾与拆解为了让大家更直观地理解上面说的备考思路我挑一道有代表性的复合题来完整走一遍。题目大意是实现一个函数判断一个字符串是否是有效的IPv4地址。这类题目在测开笔试中出现频率很高因为它既有清晰的编程逻辑又能自然延伸到测试设计两个考点一次考完。第一步先确认输入输出。输入是字符串输出是布尔值。这是一个典型的字符串解析类题目不需要复杂算法但特别考验对格式规则的完整理解。第二步拆解IPv4有效的规则必须由4段组成以英文句点分隔每段只能包含数字每段的值在0到255之间除数字0本身外不能以0开头即不允许前导零不允许有空格、正负号、十六进制等特殊格式4.2 编程实现与边界检查一个比较清爽的实现思路是先按句点切分然后逐段校验。Python代码如下def is_valid_ipv4(s: str) - bool: if not s or len(s) 15: return False parts s.split(.) if len(parts) ! 4: return False for part in parts: if not part.isdigit(): return False if len(part) 1 and part[0] 0: return False if int(part) 255: return False return True这段代码的关键点在两个地方一是not part.isdigit()用它挡住空字符串、非数字字符和正负号二是前导零的判断这是很多人容易忽略的边界。写完代码后一定要自己跑一遍用例清单1.1.1.1、0.0.0.0、255.255.255.255、256.1.1.1、01.2.3.4、1.2.3、1.2.3.4.5、确保每个都返回预期结果。这一套自查动作模拟的就是测试人员在提测之前做冒烟测试的过程在笔试中养成这种习惯非常加分。4.3 从代码展开到测试用例集代码写完不等于这道题做完。作为测试开发候选人你还必须在心里把这道题的测试用例设计一遍。我会这样组织正常场景合法地址、边界值地址0.0.0.0和255.255.255.255异常格式段数不对、非数字字符、前导零、空段如1..2.3、末尾句点性能考虑极大字符串输入、超长段9999999999999999隐含场景IPv6地址串进来、带了端口号的地址、URL中的地址这道题如果出现在笔试中编程部分只占一半分数另一半在你看不到的地方——阅卷人会从你的代码风格和注释质量判断你有没有测试意识。代码写的干不干净、边界情况有没有覆盖这些都能看出一个人的工程习惯。这个习惯不是考试前临时抱佛脚能练出来的平时刷题时就要刻意培养。5. 考场实战策略与常见失分点5.1 时间分配先拿稳分再攻难题笔试的时间分配直接决定最终成绩。以2018年这套卷子为例我建议采用三轮答题法第一轮约占总时间30%快速过掉逻辑题和计算机基础选择题会做的马上选不会做的先标记跳过不要恋战。这一轮的目标是确保把所有送分题的分拿到手。第二轮约占总时间50%集中精力做编程题和测试设计题。编程题先挑自己最有把握的那道建立信心然后再慢慢啃剩下的。测试设计题要留足时间因为这类题需要结构化思考和书写是最容易丢分也最值得花时间的部分。第三轮约占总时间20%回头处理第一轮标记的题目此时大脑已经进入状态之前卡壳的题目很可能有新的思路。最后留5分钟检查一遍个人信息有没有填对、选择题有没有漏答、代码有没有明显的低级语法错误。5.2 测试设计题的五大致命失分点我见过太多人在测试设计题上吃亏失分原因出奇地一致。总结出来五个最常见的坑你一定要避开只测正常流程不测异常流程。这是最典型的失分点一个功能有80%的代码路径都在处理异常情况只测快乐路径等于没测。用例粒度太粗或者太细。太粗就是验证登录功能正常这种一句话用例太细则写了50条全是输入框边界值缺乏全局视角。好的粒度应该是一个用例对应一个预期结果既能指导执行又不至于无限膨胀。缺少数据准备和预期结果描述。一条完整的用例至少包含前置条件、操作步骤、输入数据、预期结果。很多人在笔试时只写输入错误密码提示错误但不写错误密码具体是什么这体现的是用例设计的不专业。不考虑环境因素。涉及系统集成时要考虑数据库、缓存、第三方接口、外部服务不可用的情况。比如在购物车结算场景中如果支付网关超时系统的行为是否符合预期这是一个重要的质量风险点。没有优先级概念。测试用例应该区分冒烟测试用例、功能测试用例、回归测试用例以及P0、P1、P2的优先级。这个细节在答题纸上写出来会让人对你的工程成熟度刮目相看。5.3 心态与临场技巧最后聊一点心态问题。笔试时最怕的不是题目难而是被某一道题卡住之后阵脚大乱导致后面明明会做的题也没做好。我个人的经验是给自己定一个每题思考时间上限超过这个时间就果断跳过。这对测开岗位尤其重要——因为在真实工作中你天天都会遇到没头绪的bug一个成熟的测开工程师懂得什么时候该深挖什么时候该先绕过去推进整体流程。还有一个容易被人忽略的细节编程题使用在线编辑器时务必注意代码缩进和括号匹配的问题尤其是Python这种对缩进敏感的语言。平时刷题用IDE习惯了自动缩进到了在线编辑器没有这些辅助时代码写得很乱甚至缩进报错的情况我见过太多次。考前找在线笔试平台提前模拟几次熟悉不适应的工作环境。另外答题时注意审题陷阱。测试开发笔试卷里经常出现以下哪种测试方法不属于黑盒测试这类否定式提问以及测试计划中不应该包含下列哪项这类带不字的题目。考试时一定要把题目读完再动手审题清晰是一个测试人员最基本的素养。6. 备考时间线从零开始的两个月冲刺计划6.1 第一阶段第1~2周扫盲与定位先用一周把所有基础知识过一遍不追求深度重点是建立全局框架。具体做法网络协议重点看TCP/UDP、HTTP/HTTPS的报文结构和常见状态码操作系统重点看进程线程、死锁、内存管理数据库重点看SQL基本语法和索引原理数据结构重点看链表、栈、队列、二叉树、哈希表的基本操作。同时做一次自我评估找到自己的薄弱板块。我的建议是直接找一套真题掐时间做一遍对成绩做量化分析计算机基础正确率多少、编程题AC了几道、测试设计题能写几条用例。以这个数据为基准接下来所有的复习时间都优先投给正确率最低的部分。6.2 第二阶段第3~5周专项强攻进入专项训练阶段每一块都配上实操练习。计算机基础知识点用思维导图整理每天早晚各花15分钟过一遍编程题每天保证3~5道严格按照三遍法来刷测试理论和用例设计每天做2个场景的设计练习比如设计一个电梯的测试用例设计一个微信红包的测试用例这些场景题对培养结构化的测试思维特别有效。这一阶段最容易犯的毛病是刷题量上去了思考深度没上去。所以每周要做一次复盘翻看本周做错的题目和设计不完善的用例总结出高频错误模式。我当时整理了一个错题与盲区清单考前一个星期反复看效果很好。6.3 第三阶段第6~8周真题模拟与查漏补缺最后三周以真题模拟为主每周至少完整做2套模拟卷严格计时模拟真实考试环境。做完之后做两件事一是逐题分析出题人的意图比如这道题在考哪个知识点、为什么这样出二是把相关知识点再延展复习一遍做到举一反三。从第四周开始还可以加入一道软技能准备题——把项目经历整理成可以用STAR法则讲述的版本。虽然这是笔试环节但很多公司的笔试通过后紧接着就是面试提前准备好项目和实习经历的描述能为下一环节节省大量时间。我个人还有一个凌晨三点测试法每晚睡前花10分钟拿一个日常使用的App在心里设计它的测试用例。今天测一下微信支付的异常流程明天测一下抖音的弱网表现后天测一下地图App的定位切换。这个习惯不仅训练了测试思维还在面试中提供了大量真实案例比临时背模板管用得多。写在最后的一点体会这份2018年的笔试卷子早已经过了录取季但它背后的考察逻辑到现在依然是测开岗位筛选候选人的核心标准。我见过很多人花大量时间背测试理论、刷奇葩逻辑题反而忽视了最基础的代码能力和计算机功底这是本末倒置的。根据我自己的踩坑经验测试开发的笔试最核心的备考策略就两条一是把代码功底练扎实这是所有测试工作实现能力的基础二是把测试思维结构化用框架去思考问题而不是靠灵感和零散经验。这两条做到了不管笔试题目怎么变你都能稳稳接住。辅导过不少准备校招的同学我发现一个规律越是代码能力强的候选人越容易在测试设计上翻车因为觉得能跑就行越是测试理论扎实的人越容易在编程题上拿不到分因为动手太少。测开这个岗位很特殊它要求你同时具备开发者和测试者两种思维模式然后在同一份答卷上展现出来。这种复合能力不是临时突击出来的需要平时就多做刻意练习。最后分享一个我自己的小习惯每次做完一道题或者设计完一份用例都会问自己一句如果我是面试官这道题能区分出候选人的水平吗这样换位思考能帮你更准确地理解每道题的考察重点也会让你的备考更有方向感。祝正在准备笔试的你顺利拿到心仪的offer。