
1. 爱奇艺2019秋招测试开发B卷到底在考什么前阵子整理旧资料翻出了当年爱奇艺2019秋招测试开发方向笔试题B的备份顺手做了一遍复盘。说实话这套题放到今天依然有很强的参考价值因为大厂测试开发的笔试题套路这几年并没有发生本质变化——它考的不是“你会不会点按钮”而是“你有没有完整的测试思维和工程落地能力”。你可能觉得2019年的题已经过时了。我一开始也这么想但仔细刷完才发现这套B卷涉及的考点从编程基础、数据结构、计算机网络到Linux操作、数据库、测试用例设计、自动化测试框架几乎覆盖了现在面试八股文里所有高频主题。换句话说把这张卷子吃透相当于把测试开发岗位的核心知识体系过了一遍。这篇文章我打算以这套题为主线把它串成一份“测试开发笔试通关指南”。不管你是准备秋招的应届生还是想从功能测试转测试开发的老兵都可以照着这个思路去复习。内容上我会拆解题目背后真正想考察的能力然后给出每一类考点的复习重点和实战技巧最后再聊一聊怎么把这些知识应用到真实的项目测试里。我个人的感觉是笔试题其实是最诚实的东西它不会跟你讲情怀也不会画饼就是直白地告诉你——这个岗位需要你具备哪些硬技能。所以对待真题态度应该是“榨干它”而不是“做一遍对答案就完事”。2. 题目结构复盘计分项藏在“基础题”里2.1 B卷的整体题型分布爱奇艺这套B卷的题型结构和大多数互联网公司的测试开发笔试题比较接近大致可以分为以下几块单选题/多选题覆盖计算机网络、操作系统、数据库、测试理论等基础概念题量不小讲究的是知识面广度和准确度。编程题一般会有一到两道重点考察代码实现能力可能是算法题也可能是写一个工具脚本。测试用例设计题给一个具体功能或场景让你写出完整的测试用例这是测试开发岗位的“特色题”。简答题/场景题比如“如何测试一个视频App的播放功能”“怎么定位一个偶现Bug”考察的是思路和逻辑。注意一个关键信息B卷通常和A卷是平行卷难度相当但题目不同。所以不要抱侥幸心理想去“背答案”老老实实把每个知识点学扎实比什么都强。2.2 一道典型编程题的命题逻辑举一个我印象比较深的例子这类题目常常以“字符串处理”或“数组操作”为外壳实际上考察的是你能否用代码解决一个具体的测试问题。比如“写一个函数判断一个字符串是否是有效的IP地址”或者“给定一个日志文件统计其中某个接口的调用次数和平均耗时”。这类题目的陷阱在哪里第一边界条件。IP地址的每个部分必须是0-255之间的整数且不能有前导零除非这个部分就是0本身。这些细节如果你光看“判断IP地址”这几个字很容易漏掉。第二输入处理。笔试环境里输入可能自带换行符、空格甚至可能是空字符串。一个健壮的程序应该先做防御性判断。第三复杂度。如果直接写多重循环面试官一眼就能看出你缺乏工程意识。正确做法是先明确约束条件再选择合适的数据结构。所以我的建议是平时刷题的时候不要只追求“通过用例”要养成“先想特殊输入、再写代码、最后自测”的习惯。这个习惯会在笔试和面试手撕代码环节给你加很多分。2.3 选择题覆盖面有多广选择题虽然分值不大但往往是决定你是否能进面试的“隐形门槛”。因为笔试总分就是由这些小题累加出来的基础题错多了编程题再强也拉不回来。我自己统计了一下近三年大厂测试开发的笔试题选择题的高频考点集中在这几个方向计算机网络TCP三次握手、HTTP状态码、DNS解析过程、HTTPS的加密流程。操作系统进程线程区别、死锁条件、虚拟内存、进程通信方式。数据库SQL基本语法、索引原理、事务四大特性、隔离级别。测试理论黑盒白盒测试方法、测试用例设计原则、Bug生命周期、缺陷等级划分。Linux常用命令、文件权限、日志查看、进程管理。这些内容没有什么捷径就是“反复刷题整理错题本”。我当年有一个笨办法每做错一道题就把这个知识点在《软件测试》教材和网络博客里找出来写一篇50字的总结存到备忘录里。刷完30套题之后这个备忘录就成了我的个性八股文手册。3. 测试开发的“硬核知识底座”八股文怎么背才有效3.1 测试理论从“会背定义”到“能答场景”为什么测试理论是笔试必考因为它决定了你能否用专业语言表达测试行为。比如“黑盒测试”和“白盒测试”的区分很多人背得滚瓜烂熟但题目一换场景就懵了。我建议复习测试理论的时候把每个概念都对应到一个真实场景里去理解等价类划分比如一个输入框要求1-100的整数那么1、50、100、0、101就是典型的等价类示例。边界值分析还是1-100的例子0、1、100、101就是边界值其中0和101是无效边界。因果图法适合条件组合复杂的场景比如“登录时用户名正确且密码正确才能登录成功”。场景法从用户操作流程出发设计用例比如“用户下单-支付-发货-收货”的全链路。这样复习有几个好处第一笔试中出现“请设计测试用例”时你脑子里有现成的思路框架第二面试时被问到“你怎么测这个功能”你不会只回答“用等价类、边界值”而是能直接说出具体的输入和预期结果。面试官最讨厌的就是说了一堆术语却拿不出一个实际例子的人。3.2 计算机网络抓大放小优先拿下分数大头计算机网络在笔试题里的地位非常高但我发现不少同学复习时容易陷入两个极端要么只看概念不深入要么死磕TCP拥塞控制的每个细节。我的建议是把时间花在“高频得分点”上TCP三次握手和四次挥手必须能手画状态图并且能解释为什么是三次而不是两次。HTTP和HTTPS的区别重点是SSL/TLS握手流程因为大厂很关注安全性测试。HTTP状态码2xx、3xx、4xx、5xx的常见场景特别是301/302、401/403、500/502/504。输入URL到页面展示的完整过程这道题几乎是面试必问笔试也可能出成排序题或简答题。我在复习这个板块时有一个技巧把所有协议相关的知识点写成一张“时间线”。比如访问一个网站先DNS解析然后TCP连接接着发送HTTP请求服务器返回响应浏览器解析渲染。每一步涉及什么协议、什么数据、可能出现什么问题串起来之后整个网络知识就活了不再是一堆孤立概念。3.3 Linux与数据库测试开发的双手如果说测试理论是思想那Linux和数据库就是工具。笔试题里Linux考得最多的是文件操作ls、cd、cp、mv、rm、find、grep。权限管理chmod、chown要能看懂-rw-r--r--的含义。日志查看tail -f、head、less、awk、sed。进程管理ps、top、kill、netstat。数据库部分则聚焦在SQL书写和索引原理。笔试题里最常见的就是“给定两张表写出查询语句”以及“什么情况下索引会失效”。这里有一个容易被忽视的点很多测试开发岗位后续要做接口测试而接口测试必然涉及数据库数据校验。所以SQL不能只停留在select还要会insert、update、delete以及多表联查和子查询。笔试不一定会考到这么深但面试手撕SQL时非常容易遇到。4. 测试用例设计这道“送分题”为什么还有那么多人丢分4.1 从“登录功能”看测试用例的完整维度笔试题里最常见的一道“送分题”是请针对“登录功能”设计测试用例。听起来很简单对吧但很多人的答案只有三五条输入正确的用户名密码能登录、输入错误的提示失败、为空时提示。这种答案在笔试里基本只能拿一半分。完整的登录功能测试用例至少应该覆盖以下维度功能测试正确登录、错误密码、用户不存在、账号被锁定、密码大小写敏感。界面测试页面布局是否正常、错误提示是否友好、密码是否密文显示。兼容性测试不同浏览器、不同操作系统、不同分辨率、移动端和PC端。安全测试SQL注入、密码是否加密传输、验证码有效期、失败次数限制、会话超时。性能测试多用户同时登录、服务器响应时间、数据库连接池是否够用。异常场景断网时点击登录、服务器返回500、数据库连接超时、重复点击提交按钮。易用性测试Tab键能否切换输入框、回车能否提交、记住密码功能是否有效。看到没当你在考场能写出这种维度的答案哪怕没有特别华丽的词藻阅卷的人也能一眼看出你是有测试思维的人。而“测试思维”正是测试开发工程师最核心的竞争力。4.2 用例设计题的高分答题模板我总结了四步答题法分享给你第一步明确被测对象。把功能拆解成若干个输入项和交互动作。第二步逐项使用等价类和边界值覆盖正常和异常场景。第三步补充非功能测试维度包括兼容性、安全性、性能、易用性。第四步列出优先级。不是所有用例都同等重要P0级别的用例必须是核心功能和数据安全相关的。我当年笔试的时候就因为用了这套模板在用例设计题上拿了高分。面试官后来在技术面时还特意提到说我的用例组织方式“像一个有经验的人写的”其实我只是在考前把模板练熟了而已。4.3 场景题比如“如何测试视频App的播放功能”爱奇艺是做视频的所以它的笔试题里很大概率会出现视频相关场景。这类题目表面考的是用例设计实际上考的是你对业务的理解。以“视频App的播放功能”为例我的答题思路是正常播放点击视频能加载、能播放、能暂停、能拖动进度条、能全屏。网络切换WiFi切到4G时有提示弱网环境下是否卡顿断网时是否显示错误提示。清晰度切换标清/高清/超清/蓝光的切换是否生效切换后是否从头播放还是续播。异常处理视频加载失败是否有重试按钮播放过程中来电是否暂停。数据统计播放时长是否正确上报退出播放时进度是否保存。兼容性不同机型、不同系统版本、Android和iOS、平板和手机。性能首帧耗时是否在可接受范围内播放过程中内存占用是否持续增长长时间播放是否发热。这个思路其实是从“用户全流程”出发的从点击视频入口开始到加载、播放、交互、退出每一个环节都可能出问题。你用这个框架去答任何功能场景题都不会偏题。5. 编程题与自动化脚本笔试里真正的分水岭5.1 为什么说编程能力决定你的上限平心而论测试开发这个岗位对编程的要求不像纯开发岗位那么苛刻但绝对比功能测试高出好几个档次。因为日常工作里你要写自动化测试脚本、搭测试框架、写测试工具甚至要二次开发开源平台没有代码能力寸步难行。笔试题里的编程题通常不会出特别偏的算法更常见的是字符串处理、数组操作、文件读写、排序去重这类“工程型题目”。但正因为题目本身不难反而更能暴露出一个人代码习惯的好坏。变量命名是否清晰、有没有写注释、边界条件处理是否到位、代码结构是否合理这些都是考官关注的点。5.2 一道经典题目统计日志中接口的调用次数和平均耗时假设有一个日志文件每一行格式是2023-05-01 10:00:00, /api/v1/user/info, 120ms 2023-05-01 10:00:01, /api/v1/user/info, 150ms 2023-05-01 10:00:02, /api/v1/order/list, 200ms要求统计出每个接口的调用次数、平均耗时并输出平均耗时最大的前N个接口。这道题考察的就是Python的基础能力和工程习惯。一个干净利落的实现方式是这样的import csv from collections import defaultdict def parse_log(file_path, top_n5): stats defaultdict(list) with open(file_path, r, encodingutf-8) as f: reader csv.reader(f) for row in reader: if len(row) ! 3: continue api row[1].strip() cost_str row[2].strip() if not cost_str.endswith(ms): continue try: cost int(cost_str.replace(ms, )) except ValueError: continue stats[api].append(cost) result [] for api, costs in stats.items(): result.append({ api: api, count: len(costs), avg_cost: sum(costs) / len(costs) }) result.sort(keylambda x: x[avg_cost], reverseTrue) return result[:top_n]这段代码看起来简单但有几个细节值得注意使用defaultdict(list)省去了手动判断key是否存在的麻烦。对每一行做了防御性校验不满足格式的就跳过避免脏数据导致程序崩溃。使用csv.reader而不是直接split(, )因为csv模块对字段分隔的处理更可靠。最终使用sort加key参数排序而不是手写排序算法。这就是工程型的写法。哪怕笔试环境里不允许你运行代码考官看到你写成这样也会觉得你是认真写过脚本的人。5.3 自动化测试脚本从“读代码”到“写代码”笔试之外自动化测试能力更多会在面试环节被考察。但有些公司会在笔试题里让你“写一个简单的自动化冒烟测试脚本”或者是“使用Selenium定位一个元素”。这里我强烈建议你在复习阶段亲手写过至少一个完整的自动化测试demo。比如用PythonSelenium写一个打开百度、搜索关键词、校验搜索结果页的脚本。这个demo不需要很复杂但它能帮你把以下知识点串起来WebDriver的初始化与浏览器驱动配置。元素定位id、name、xpath、css selector。等待机制显式等待和隐式等待的区别什么时候用哪个。断言怎么校验操作结果是否符合预期。测试报告怎么把结果输出成HTML。写过一个demo之后再去看什么Page Object模式、数据驱动、关键字驱动你才会有真正的体感而不是听了一堆名词却不知道在说什么。6. 测试开发学习路线一份可复制的三个月冲刺计划6.1 第一阶段第1-2周打地基兼顾笔试和面试这个阶段的目标是把测试理论、计算机网络、操作系统、Linux、数据库这五块基础课快速过一遍。我建议的学习方式是“以题带学”每两天做一套测试开发方向笔试题做完之后不管对错把所有涉及的知识点标记出来然后回到教材或博客里查漏补缺。比如你今天做了一套题错了两道网络题和一道数据库题那这两天的复习内容就是把TCP和UDP的区别、三次握手四次挥手重新看一遍把SQL的join和子查询练一遍。这样“做题-纠错-补课-再做题”的循环效率比单纯看书高得多。6.2 第二阶段第3-6周主攻编程与自动化有了基础之后把主要精力放在Python和自动化测试框架上。Python方面重点掌握列表/字典/集合等内置数据结构、文件操作、异常处理、装饰器、面向对象基础、常用的标准库os、re、json、requests。自动化测试方面至少要学会Selenium WebDriver做Web UI自动化、requestspytest做接口自动化、unittest或pytest做单元测试。每学一个工具就配套写一个小项目。比如学了requests就写一个“调用公开API校验状态码和响应字段”的小脚本学了pytest就把之前的脚本改造成pytest用例加上fixture和参数化。6.3 第三阶段第7-10周刷真题与模拟面试到了这个阶段你的知识框架已经成型接下来就是“实战演练”。每天雷打不动做一套笔试题做完之后总结错题然后找朋友或者自己对着镜子模拟面试。模拟面试的重点不是背题而是练习“把知识讲清楚”的能力。比如“请介绍一下你做过的最有技术含量的测试工作”你要能在三分钟内讲清楚项目背景、你的角色、遇到的难点、怎么解决、最终效果。这个表达框架比单纯背八股文重要得多。6.4 第四阶段第11-12周查漏补缺与心态调整最后两周不要再去啃新知识了把之前整理的所有错题本和笔记拿出来反复看。保持每天做一套题的手感但不对分数焦虑。我真实的体会是秋招是一个“实力心态”双重比拼的过程。笔试挂了不要紧谁还没挂过几次呢关键是每次挂完之后能不能从题目里总结出自己缺什么然后针对性补上。把每一次笔试都当成一次免费的学习诊断心态会好很多成长也会快很多。7. 面试阶段的延伸从笔试题到“AI测试开发”新趋势7.1 笔试题之外的“隐藏考点”笔试过了之后面试才是真正的筛选环节。很多面试官喜欢从你的简历里挑一个项目往深里问而测试开发岗位的面试问题往往围绕这几个方向展开你做过的测试项目中最复杂的一个Bug是什么你们团队的自动化测试覆盖率是多少怎么保证用例的稳定性接口自动化测试中如何处理接口依赖和参数传递如果线上出现了一个偶现问题你会怎么排查性能测试遇到过哪些坑怎么分析性能瓶颈这些问题没有标准答案但你笔试阶段积累的那些测试用例设计思路、Linux排查命令、SQL查询技巧都会成为你回答问题的素材。所以千万不要觉得笔试考完就算了它只是面试的知识储备阶段。7.2 聊聊AI测试开发风口下的新机会这两年“AI测试开发”这个概念很火也出现在不少公司的JD里。它并不是要求你去做算法而是指用AI工具和技术来提升测试效率比如AI自动生成测试用例。AI辅助定位Bug根因比如智能分析日志。AI驱动的UI自动化通过视觉识别来定位元素。通过大模型分析需求文档自动生成测试脚本。如果你有余力我建议在简历里增加一个和AI相关的测试实践比如“使用大模型自动生成接口测试脚本”或者“基于图像识别实现UI自动化的探索”。哪怕只是一个小的demo也比空泛地说“我了解AI测试”更有说服力。但请记住AI测试开发是加分项不是必选项。基础扎实、能独立写测试框架、能把项目讲清楚这才是面试官最看重的底层能力。别为了追热点而荒废基本功本末倒置。7.3 一个通用能力如何看懂并快速上手一个陌生项目最后分享一个我在实际工作中觉得特别重要的能力——快速熟悉一个陌生项目。作为测试开发你大概率会频繁接触到新项目、新模块甚至新框架。面试官也很喜欢问“给你一个从没测过的系统你怎么入手”我的固定回答思路是先看需求文档和接口文档明确业务逻辑。再搭起本地环境自己把核心链路跑通一遍。然后梳理出被测系统的架构图搞清楚数据流向和外部依赖。最后针对核心模块设计测试用例优先保证P0场景的覆盖。这个思路同样适用于笔试中的“场景设计题”。不管题目换成视频App、电商下单、支付系统还是消息队列你都可以用这套框架去组织答案。8. 写在最后一些真心话我见过不少同学刷了大量笔试题背熟了所有八股文但在面试的时候还是被刷下来。差在哪里呢差在“思考深度”。笔试题只是门槛真正让你脱颖而出的是你不仅知道测试用例要覆盖哪些维度还能说出为什么这些维度重要你不仅会写自动化脚本还能说出脚本在什么情况下会不稳定以及怎么解决你不仅知道TCP三次握手还能把它和接口测试的超时重试机制联系起来。所以我的建议是刷题的时候多问自己一个“为什么”。这道题考察的是什么能力如果我是面试官我会怎么追问这道题的答案背后对应的实际工作场景是什么想清楚这些问题你做一道题的效果顶别人做十道题。再说一点关于爱奇艺2019秋招B卷这类旧真题不要抱着“考过就不会再考”的心态。题库会变但考点不会大变。你把它当成一张“能力地图”沿着地图上的知识点一点点补齐自己的短板这套卷子对你的价值就远远超过那几道题本身。最后想对正在备战秋招的朋友说一句测试开发不是一个“点按钮”的岗位它需要你既懂业务又懂技术既细心又有大局观。这个过程没有捷径但每一步都算数。加油题可以不会但态度和学习能力一定要有。