测试开发笔试题复盘:从网络基础到智能硬件的考点全解析

发布时间:2026/8/31 9:22:36
测试开发笔试题复盘:从网络基础到智能硬件的考点全解析 先说明一句我不是小米的员工也没有拿到当年的内部评分标准。下面的内容是我作为面试者和面试官两个身份来回切换之后对2019年秋招那套测试开发笔试题B的拆解与复盘。这套卷子最大的价值不在题目本身而在于它清晰划出了一条测试开发工程师的能力边界——你不仅要会测还得懂开发、懂系统、懂网络、懂数据库、懂脚本甚至得懂一点智能硬件。如果你正在准备测试开发岗位或者已经在做功能测试想往测试开发转这篇文章就是把那套典型的互联网大厂测开笔试题目掰开揉碎讲给你听。我不会去逐字逐句回忆原题说实话也没人能拿到完整的官方题面但考点覆盖、出题逻辑、答题思路、踩坑点我会按照“从业者复盘”的方式完整还原并补上当年我在这些题上栽过的跟头。这篇文章的目标是让你看完之后能直接拿一套自己的方法论去应付同类笔试。1. 整套笔试题的出题逻辑与考察地图1.1 卷面构成与分值倾向2019年的测开笔试题B整体来看题型分布大致呈这样一个状态题型常见题量分值倾向考察目标选择题20~30题40%左右计算机网络、操作系统、数据库、Java/Python基础简答题3~5题15%左右测试理论、测试流程、自动化测试概念手写代码2~3题25%左右数据结构、算法、编程基本功测试用例设计1~2题15%左右测试思维、场景覆盖能力Linux/SQL实操2~3题5%~10%定位问题、处理日志的基础能力注意这个占比是我根据同类题目做的估算不代表官方分值。但有一点可以确定纯测试理论部分的占比很低反而是编程题和计算机网络、操作系统这类“研发向”内容占比很高。这说明它不是在招“会按按钮的人”而是在招“能把测试工作工程化的人”。B卷和A卷的区别通常也不在难度上而在题目的场景包装。A卷的编程题可能是纯算法题B卷则更容易把算法题包装成一个“测试数据生成”或“日志解析”的场景。换言之B卷更看重你能不能把代码当成解决测试问题的工具。1.2 出题人的三个隐藏意图我当年做这套卷子的时候最大的感受是它不像一份“知识测试”更像一份“思维测试”。出题人真正想看的至少有三件事。第一考察工程思维而不是八股背诵。比如它不会直接问“TCP三次握手是什么”而是给你一个“某接口偶发超时你会怎么排查”的场景题。你背了一百遍握手的细节如果不能在具体问题里用起来等于白背。第二考察定位问题的能力。这一点在Linux题和数据库题里体现得最明显。题目通常会给你一段“有问题的日志”或“查询极慢的SQL”让你通过命令或优化手段定位问题。说白了测试开发的核心价值之一就是能在出现线上故障时快速判断是前端的问题、网络的问题还是后端接口的问题。第三考察工具链的熟练度。笔试题里出现了接口测试、自动化框架相关的内容不会直接让你写一个完整的框架但会问你“如何设计一个自动化测试用例”、“如何断言某个接口的返回值”这类问题。实际上这就是在试探你平时干活能不能脱离手工点点点。1.3 为什么测试开发要考这么多“研发题”很多人看到测开笔试题会吐槽“这跟开发笔试有什么区别”从岗位定义看区别真不大。测试开发工程师广义上是“开发服务于测试的研发工程师”你需要开发测试工具、搭建测试平台、设计自动化框架。狭义上看哪怕你只做业务测试只要涉及接口测试、脚本数据处理你也要写代码。所以编程能力、网络基础、操作系统基础成了绕不开的门槛。小米发展到2019年这个时间点业务线已经不只是手机了还有电视、路由器、音箱、IoT生态链产品。这意味着测试对象非常复杂客户端Android/iOS、服务端、嵌入式设备、手机App与智能硬件的联动。这种业务背景决定了它需要的测开必须同时具备“开发视角”和“测试视角”。所以笔试才会这么“杂”什么都考一点却不深入本质上是在看你快速适应复杂业务的能力。2. 网络与操作系统题背会基础更要学会站在用户侧答题2.1 高频网络题TCP握手、HTTP状态码、DNS解析网络是测开笔试题里最稳定的考点几乎每年必出。选择题常见的考法是给你四个关于TCP/IP的说法让你选出正确的简答题则喜欢让你描述一次完整的HTTP请求过程或者解释HTTPS的加密过程。先说TCP三次握手和四次挥手。这两件事不能只会背“SYN、SYNACK、ACK”这样的阶段名要能说出来“为什么是三次而不是两次”。核心原因在于三次握手能让双方都确认自己和对方的发送、接收能力是正常的。你可以这样理解假设只有两次握手服务端收到了连接请求并回复确认但客户端如果没收到这个确认它不知道服务端已经准备好了这时两端的状态就不一致了。这道题在测试场景里的延伸是“连接超时”和“半连接”问题。比如一个接口偶发卡顿你就要想到是不是TCP握手阶段的网络延迟或服务端并发连接数满了。笔试时如果能答出这一层比只背概念要加分。HTTP状态码也是一个高频选择题考点。至少要记住这几个400是请求语法错误401是未认证403是服务器拒绝访问但已认证404是资源不存在500是服务器内部错误502是网关错误503是服务不可用504是网关超时。测试开发尤其要分清502和504502是你的请求到达了网关但网关后面的服务没响应504是网关等得太久主动断开了。这两种情况对应的排查方向完全不同。DNS解析的过程也容易被考到。完整的链路是浏览器缓存、系统缓存、路由器缓存、本地DNS服务器、根域名服务器、顶级域名服务器、权威域名服务器。这个考点和“线上环境偶发无法访问”这类问题绑定出现学会画这条解析链可以帮助你判断域名解析慢的问题出现在哪个环节。2.2 进程线程与并发不只会背区别还要能测并发问题操作系统层面的选择题最常出现的关键词是进程、线程、协程、死锁、虚拟内存。进程和线程的区别大部分人能说出来“进程是资源分配的最小单位线程是CPU调度的最小单位”。但笔试题目往往会再往前一步问你“多线程程序出现数据不一致的原因是什么”这就涉及到了临界区、锁、原子性这些概念。从测试开发的角度看答案其实指向一个真实的测试场景并发接口测试。如果你发起100个并发请求服务端处理同一个数据时没有加锁就可能出现“超卖”或“重复下单”问题。死锁的四个必要条件互斥、持有并等待、不可剥夺、循环等待也是隔三差五出现的考点。我建议你顺手准备一个真实的死锁排查案例比如“线程A持有锁1等待锁2线程B持有锁2等待锁1”这样面试官追问“怎么避免死锁”时你可以用“锁顺序全局一致”或“加锁超时”来回应。协程这个概念在2019年的笔试题里已经出现了但频率不算高。如果考到核心是理解它和线程的区别协程是用户态的轻量级线程切换不依赖操作系统内核开销更小。Python里的async、await就是协程的典型实现。2.3 答题中的“隐性加分项”这部分是我的亲身体会。绝大多数考生答网络和操作系统题都是把教科书概念默写一遍。但测开岗位的“隐性加分项”在于你能否把八股概念映射到测试场景上。比如谈到HTTP的无状态性普通考生会写“HTTP本身不保存请求上下文通过Cookie和Session保持状态”。如果你能补一句“在做接口自动化测试时就需要考虑如何维护Session登录态一般用请求头里的Token来处理”这就把网络知识和测试实践连接起来了。再比如问到进程和线程的区别你可以在末尾带一句“在做性能测试时线程数设置过高容易导致上下文切换频繁反而降低吞吐量所以压测时需要先调整线程池参数”。这类回答会让考官意识到你不只是在背书你真的处理过相关问题知道考点落在哪里。3. 手写代码题算法不是让你造轮子而是看你怎么思考3.1 高频算法题型清单测开笔试的算法题难度通常低于后端开发岗但绝对不能轻视。从2019年这类卷子来看常见的算法题型大致有几类字符串处理反转、回文、子串匹配数组/列表操作去重、排序、寻找最大最小值链表操作反转链表、判断是否有环二分查找及其变体简单动态规划爬楼梯、最大子序和、斐波那契数据结构模拟用栈实现队列、LRU缓存这些题都有一个共同特点不要求你写出什么惊世骇俗的算法但要求你代码健壮、逻辑清晰、能处理边界条件。笔试判卷通常不是用线上OJ跑全部测试用例而是人工或半自动地检查关键用例所以写代码的“姿态”和“注释”都会影响得分。3.2 链表反转手写示范链表反转是我见过最常考的手写题之一因为它代码量少、易于人工判卷而且能考察你有没有理解“指针指向”的本质。很多人能记住迭代解法的大致逻辑但一写就漏掉“保存next节点”这一步。class ListNode: def __init__(self, x): self.val x self.next None def reverse_list(head: ListNode) - ListNode: # 用三个指针prev表示前一个节点curr表示当前节点next_node暂存下一个节点 prev None curr head while curr is not None: next_node curr.next # 先保存后继节点否则改指向后会丢失 curr.next prev # 反转指向 prev curr # 双指针向前移动 curr next_node return prev这道题我当年考试时犯过一个低级错误忘了在循环里更新prev和curr的顺序导致死循环。实际上这里的核心就是“先改指向、再移指针”顺序不能乱。你不要觉得这种低级错误很蠢笔试时间压力下人真的会犯。写完代码后我强烈建议在注释中补一段复杂度说明时间O(n)空间O(1)。有些考生会写成递归版本也能过但递归的空间复杂度是O(n)可能会被追问一句“能不能优化”。所以迭代版本至少要做到张口就能写出来。3.3 二分查找的边界陷阱二分查找代码不长但边界问题极容易出错。经典的写法是def binary_search(nums, target): left, right 0, len(nums) - 1 while left right: mid (left right) // 2 if nums[mid] target: return mid elif nums[mid] target: left mid 1 else: right mid - 1 return -1注意这里有一个细节mid (left right) // 2在left right很大时理论上可能溢出。虽然Python的整数没有溢出问题但在C或Java里这是个常见坑所以更稳妥的写法是mid left (right - left) // 2。你如果能在试卷上写出这种细节往往会让人觉得你考虑问题很周全。和二分查找配套出现的场景题通常是“在日志中查找某个时间点的记录”或“在已排序的测试数据里快速定位目标值”。你要知道的是二分查找的价值不只是做一个算法题它同时是高效测试数据检索的底层思想。3.4 笔试中代码题的时间分配策略我的经验是代码题是整套试卷里最耗时的部分一定要放在前面做或者至少不要留到最后做。有些考生先死磕选择题结果最后只剩下10分钟写代码那基本就凉了。你至少要为代码题预留30分钟。另一个容易被忽视的点是代码题要写注释且注释不是给自己看的是给判卷官看的。我自己在面试时判过类似的卷子看到一个考生代码逻辑简洁、注释清晰甚至人为列出了两个测试用例心里的第一反应就是加分。再补充一个题外话如果你遇到完全没思路的算法题不要空着。把暴力的解法写上哪怕复杂度高也比白卷强。这背后其实是工程思维——先实现功能再考虑优化。大多数测开的笔试题并不要求唯一解能跑通就是一种能力。4. 测试用例设计题这种题没有标准答案但有高分套路4.1 经典“水杯/电梯”题的分析框架测试用例设计题是测开笔试的“灵魂题”。它常见的形式是“请设计一个电梯的测试用例”或者“请设计一个购物车功能的测试用例”。很多应届生看到这种题就开始发散思维想到哪写到哪结果写了几十条用例却没有逻辑这在判卷官眼里是很可怕的。我的建议是套用一套固定的分析维度让答案呈现出清晰的层次感。这套框架大概是功能测试正常功能是否正确有没有遗漏子功能界面测试布局、提示语、交互是否合理性能测试响应时间、吞吐量、并发能力兼容性测试不同系统、不同浏览器、不同分辨率安全性测试越权访问、数据加密、敏感信息泄露异常测试断网、断电、数据异常、重复点击易用性测试老少咸宜、操作是否顺滑配置测试不同语言、不同地区、不同网络环境为什么这些维度管用因为任何一个软件产品在生命周期里都逃不开这些属性的检查。你把这些维度当作一棵思维树每个维度往里填用例既不容易漏也显得你会有条理地做测试分析。4.2 用“手环计步功能”当例子套用框架写出用例提纲既然这是小米的卷子我就用一个小米手环的计步功能来举例。如果题目改成“设计小米手环计步功能的测试用例”你可以按下面的思路展开功能维度手环能正确记录步数运动类型变化时走路、跑步能正确识别静止不动的状态下步数不增加跨天时步数清零或存档同步到手机App后步数一致。边界维度步数上限是多少例如99999步时会不会溢出手环电量低于10%时是否还能计步剧烈甩手腕是否会被误判为步伐连续长时间运动时内存和电池表现。异常维度手环与手机断连后继续计步恢复连接后数据能否同步手机App杀掉进程后再打开数据是否丢失手环重启后当天步数是否保留。性能维度连续使用一整天毫秒级刷新是否流畅同步1万步数据到App需要多长时间App列表快速滑动的帧率是否下降。兼容维度不同型号的手机Android/iOS同步是否正常手环固件升级到新版本后与旧版本App是否兼容。安全维度步数数据的本地存储是否加密同步过程中是否可能被拦截篡改。看看这个结构你再对比一下单纯地写“手环能不能数步数”“跑步能不能计数”差异立马就出来了。判卷官要的不是全而是“分类齐全、重点突出”。4.3 如何从“能想到”升级到“能想到别人想不到的”这部分的提升是比较难的因为它需要真实的业务经验。但有一点是可以通过训练达到的站在真实用户使用场景里把自己当成一个“手贱”的用户去思考。举一个例子智能家居领域里的一个常见测试场景你有一个智能摄像头设置了“有人移动时推送报警消息”。测试时你肯定要测有人经过时手机会收到推送没人经过时不推送网络断开时怎么办。但真正高分的人还会想到如果门铃被按响的同时也触发人体移动会不会收到两条重复消息两条消息的到达顺序是否一致如果App正在后台运行推送消息能否正确跳转到视频回放页面这在多设备联动的测试里非常关键。我在实际面试候选人的时候遇到能想到“消息去重”“优先级顺序”这类问题的基本会当场认定他有做复杂业务测试的潜质。因为这种思维不是背出来的是靠真实踩过坑才有的。所以平时自己练用例设计的时候也别老是拿“水杯”这种没营养的物体练。去找一个真实App里的功能比如短视频上滑切换、扫码支付、智能门锁的临时密码反复用这套八维框架去拆解直到形成肌肉记忆。5. Linux与数据库笔试里的“送分题”其实最拉分5.1 Linux必会命令清单很多测试开发岗位的日常工作就是和服务器、日志打交道。所以Linux相关题目几乎必然出现。你要掌握的命令大概有这几类文件与目录ls、cd、cp、mv、rm、find、du、df查看文件内容cat、tail、head、less、grep、awk、sed进程与端口ps、top、netstat、lsof、kill网络ping、curl、wget、telnet权限chmod、chown压缩tar、zip、unzip你可以拿出一个晚上把这些命令的常用参数过一遍但不要死记重点是理解它们组合起来能干什么。5.2 案例题统计一段日志中的Top IP假设笔试给你一段nginx日志让你找出访问量前十的IP并且输出访问次数。这个题目考察的不是某一条命令而是命令的组合使用能力。答案是这样的awk {print $1} access.log | sort | uniq -c | sort -rn | head -10我来拆解一下这条管道命令awk {print $1}提取日志每行的第一个字段通常是客户端IPsort把相同的IP排在一起uniq -c统计去重后每个IP的出现次数sort -rn按数字降序排序-r是倒序-n是按数值排序head -10取前10行当年我在笔试时虽然写出了这条命令但犯了一个错误没有加-r参数导致输出的是最小的十个IP。这种错误在真实的日志排查里也一样常见。所以写完之后一定要口算一遍或测试验证一下确认排序方向是否正确。再补充一个高频题目查找某目录下大于500M的文件并删除。命令是find /data/logs -type f -size 500M -exec rm -f {} \;这里的关键是-size 500M的写法注意号表示大于。如果你要按时间删除可以用-mtime 7表示修改时间超过7天。这套命令在真实清理测试环境时非常常用。5.3 SQL手写题连表查询和聚合函数不能含糊数据库题在测试开发笔试里通常不难核心就是三大块查询、聚合、连表。常考的概念包括SELECT、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT、JOIN。举一个我在笔试里见过的类似题目有两张表student表id、name、class_id和score表id、student_id、course_name、score。要求查出每个班级的平均成绩大于80分的班级名称和平均分。SELECT c.class_name, AVG(s.score) AS avg_score FROM class c JOIN student st ON c.id st.class_id JOIN score s ON st.id s.student_id GROUP BY c.class_name HAVING AVG(s.score) 80;注意这里的关键是HAVING和WHERE的区别。WHERE是在分组前过滤行HAVING是在分组后过滤组。如果你要用聚合函数比如AVG作为过滤条件就不能用WHERE必须用HAVING。这个点经常被拿来挖坑。另一个高频坑是COUNT(*)和COUNT(column)的区别。COUNT(*)统计所有行包括NULL值COUNT(column)只统计该列非NULL的行。这在统计“有订单记录的用户数”时特别容易踩坑你一旦写错结果可能少了一天数据都找不出来。你可能会问测开为什么要考SQL因为在测试环境准备、测试数据构造、线上数据校验、报表统计测试这些环节你都要自己写SQL去验证数据是否正确。能熟练写SQL的测试开发工作效率会比别人高一截。6. 移动端与智能硬件专项小米卷子的“区分度”所在6.1 Android基础题Activity生命周期是必考提到小米就不能不提Android。2019年小米的测开笔试题里Android相关内容占据了相当大的比重。最基础的是Activity生命周期的几个回调onCreate、onStart、onResume、onPause、onStop、onDestroy还有onRestart。选择题可能会问你“当App从后台切换到前台时Activity会执行哪些回调”答案是onRestart、onStart、onResume。这些看似简单但测试开发需要根据这些生命周期的变化来设计相关测试用例比如App退到后台再回来页面状态是否保持App被系统回收后再次打开能否恢复到原页面App在后台收到业务消息会不会触发异常唤醒手机来电或弹出系统级弹窗时App是否异常退出这类用例能不能写全本质上取决于你是否真正理解Activity生命周期的执行顺序。6.2 专项测试题冷启动、弱网、耗电、卡顿移动端App测试的专项能力是小米这类厂商特别看重的。笔试中常见的问题有“如何测试一个App的冷启动耗时”“如何模拟弱网环境”“App耗电异常如何定位”。冷启动耗时测试常规做法是通过adb shell am start -W命令查看TotalTime和WaitTime。测试时需要在包名和启动Activity参数上传对比如adb shell am start -W -n com.example.app/.MainActivity弱网环境下模拟可以用Charles或Fiddler的限速功能也可以用Linux上的tc命令直接控制网络延迟和丢包率。弱网测试关注的是弱网下页面是否白屏、接口超时后是否有重试机制、弱网切回正常网络后页面是否恢复。耗电问题定位则要结合adb shell dumpsys battery和adb shell dumpsys batterystats分析是CPU唤醒过多还是网络传输频繁导致的耗电。笔试时你不需要答得非常底层但你要能说出“通过定位相关系统日志来判断耗电元凶”这个思路。6.3 智能硬件联动场景题测试环境的复杂性小米的IoT生态让它的测开笔试题出现了一些“有小米特色”的场景题。这类题通常以智能家居为背景例如“智能音箱播放音乐时手机App同时操作暂停音箱状态应该是什么”“智能门锁离线状态下临时密码还能不能正常使用”这类题的本质是考察你对分布式系统和多设备状态一致性的理解。你在分析时可以考虑这几个层面单设备功能是否正常多设备状态是否同步某个设备离线时其他设备的降级处理是否符合预期网络恢复后数据补偿和状态同步机制是否有效异常时序例如A设备操作比B设备快100ms会不会导致状态错乱这种思维不是靠刷算法题就能练出来的需要你平时真的接触智能设备或者至少在真实的App测试中留意类似问题。如果你一道题能想到两三个“别人想不到的异常场景”就会在整套卷子里显得很突出。6.4 从专项题看岗位真实要求拆完这些题目你会发现小米对测开岗位的真实期待是你能够构建一套完整的质量保障体系而不只是会写几个自动化脚本。从功能用例设计到性能专项测试从Android系统机制到IoT联动场景他们希望候选人具备“端到端的质量意识”。这一点在我后来做面试官时体会更深。能通过笔试的高分候选人通常不是八股背得最熟的而是答题时总是能主动补上“异常场景”“边界情况”“监控手段”这些内容的人。这种“风险思维”的底色才是测试开发吃这碗饭的立身之本。7. 工具链与脚本能力笔试中如何展示你的“测试开发”含金量7.1 接口测试的脚本功底requests pytest在笔试的简答或编程题里你很有可能会碰到“如何用Python写一个接口测试”这类题目。这不是让你去写UI自动化而是考察你能否快速把一个接口的请求、断言、报告串起来。下面是一段极简的接口测试脚本用requests写请求、用pytest组织用例import requests def test_login_success(): url https://api.example.com/login payload {username: test_user, password: 123456} resp requests.post(url, jsonpayload) assert resp.status_code 200 assert resp.json().get(code) 0 assert resp.json().get(token) is not None这段代码里最值得注意的细节是断言方式。测试接口不只是断言状态码是200还要断言业务层面的返回值正确。如果你的答案里出现了多个assert说明你平时会关注接口返回的数据准确性和业务字段完整性而不只是“能通就行”。如果你还能补一句“接口测试用例还要重点关注鉴权、参数校验、幂等性、并发情况”这道题基本就稳了。7.2 UI自动化选型框架不是重点原理才是UI自动化的题目通常是选择题或简答题问你“常用的UI自动化框架有哪些”“Appium的原理是什么”。很多人会背出一堆框架名但问到原理就卡壳。Appium的核心原理是它通过WebDriver协议与手机端的Bootstrap/io.appium.uiautomator2 server通信由后者调用系统自带的UI自动化框架执行操作。理解这点很重要因为你在写自动化脚本时经常遇到的“找不到元素”“点击无效”问题本质上都源于你对底层运行机制的理解不够。元素定位策略也是一个高频考点。id、xpath、class name、accessibility id你至少要知道它们的优先顺序。实践里id和accessibility id最稳定xpath最灵活但也最容易因为页面重构导致失效。笔试如果问到“如何提高自动化脚本的稳定性”你可以从这两个角度回答优先用稳定的定位策略并且显式等待而不是固定sleep。7.3 持续集成与质量流程开放题的回答框架小米这类大厂的笔试简答题里偶尔会出现“如何保证上线版本的质量”这类开放式问题。遇到这种题不要慌它没有标准答案但你有标准回答框架。我的回答思路是五层前置阶段需求评审、技术评审把测试风险前置开发阶段静态代码扫描、单元测试、接口联调冒烟提测阶段功能测试、专项测试性能/兼容/安全、回归测试预发阶段线上环境冒烟、灰度发布、流量对比上线后监控告警、日志分析、线上巡检、快速回滚预案要注意的是你回答时不要堆砌概念尽量结合具体的工具。比如提到持续集成你可以说“用Jenkins配置自动化构建提交代码后自动触发接口测试”提到监控你可以说“搭建对核心接口的耗时、错误率监控看板设置告警阈值”。这样整段回答就显得既有框架又有落地。8. 复盘与备考路线这套题背后真正想筛选的人8.1 一张能力模型表如果你把整套笔试题放在一起看它对应的是一个测试开发工程师的五维能力模型能力维度笔试中的体现典型题型编程能力手写代码、数据结构、算法思维链表反转、二分查找、字符串处理计算机网络TCP/HTTP/DNS基础选择题、简答题系统与数据库Linux命令、SQL查询日志统计、SQL手写测试设计用例设计、边界分析、异常场景电梯/手环/购物车用例设计工具与工程化自动化框架、接口测试、流程理解自动化测试简答、持续集成开放题这五个维度不是独立的。笔试时你会发现一道场景题可能同时考察了系统操作和测试设计一道算法题也会要求你补充测试用例。因此备考的时候切忌“只刷算法题”或者“只背测试理论”这两条路都会让你的能力模型失衡。8.2 备考路线建议如果你现在还在准备测开岗位的笔试我建议按这个顺序打地基第一阶段搞定一门语言。推荐Python因为语法简洁、上手快而且测试领域生态特别好。你先做到能不看文档写出一个文件读写、一个列表去重、一个简单的字符串处理。第二阶段学计算机网络和操作系统。不需要像后端开发那样深挖底层源码但要把我前面提到的高频概念掌握到“能用自己的话说清楚并且能和测试场景挂钩”。第三阶段刷算法题。每天两三道重点覆盖数组、字符串、链表、二分、简单DP。做的时候一定要自己写测试用例不要只看答案。第四阶段学测试方法论。等价类划分、边界值分析、场景法、错误推断法这些是测试用例设计的底层理论。配合用例设计题反复练。第五阶段动手做项目。找一个小项目比如一个开源博客系统或一个外卖App从功能测试到接口测试再到UI自动化完整走一遍流程。笔试答题的时候这些实操经验会让你写出来的答案充满细节。8.3 我踩过的坑最后分享几个我自己当年踩过的坑希望你能直接绕开。第一个坑是只刷算法题完全没看专项。我当时花了一周猛刷LeetCode结果拿到卷子后发现网络和Android基础占了将近一半的分算法题反而是最少的。这种准备方向失衡比不准备还危险。第二个坑是笔试时间分配失误。我在选择题上死磕了几道不确定的题导致最后一整道测试用例设计题没写完。后来我学乖了拿到试卷先扫一遍全卷把会做的、拿分稳的题先做完再回头啃那些“有点印象但不确定”的选择题。第三个坑是代码题没写注释。当时我觉得代码能跑就行结果判卷是人工看的没有注释的代码会显得没有工程素养。你们现在考笔试一定要把代码当成要交付的工程代码来写注释、换行、命名规范都要注意。第四个坑是写测试用例时不分优先级。一道用例设计题我写了40多条用例却没有任何优先级标识看起来像是一盘散沙。后来我学会在每条用例后面标注优先级P0/P1/P2这会让你的思路非常清晰也能让判卷官一眼看出你懂质量保障的分层思想。测试开发这条路的门槛从外看不高从里看其实很宽。一套笔试题的价值也不在于压中了多少原题而在于它帮你把“你到底缺什么能力”这个问题摆到了桌面上。我到现在还会经常翻一翻这些经典题型因为很多真实的线上问题本质上还逃不出这些基础知识的组合。如果你正在备考不要迷信什么“内测答案”“题库速通”把基础打扎实把一套用例设计方法论练熟比什么都强。等到笔试时你会感谢此刻认真补基础的自己。

相关新闻