
收到闪送测试开发岗的笔试通知是在一个工作日的晚上。当时我刚结束手上的回归测试任务点开邮件看到“在线笔试邀请”几个字心里先是一紧随后又觉得意料之中。同城即时配送行业对时效、高并发和异常场景的要求出了名地苛刻测试开发岗考察的重点和普通后端岗的笔试题根本不是一回事。我花了两个晚上把闪送的业务模式、核心链路和测试开发岗的常见考点重新过了一遍最后在规定时间内完成了笔试。整体走下来我的感受是闪送这套笔试题考察的范围很广但每个模块的深度其实都在可控范围内。它不像大厂通用卷那样堆算法难题而是更看重你能不能站在一个测试工程师的角度去理解业务、设计用例、排查问题。这篇文章我就把这次笔试的复盘完整写下来从题型构成、时间分配到具体的算法示例、用例设计思路、八股考点再到AI工具在测试开发中的实际应用都会展开聊。无论你是准备投闪送还是想了解测试开发岗笔试到底考什么这篇内容应该能帮你少走不少弯路。1. 投递这个岗位之前我先拆了一下闪送的业务底牌很多人收到笔试通知就直接开始刷题我建议你先别急。搞清楚这家公司靠什么赚钱、核心系统长什么样比多刷两道题管用得多。笔试题目虽然不会直接问你“闪送的商业模式是什么”但几乎所有业务场景题都脱胎于公司的真实业务。1.1 即时配送的“时效性”是测试的第一座大山闪送主营的是一对一急送核心卖点就是一个“快”字。用户下单后系统需要在极短时间内完成派单、骑手接单、取件、送达这一整个链条。这种业务模式映射到测试上最直接的体现就是凡是跟时间挂钩的功能边界条件都会非常敏感。比如“预计送达时间”的计算如果配送距离刚好卡在某一个阈值上时间预估到底是按哪个档位算超时了是算骑手责任还是算用户侧异常再比如订单的“超时未接单自动取消”逻辑倒计时到最后一秒刚好有骑手点了接单这个并发冲突怎么处理我在笔试前梳理闪送的核心链路时做了一张简单的业务草稿标注出每个环节的关键节点。这个动作在后面做用例设计题时帮了大忙——很多看似简单的功能一旦放进“跑在真实路况上、同一秒有数万单在流转”的前提里测试点就完全不同了。1.2 测试开发岗和普通测试岗的考察区别这里想提醒你一个容易被忽略的点测试开发岗笔试和纯功能测试岗笔试考察侧重点有明显差异。纯测试岗更关注用例设计能力、业务理解能力和BUG敏感度而测试开发岗在此基础上还会重点看你有没有代码功底、有没有搭建测试工具或测试平台的能力、能不能通过自动化脚本或性能测试手段去解决测试效率问题。所以闪送的笔试题里算法题虽然不会像后端岗那么难但一定会出现。而且算法题的场景往往和数据处理、订单流转、状态判断有关考察的是你在“写代码”和“测试这份代码”之间的切换能力。这个特点在后面的笔试内容里体现得淋漓尽致。1.3 为什么说“不懂业务的测试开发”容易挂在这套卷子上从我后来自我复盘的体会来看闪送这套笔试题有一个隐形的筛选逻辑它不看你背了多少八股而是看你在面对一个具体业务问题时能不能像测试工程师一样去分解它。怎么说呢同样是给一个“用户下单”接口懂业务的考生会主动拆分出金额计算、优惠券使用条件、配送地址校验、下单时段限制、重复请求处理等多个维度然后针对每个维度去设计用例。而不懂业务的考生可能只想到“输入参数、看返回结果”这个层面。笔试虽然不考察你对闪送业务有多熟但那种“拆解真实场景”的思维方式完全可以通过你对需求的分析过程体现出来。考察可以概括为算法是门槛业务分析是分水岭测试思维是核心得分点。记住这句话你的备考方向就清晰了。2. 笔试流程与题型分布先摸清分值再动手拿到试卷之后我做的第一件事不是开始做题而是花了几分钟把整张卷子扫了一遍。这是我在多次笔试和面试里养成的习惯——先了解全貌、再分配时间远比闷头做第一题划算。2.1 我记忆中的笔试结构坦白说具体的题号和分值不是每家都会公开我基于自己那次笔试的经验和同批次投递同学的反馈整理了一个大概的分布题型模块大致题量核心考察点建议用时单选题15题左右计算机网络、操作系统、Linux基础、测试理论15分钟多选题5题左右测试工具、自动化框架、SQL语法、边界概念10分钟算法编程题2题字符串处理、数组、状态机、边界条件30分钟测试用例设计题2题等价类、边界值、场景法、业务理解20分钟综合简答题2题左右自动化测试方案、性能测试思路、问题排查链路20分钟以上题型分布不是官方标准答案仅作为你分配复习精力的参考。这个结构其实很典型一张卷子同时考察了你的基础知识储备、编码能力、测试用例设计能力和方案设计能力。四者缺一不可。2.2 我的时间分配策略总时长我记得是90分钟题量不算小。我的策略是先稳拿基础分再攻坚大题。具体执行时我先用25分钟快速做完单选和多选遇到不确定的题目直接标记不恋战。然后花大约35分钟做两到三道算法编程题和用例设计题——这两块是分值重区也是拉开差距的地方。最后再用剩余时间处理简答题如果时间不够就用简洁的提纲方式把核心思路列出来至少保证踩到得分点。这样说起来轻松但实际答题时很容易陷入“选择题纠结症”。我最想提醒你的是别在一道分值一个点的选择题上耗超过两分钟有这时间不如把用例设计题多写两个异常场景。2.3 一个容易被忽视的细节答完检查的优先级很多同学做完就交卷这点我不太理解。我会留出至少五到八分钟做两件检查一是看算法题有没有漏掉极端输入比如空数组、负数、超大数二是看简答题的表述是否把关键术语写清楚。那个英文缩写全称、中间件、大事务、还是慢查询指标随手写上去都会让阅卷人对你的专业度有额外好感。这个细节不决定你过不过但决定了你在同等水平的候选人里是不是更专业的那一个。3. 算法题测试开发岗的算法考察有自己的脾气闪送笔试的算法题整体难度我个人判断是中等到中等偏下。如果你是按LeetCode中等偏难题目去准备那这套题的代码压力反而不大。真正值得琢磨的是题目里“测试设计”的隐藏分。3.1 一道典型的“字符串处理”题回文判断变体我记得算法题里有一道涉及字符串处理的题目本质上是一个回文判断的变体。它描述了一个业务场景给你一个字符串只考虑字母和数字字符忽略大小写判断它是否是一个回文串。这个题目和LeetCode上的“Valid Palindrome”很像属于经典中的经典。但考场上真正考验人的不是算法本身而是你能不能写出健壮的代码。我当时定义了双指针分别从字符串头尾向中间移动遇到非字母数字字符就直接跳过。在循环内部我用的是Character类的API做了大小写统一然后对比两个字符是否相同。public boolean isPalindrome(String s) { if (s null || s.length() 0) { return true; } int left 0, right s.length() - 1; while (left right) { char l s.charAt(left); char r s.charAt(right); if (!Character.isLetterOrDigit(l)) { left; continue; } if (!Character.isLetterOrDigit(r)) { right--; continue; } if (Character.toLowerCase(l) ! Character.toLowerCase(r)) { return false; } left; right--; } return true; }这道题如果只写出主逻辑大概率能拿到基础分。但如果你在代码注释里补充一句“判断条件是跳过非字母数字字符注意大小写处理”这就体现了你考虑测试输入的严谨性。笔试里算法题不只看AC也看代码风格和边界处理这个和测试开发岗位的气质是对齐的。3.2 另一道题大概率和数组、状态判断有关闪送的业务里有大量涉及订单状态流转的逻辑所以我在复习时重点准备了一类题目给定一个数组或一系列状态值判断是否存在某个条件下的连续状态或覆盖区间。这类题目的解法大多依赖排序、双指针或哈希表难度都不算高但需要你把边界条件想清楚。比如“合并区间”这个经典题。如果一个数组代表多个配送时间段要求你合并有重叠的时间段其实就是在处理多个骑手任务时间段是否冲突的问题。def merge(intervals): if not intervals: return [] intervals.sort(keylambda x: x[0]) merged [] for interval in intervals: if not merged or merged[-1][1] interval[0]: merged.append(interval) else: merged[-1][1] max(merged[-1][1], interval[1]) return merged我当时给自己额外加了一个测试思路如果输入为空列表输出应该是空列表还是报错如果两个相邻时间段刚好首尾相连比如[1,2]和[2,3]到底算不算重叠这些你在写代码时可能不会直接体现但面试官如果在后续环节追问你能不能答出来就取决于你有没有测试敏感度了。这正是测试开发岗算法题的特殊之处——不是考你背模板而是考你在编码时会不会主动思考“这个方法在真实场景中会踩到哪些坑”。3.3 代码写不完怎么办保分顺序很重要还有一个很现实的问题两道算法题如果你第二道实在没思路该怎么办我的建议是第一道题务必保证正确性和完整性第二道题即使只是写出了暴力解或者只处理了部分情况也要把大概思路写出来。笔试题阅卷通常会看解题过程和代码结构空着不写一定没分写了至少还有步骤分。另外如果你会用Python遇到处理字符串和数组的题目可以优先用Python写代码量更少、更容易在短时间内调通。但前提是你对这门语言的API足够熟不要在考场上因为忘记某个函数名而卡住。稳妥优先。4. 测试用例设计题这是拉开分差的地方算法题决定你能不能过线的话那测试用例设计题就决定了你能不能拿到高分档。闪送这类公司太看重业务测试能力了用例设计题基本不会是“登录功能”那种烂大街的题目而是会融合进真实的配送或订单业务。4.1 经典真题为“配送费计算功能”设计测试用例这是我印象很深的一道题。题目大概描述了一个场景配送费根据配送距离和所选服务类型计算距离不超过3公里按基础价收费超过3公里后每增加1公里加收固定金额。不同服务类型有不同的基础价和加价标准。拿到题的第一反应很多人会直接列几个正常和异常输入的用例。但如果你想拿高分就一定要用结构化方法去拆解。首先是等价类划分有效等价类要覆盖3公里以内、正好3公里、超过3公里、跨档位的场景无效等价类要覆盖负距离、超长距离、距离为0、配送类型为空等情况。然后是边界值分析3公里这个临界点是必测的另外要考虑3.0公里、2.99公里、3.01公里这三组数据分别落在哪个收费区间。如果接口用整数做距离参数那3.0的浮点边界就是高频踩坑点。再往下是场景法正常下单计算费用、优惠活动叠加时费用计算、极端天气动态调价、用户取消订单后费用回滚等等。把业务场景串起来写成一个一个小案例这个答案就从“及格”变成了“优秀”。以下是我答这道题时的简化用例表格用例编号测试场景输入数据预期结果TC01基础价范围内距离2.0普通配送收取基础配送费TC02恰好等于分界点距离3.0普通配送收取基础配送费不额外加价TC03略超分界点距离3.01普通配送基础费1公里加价注意浮点精度TC04跨多档加价距离7.5普通配送基础费5公里加价向上取整规则需明确TC05异常距离距离-1返回参数异常提示不允许下单TC06极端距离距离9999按接口上限处理或提示超出服务范围TC07多类型并行距离4.0VIP配送按VIP类型对应基础价和加价规则计算TC08并发重复请求同一订单连续点击提交两次仅生成一笔配送费请求幂等这八个用例里TC03和TC08是大多数考生容易忽略的。TC03考察你在边界值上的敏感度TC08考察你有没有并发概念——闪送这种平台下单请求一天成千上万次重复点击、网络重试都是家常便饭幂等性是一定要关注的。4.2 异常场景的挖掘测试思维的高阶表现用例设计题大多数人都能写出一堆“正常场景下输入不同参数”的用例但真正反映出测试设计功底的是异常场景和逆向思维的用例。我在备考时反复训练自己这样一个习惯拿到任何功能描述先把“正常流程”放在一边优先想“哪里会挂”。比如配送费计算我会想网络超时怎么办用户地址没有解析出经纬度怎么办优惠券和配送费同时计算时如果优惠金额大于配送费系统是显示0元还是负数雨天动态加价规则叠加时调用外部天气服务的超时降级方案是什么这些用例在设计题里写出来阅卷人一看就知道你有线上测试经验不是只会背概念的校招生水平。4.3 从“点状用例”到“方案式回答”的提升路径最后想分享一个非常重要的答题技巧不要只把用例一条条列出来而是要把测试策略也写清楚。什么意思呢如果你能在用例列表之前加一段说明比如“本轮测试用例主要采用等价类划分、边界值分析和场景法覆盖正常流程、异常流程和特殊状态流转三个维度”那整份答案的层次感一下就出来了。阅卷人看到的不再是零散的点而是一套有方法论的测试方案。这个思维方式和实际工作中做测试计划、写测试方案是完全对齐的。5. 基础八股Linux、SQL、计算机网络哪些必背不可基础题部分闪送的笔试里出现过不少和实际工作强相关的知识点。这部分没有太多技巧但它决定了你的卷面分数是不是稳。我在考前把高频考点做了分类整理分享出来给你参考。5.1 高频Linux与SQL考点速查Linux命令在测试开发日常工作中使用频率极高笔试的考察方式一般非常直接。考点常见提问方式应对策略查看进程如何查看某个进程是否在运行ps -ef | grep 进程名注意grep本身会出现在结果里端口占用如何排查端口被谁占用netstat -tlnp | grep 端口号先会lsof -i日志定位如何实时查看指定日志文件tail -f 文件名配合grep过滤关键字磁盘与内存如何确认磁盘余量和内存压力df -h查看磁盘free -m查看内存文件查找如何按名称快速查找文件find 路径 -name 文件名文本统计如何统计日志中某关键字出现次数grep -c 关键字 文件或grep wc -lSQL方面考察重点集中在多表联查、分组统计和去重查询。我记得笔试里有类似这样的题给定一张订单表和一张用户表要求统计每个用户的下单数量。核心就是JOIN结合GROUP BY再配合COUNT函数难度不大但如果你不熟悉JOIN的类型差异很容易被多表查询绕晕。5.2 HTTP与TCP相关题目的避坑点计算机网络选择题大多集中在TCP三次握手、HTTP状态码含义、HTTP与HTTPS的区别、DNS解析流程这几个方向。闪送的题目里有几道不是直接背公式就能答对的它们会加入一些干扰信息比如在“TCP建立连接需要几次握手”后面故意补充一个“断开连接需要几次挥手”的选项考察你是否真的理解。HTTP状态码里503这个码需要格外注意。它表示服务暂时不可用一般是过载或维护状态很多同学会和500混在一起。在配送业务中如果高峰期系统过载网关返回503的概率不低测试时就要设计对应的提示和处理逻辑。背概念时多结合业务场景去理解比死记硬背更经得起考场上变形出题。5.3 遇到不会的选择题怎么答不丢分笔试总有那么一两道题让你不确定特别是多选题。我的做法是把明显错误的选项排除掉剩下拿不准的如果确实是多选题不确定的选项尽量不选。你不是在猜答案而是在管理分数。多选少选一般在部分得分规则下不会完全丢分选错反而可能一分不给。这个策略在不同的笔试规则里效果不同但大方向是不确定性高时宁可少选也不要乱选。放在面试里也是同理不清楚的知识点诚实说“了解不深”比硬编一段错误答案要好得多。6. 自动化测试与性能测试从笔试看到岗位的真实工作测试开发岗笔试里自动化和性能测试相关的内容占比不小。闪送的岗位定位很明确不是招一个只会写用例的人而是招能搭建测试基础设施、解决测试效率问题的人。6.1 自动化测试框架选择题背后的考察逻辑笔试里考了很多关于pytest、Selenium、Appium这些主流测试框架的知识点。表面上是考语法和API实际上是在考察你有没有真实的自动化测试落地经验。比如说pytest搭配fixture实现测试前后置操作这在实际项目中是最常用的能力。如果你只是背概念不理解fixture的作用域和yield用法一旦题目换个场景比如“多个用例共用同一个登录状态怎么设计fixture”就很容易答错。这个知识点基本是送分题但需要你真在项目里用过pytest才能答得顺手。Selenium考察的重点一般是元素定位和等待机制。记住一个核心原则优先使用id和data-testid这类稳定定位方式少用xpath去依赖页面结构强制等待要少用显式等待能解决绝大部分元素加载不稳的问题。Appium的考察则偏向于Android和iOS平台差异、真机和模拟器的区别。如果你在复习时时间有限我的建议是pytest的fixture和断言体系优先级最高其次Selenium的定位和等待最后再补Appium的基本概念。这三个技能栈对应了后端接口自动化、Web端UI自动化和移动端UI自动化三个方向也是测试开发岗日常工作的核心内容。6.2 性能测试概念题怎么答才显得专业性能测试相关的简答题在笔试里出现过考察点不外乎并发用户数、响应时间、吞吐量、TPS/QPS这些指标。但如果你只是把这些指标的定义写出来最多得一半分。要拿高分必须把指标之间的关联讲清楚。比如面试官或阅卷人想看到的回答是“在性能测试中我会先确定核心接口的目标TPS比如下单接口要支撑每秒500个请求再通过压测工具逐步加压观察响应时间的拐点同时监控系统CPU、内存、GC情况。如果TPS上不去但CPU已经跑满说明服务端存在瓶颈需要先看代码逻辑和线程池配置。”这样的回答一听就是有实战经验的。因为性能测试本质上不是看指标孤岛而是在不同压力档位下观察系统资源的联动变化找到瓶颈在哪一层。答题时多用“我怎么做分析”的口吻而不是“指标是什么”的口吻得分差距会很大。6.3 遇到不会的框架题怎么不慌选择题里偶尔会出现没有接触过的工具名称比如一些冷门的移动端测试工具或数据Mock工具。这类题不要慌你可以先用“排除法”选出最广为人知的选项因为笔试题大多数情况下不会在冷门工具上为难你。退一步讲即使这道题做错了影响也不大。笔试的卷面是一个整体把这部分时间节省下来保证用例设计题和算法题的质量才是考试的正确策略。7. 现在的测试开发笔试绕不开AI工具和敏捷工程实践和往年相比2023年以后的测试开发笔试有了一些新变化。这些变化不是闪送特有的而是整个行业在AI工具普及之后出现的共同趋势。7.1 从笔试题的变化看AI辅助测试的新常态现在的测试开发岗位越来越看重你在开发全流程中使用AI工具的能力。过去我们聊“测试开发”关注点基本在自动化脚本和测试平台。而现在你细心看最近的招聘趋势就能发现“会用AI辅助开发”“熟悉AI编程工具”已经成了加分项。我在笔试前专门试过用一个AI辅助编程工具从一个项目需求开始让AI辅助完成从需求分析、编码设计到测试用例生成的完整流程。这个过程给了我一个很重要的启发在测试开发岗的笔试和实际工作中AI工具的真正价值不是替你把代码写完而是帮你更快地生成测试数据、补充边界用例、甚至自动生成冒烟测试脚本。7.2 AI生成代码的测试策略也是笔试可能出现的题目笔试的综合题里出现过和“AI生成代码”相关的讨论场景例如如果开发使用AI编程助手生成了一段代码作为测试开发工程师你会如何进行测试这不是天方夜谭而是很多公司正在面临的实际问题。我个人的答案是分三层考虑第一层是合法性检查确认代码是否符合项目规范有没有引入不安全或不兼容的依赖。第二层是测试覆盖策略AI生成的代码往往会出现逻辑正确但边界考虑不全的问题所以边界值用例一定要比平时设计得更细。第三层是重复校验让AI针对同一功能生成多种实现然后对比其行为差异再利用差异点反查隐藏缺陷。还有一点需要注意的是AI生成数据的随机性。如果你用AI来生成测试数据一定要给定格式约束和范围约束否则它会给你一批看似正常、实际不符合字段规则的数据反而增加了过滤成本。7.3 测试开发学习路线从笔试到面试的完整闭环如果你现在还在准备阶段我建议把学习路线拆成三个阶段第一阶段打基础把Linux、SQL、计算机网络、测试理论这四类基石弄扎实不需要深挖但要能脱口而出。第二阶段提代码每天保持一两道算法题的手感重点练字符串、数组、双指针这类题型。同时熟悉pytest和Selenium的基本用法跑通一遍接口自动化和Web自动化的Demo。第三阶段练实战找一个开源项目或自己搭一个简单的业务系统从需求调研到设计测试方案再到编写自动化用例和性能测试脚本完整走一遍。这个过程你如果在简历上写出来比任何证书都值钱。如果时间特别紧比如只剩一周优先保第二和第三阶段因为笔试筛人主要看这两块能力。第一阶段靠突击也能覆盖大部分考点。备考过程中我还发现一个很实用的思路不要只把自己当成“做测试的人”要把自己当成“保证系统质量的工程师”。测试开发的本质就是通过一切手段——自动化、工具链、性能分析、AI辅助——确保交付的系统靠谱。笔试所有题目的底层逻辑都在围绕这个目标出题。想通这一点你看到任何一道题都不会觉得它和岗位无关。现在再回头看闪送这套笔试我的直观感受是它没有刻意刁难人但非常精准地筛选出了“有没有做过事”的候选人。你自己亲手写过测试用例、压测过接口、排查过线上问题和只看过别人的经验贴答题时的底气是完全不一样的。如果你也打算投这个岗位建议别把时间全花在背题上多动手、多复盘比什么都强。