如果你曾经在秋招季同时投过十几家互联网公司,你多半会发现一个现象:同样是“测试工程师”岗位,不同公司的笔试题风格可以差出十万八千里。有的考纯理论,名词解释能写到手软;有的直接甩一段代码让你找bug;还有的恨不得让你把整个业务流程倒背如流。而携程2019届秋招的测试方向专业笔试,属于比较有代表性的一类——它既考察测试基础功底,又非常看重业务理解和实际场景分析能力。这篇文章我想从当年这批题目的考察逻辑出发,聊聊测试方向笔试到底在筛什么样的人,以及如果你现在要准备类似的笔试,应该把精力重点花在哪些地方。
标题里写着“专业笔试-测试方向”,意味着这套题不是通用行测,也不是纯编程题,而是专门为测试岗位设计的专业能力考察。它背后有一个很实际的需求:招进来的人至少能看懂业务、能写用例、能排查问题,而不是只会背概念。所以整个笔试的命题思路,基本上是围绕“测试思维”这个核心展开的。
1. 携程这套笔试题的出题逻辑:从OTA业务反推考察点
先说一个重要结论:携程的测试笔试题,大概率不是随便从题库里抽的,它是带着业务基因的。携程是OTA(在线旅游平台)领域的头部公司,核心业务覆盖机票、酒店、火车票、旅游度假、商旅等,这意味着它的测试工程师日常面对的是订单、支付、库存、价格、退款、优惠券这类高复杂度业务逻辑。因此笔试命题时,自然会偏向那些能反映候选人是否具备“业务测试思维”的题目。
这个“业务测试思维”到底指什么?我用一个例子来解释。如果给你一个“用户下单购买机票”的功能,一个只有基础测试知识的人,写出来的用例可能是:输入出发地、目的地、日期,点击查询,验证结果是否正确。但一个有业务测试思维的人,会额外想到这些场景:
- 出发地和目的地相同时,系统是否给出明确提示?
- 单程票和往返票在价格计算上是否一致?
- 婴儿票、儿童票、成人票的税费规则是否不同?
- 航班经停和中转的场景下,行程单如何展示?
- 支付超时后订单状态如何流转?是自动取消还是保留?
- 退改签规则在不同舱位等级下如何差异化展示?
这两种人之间的差距,就是秋招笔试想要拉开的差距。所以,携程的测试卷子里出现大量“业务场景分析”和“测试用例设计”类题目,一点都不意外。
1.1 为什么说携程笔试尤其看重业务理解能力
很多应届生在准备测试笔试时有个误区,觉得只要把《软件测试》课本里的等价类、边界值、判定表背熟就行了。但这类知识只是工具,不是目的。你最终是要用这些工具去解决真实业务场景中的问题。
携程这类OTA公司的业务链条非常长,从用户搜索、比价、下单、支付、出票/出房,到售后、退改、投诉,每一个环节都有大量的分支逻辑。如果测试人员不理解业务,写出来的用例只是停留在“输入是否合法、输出是否正确”这种表面层次,很难发现深层次的逻辑缺陷。所以笔试很可能会直接给你一个业务模块的描述,让你找出可能的异常场景,或者设计一套完整的测试方案。
我当时印象比较深刻的是,题目里经常会出现“订单状态流转”的场景,比如“已支付订单在出票失败后,系统应当如何处理”。这类题目看似是业务题,实际上在考你两个能力:一是你对状态机模型的理解,二是你能不能站在用户角度思考问题。
1.2 携程笔试中业务考察的具体题型推测
虽然我们无法还原当年那套笔试题的每一道原题,但从春招秋招的历年反馈和测试岗位的通用考察逻辑来看,携程测试笔试中的业务类题目大致可以分为三档难度。
第一档是“场景识别题”。题目会描述一个用户操作,让你判断测试时应该关注哪些点。这个档次的题相对基础,只要有一定的测试思维和产品Sense,基本能答得差不多。
第二档是“用例设计题”。给你一个具体功能点,比如“携程APP上的酒店筛选功能”,要求你写出完整的测试用例。这个档次的题考察用例设计方法的综合运用能力,边界值、等价类、异常流、兼容性都要考虑到。
第三档是“缺陷分析题”。给你一个线上问题或一个Bug描述,让你分析可能的原因、影响范围以及如何设计测试来避免此类问题。这种题是最能拉开分差的,因为它需要的已经不光是测试知识,还包括逻辑推理能力和对系统架构的基本认知。
2. 测试基础理论题的得分要点:概念不用死背,关键是会用
任何测试方向的笔试都跑不掉理论基础题,携程也不例外。但同样是考理论,不同公司出题的深度和侧重很不一样。携程的题给我的感觉是:概念题占比不高,但一旦出现,就喜欢结合实际场景来问。
比如,它可能不会直接问你“什么是等价类划分法”,而是给你一个“注册页面要求输入手机号”的场景,让你用等价类方法设计测试数据。或者给你一个“登录接口需要验证用户名密码”的需求,让你分析这个接口的测试要点。这种问法其实比死记硬背要友好得多,因为它考的是你“能不能用起来”。
2.1 用例设计方法论在这套题中的应用逻辑
用例设计是测试笔试中绝对的高频考点。理论上有等价类划分、边界值分析、因果图法、判定表驱动法、正交试验设计法、场景法等,笔试中不可能每个都考,但等价类+边界值几乎是必考的,因为这两个方法最能体现测试人员的基础功。
就携程这类业务复杂的企业而言,他们会尤其关注你对“边界值法”在真实场景中的运用。举一个当年比较经典的例子:搜索机票时,日期选择范围通常是当天起至未来365天。边界值分析在这里要考虑的就是:
- 选择当天日期,是否正常可查?
- 选择第365天,是否正常可查?
- 选择第366天,系统是否提示超出范围?
- 选择昨天,系统是否提示日期不能早于今天?
- 如果日历控件的起始日期是动态计算的(比如跨年时),会不会出现判断逻辑上的Bug?
这类题并不难,但很能反映一个人的细致程度。如果你能在答题时把边界条件和系统提示语都写清楚,给面试官的印象分会明显不一样。
2.2 关于缺陷生命周期和管理工具的考察深度
另一个基础理论常考点是缺陷管理。你至少需要知道Bug从发现到关闭的完整流程:提交、指派、修复、验证、关闭,以及可能出现的中途状态如重新打开、延迟处理、拒绝等。携程这类大型企业会使用内部或第三方的缺陷管理平台,但流程的本质是相通的。
备考时建议弄明白几个常见问题:严重程度和优先级的区别是什么?一个低严重度但高优先级的Bug该不该优先处理?线上紧急Bug的处理流程和普通迭代Bug有何不同?这些问题在笔试中出现时,往往不是一个孤立的概念题,而是会搭配一个实际的Bug描述让你去判断。
3. 业务逻辑场景题:把订单、支付、退款这类流程变成你的得分点
如果你想在携程测试方向的笔试里拿高分,业务逻辑场景题是你必须啃下来的部分。这类题的比重往往不小,而且答得好不好,直接决定你能不能进入面试环节。
为什么大厂尤其爱考这种题?因为测试工程师日常工作的核心,就是验证业务逻辑的正确性。如果说开发工程师是“造东西”的,那么测试工程师就是“找毛病”的。假设你连业务逻辑都理不清,你怎么可能找得出毛病的所在?
3.1 从订单状态机看懂携程的系统逻辑
OTA系统的核心是订单,围绕订单有一整套状态机机制。订单可能经历的状态包括:待支付、已支付、出票中、已出票、已取消、退票中、已退款、改签中、已完成等。每一个状态之间的流转条件、触发动作、异常处理,都是测试要重点关注的地方。
笔试中如果出现这类题,你可以从以下维度去拆解:
- 正常流:用户下单—支付—出票—出行—完成,每一步触发什么操作?
- 异常流:支付成功但出票失败怎么办?系统是自动退款还是等待客服介入?
- 并发场景:同一订单被用户和客服同时操作,会不会出现状态覆盖?
- 超时场景:支付超时后锁定库存是否释放?优惠券是否退回?
- 消息通知:每个状态变化,用户是否收到短信/App推送通知?
如果你是测试负责人,你会如何设计这些场景的测试方案?把每个维度展开成具体的测试点,就是一个非常完整的答案框架。
3.2 价格与优惠计算的实测思路:怎么找优惠叠加的Bug
携程这种OTA平台,天天和价格、优惠券、会员折扣打交道,价格计算是最容易出Bug的高危区。笔试中如果出现类似“优惠券叠加使用”的需求,你首先要想到的是判断逻辑,比如满减门槛是否先于优惠券使用、不同优惠券类型是否互斥、会员折扣与优惠券是否可以同时享受、退款时优惠券是否返还。
这类题目最有价值的地方,在于它训练你“组合思维”。一旦优惠规则超过两层,组合数量就会爆炸式增长,单纯靠手工测试很难覆盖完整,这时候就体现测试设计能力了。你可以在答卷里提到“借助判定表法分析规则组合,再针对核心组合执行自动化回归”,这是大厂比较认可的思路。
3.3 数据库校验在业务场景题中的隐性考察
很多测试方向笔试的考生在准备时有明显短板:重功能、轻数据。但像携程这种业务系统,很多Bug其实藏在数据库层面,光看页面是发现不了的。所以业务场景题背后,往往隐藏着对数据库知识的考察。
举个例子:测试一个“取消订单”功能,页面上显示订单已取消,但是不是真的取消了?你需要去数据库里查订单状态字段是否更新、库存是否回滚、支付流水状态是否变化。如果这些数据层面的校验没做好,就会留下非常严重的数据一致性问题。笔试中如果出现“取消订单后,发现用户优惠券没有返还”这类场景,你至少应该想到去检查优惠券表中该券的状态以及关联的订单号是否已经解绑。
4. Linux、数据库与编程基础:测试笔试里的硬通货
即便是在“专业笔试-测试方向”这样偏业务的考试中,Linux命令、SQL和编程基础仍然会占一定篇幅。这并非刻意刁难,而是因为测试工程师在实际工作中,每天都在和这些工具打交道。你不会用Linux看日志,线上问题怎么定位?你不会写SQL,测试数据怎么构造和校验?你不会一点编程,自动化测试脚本怎么写?
4.1 携程笔试中Linux常见命令的考察方式
Linux考察的方向非常明确:日志查看、进程管理、文件操作、权限管理。面试官不指望你连Shell脚本都写得飞起,但基础的排查命令必须信手拈来。
列举当年备考时我认为必须掌握的几类命令:
| 场景 | 常用命令 | 备注 |
|---|---|---|
| 查看日志文件尾部 | tail -f app.log | 实时跟踪日志输出 |
| 按关键词搜索日志 | grep -i "error" app.log | 配合tail -n使用效果更佳 |
| 查看进程 | `ps -ef | grep java` |
| 端口检查 | netstat -tlnp | 查看端口占用情况 |
| 文件查找 | find /opt -name "*.log" | 按文件名定位 |
| 查看磁盘空间 | df -h | 排查磁盘满导致的服务异常 |
| 文件传输 | scp file user@host:/path | 常见于部署测试环境 |
| 权限修改 | chmod +x script.sh | 赋予脚本执行权限 |
笔试中这类题通常有两种问法:一种是直接给你一段日志,问你如何定位某个报错;另一种是给你一个排查场景,问你用哪些命令组合来解决。记住一个原则:答命令的同时,把“为什么要用这条命令、在什么阶段用”说清楚,得分率会高很多。
4.2 SQL题:重点不是背语法,而是会查业务数据
SQL几乎是测试笔试的稳定考点。尤其是携程这类强业务属性的公司,日常测试要经常通过数据库来准备测试数据、校验数据一致性、清理脏数据,所以SQL能力是刚需。
从考察范围来看,你不需要掌握特别复杂的存储过程或者游标,但以下技能得过关:
- 单表查询:
SELECT、WHERE、ORDER BY、LIMIT - 聚合统计:
GROUP BY、HAVING、COUNT、SUM、AVG、MAX、MIN - 多表关联:
JOIN(特别是LEFT JOIN和INNER JOIN的区别) - 子查询:
IN、EXISTS,以及NOT IN可能带来的陷阱 - 数据更新与删除:
UPDATE、DELETE,务必记得加WHERE条件
笔试中典型的SQL题是:“查询某个月份预订量最多的前10个酒店”,这需要用到GROUP BY、ORDER BY和LIMIT的组合;或者“找出所有下单但未支付的用户”,这需要多表关联或子查询。你要练的不是语法本身,而是“看到业务需求,能翻译成SQL语句”这种能力。
4.3 编程题要不要花大力气准备
携程测试方向笔试中的编程题,整体难度一般不会超过LeetCode的简单到中等水平。常见的形式有:字符串处理、数组操作、简单算法(排序、查找)、以及一些逻辑题。测试岗的编程题通常不是为了筛出算法大神,而是为了确认候选人具备基本的代码阅读和编写能力。
对准备秋招的测试同学,我的建议是:不用陷入刷难题的泥潭,但一定要把手写代码的基本功练好。特别是“给定一个字符串,判断某个条件是否成立”这类题目,出现的概率很高。
还有一点需要注意:测试岗的编程题有时候会结合测试思维来考。比如给你一段代码,让你找出其中的Bug并写出测试用例;或者给你一个函数,让你用等价类和边界值设计测试数据。这种题比纯算法题更值得花时间准备。
5. 自动化与专项测试知识:储备深度决定你的上限
携程2019届秋招笔试题里,自动化和专项测试的占比应该不会太大,但一旦出现,往往是用来区分“只懂黑盒手工测试”和“具备测试开发潜质”的候选人的。
这个区分逻辑很容易理解:现在的互联网大厂,测试团队的核心要求是“提升测试效率”,纯手工点点点的时代已经过去了。如果笔试中你表现出对自动化测试框架、接口测试、性能测试、安全测试这些方向完全不了解,大概率会被认为发展潜力有限。
5.1 接口测试与自动化框架的基础认知
测试方向笔试中,如果考到自动化或接口测试,通常不会要求你写一个完整的自动化框架,而是考察你对核心概念的理解。比如:
- HTTP请求中
GET和POST的区别及适用场景? - 接口测试中如何验证返回结果的正确性?
- 什么是
session、cookie、token,它们在接口测试中的作用? - 你了解哪些自动化测试工具和框架?它们各自有什么优缺点?
- Appium和Selenium的适用场景有什么区别?
这些题目考的不是你会不会写代码,而是你有没有做过真实的测试项目。如果你在简历里写过“熟悉Appium自动化测试”,那至少要能说清楚它的原理是“通过WebDriver协议驱动手机端的自动化”,并能描述一个完整的测试脚本从启动到断言的执行流程。
5.2 性能测试和安全测试的基本常识
性能测试和安全测试在大厂测试笔试中偶尔会出现,但考察深度通常不会太深。像携程这种高并发业务场景,性能测试确实是重点方向,所以笔试可能会涉及一些基础概念,比如响应时间、吞吐量、QPS(每秒查询数)、并发用户数、压力测试和负载测试的区别等。
安全测试方面,你至少要知道常见的Web安全问题,比如SQL注入、XSS跨站脚本攻击、CSRF跨站请求伪造、越权访问等。笔试如果问“如何测试一个登录接口的安全性”,你需要能想到:弱口令是否被拦截、登录接口是否有防暴力破解机制、密码传输是否加密、返回信息是否过多暴露服务器细节等。
5.3 移动端测试和兼容性测试的考点
携程作为一家OTA公司,移动端App是核心用户入口,因此测试笔试中对移动端测试的关注度不低。App测试相比Web测试,多了很多特有的考点:安装卸载、升级兼容、前后台切换、弱网测试、中断恢复(来电、短信、通知栏)、不同机型分辨率适配、系统版本兼容等。
如果是测试方向笔试,可能会给你一个“携程App在弱网环境下的表现”这样的场景,让你设计测试方案。这时候你最好能想到:模拟弱网的工具(如Charles模拟限速)、弱网下的页面超时提示、请求失败后的重试机制、断网恢复后的数据一致性校验等。这些答案不需要特别复杂的理论,但要体现出你真的有移动端测试的经验或思考。
6. 考场上的做题顺序和答题技巧:别让会的题丢分
最后一个部分,我想聊聊考场上的实战技巧。这也是我在准备秋招时踩过坑、后来才逐步总结出来的经验。很多人笔试挂掉,不是因为知识点不会,而是因为时间分配和答题策略出了问题。
6.1 拿到卷子后的5分钟决策清单
测试方向的笔试卷子通常包含选择题、判断题、简答题、用例设计题和编程题,题量不小,时间往往只有90分钟到120分钟。如果拿到卷子就从头开始按顺序做,很容易在前面耗时过多的简答题上卡住,导致后面的用例设计和编程题没有时间完成。
我的建议是,拿到卷子先花5分钟把全部题目过一遍,做一个快速分类:
- 第一优先级:会做的选择题、判断题、基础概念题。这些题花费时间短,回报率高,优先拿分。
- 第二优先级:用例设计题和业务场景分析题。这类题分值大,但不需要特别严谨的代码逻辑,关键是能把思路写完整。
- 第三优先级:编程题。如果编程能力强,可以提前做;如果编程是弱项,至少留出15到20分钟写一版能跑的代码。
- 时间黑洞:一时想不起来的简答题,先跳过,不要在上面耗尽时间。
6.2 用例设计题和简答题的“结构化回答法”
再分享一个非常重要的答题技巧:凡是简答题和用例设计题,务必用结构化方式作答,不要写成一整段话。
举个例子,如果题目是“请设计携程APP中‘机票+酒店’套餐购买的测试用例”,你不要想到哪里写到哪里,而是按顺序展开:
- 功能测试:搜索条件、套餐组合、价格展示、下单流程、支付流程、订单生成、短信通知。
- 接口测试:价格查询接口、下单接口、库存扣减接口、支付回调接口。
- 兼容性测试:不同手机型号、不同操作系统版本、不同分辨率下显示是否正常。
- 异常场景:库存不足、支付超时、航班取消、酒店满房、优惠券失效。
这样分条作答有一个额外的好处:阅卷人能在短时间内看到你的思路是否完整、逻辑是否清晰。即使个别点答得不够深,整体印象分也会明显高于那种写了一大段、但看不出结构感的答案。
6.3 编程题的临场取舍
如果编程题实在做不出来,也不要留白,尽量写上部分思路。比如你可以写出关键的数据结构定义,或者伪代码,或者写出第一步的输入处理逻辑。很多阅卷标准中,思路正确是可以给步骤分的。
另外,编程题一定记得考虑边界条件。测试方向的编程题,阅卷人很喜欢看你有没有处理边界输入。比如输入为空、输入包含负数、输入只有一个元素等等。哪怕代码主体部分有Bug,只要边界条件处理到位,也能体现出你的测试思维,这是测试岗和开发岗阅卷标准上的一个微妙差异。
写在最后的经验之谈
说到底,携程2019届秋招专业笔试-测试方向这套题,反映的是大厂测试岗位的真实能力诉求:懂业务、会用例、能写代码、会查数据、了解自动化。如果你只把它当成一次笔试来突击,那准备的过程就会浮于表面;但如果你把它当成一次测试职业能力的全面体检,每一道错题都是提升自己的机会。
当年我在准备类似笔试时,最大的一个教训是过分专注于刷概念题,结果在业务场景题上吃了个哑巴亏——看到题目描述“用户购买了两张机票,其中一张因航班取消需要退改”,我当时没联想到合并订单、分摊支付、部分退款这类真实业务逻辑,回答得就很浅。后来我把OTA系统的核心业务流程梳理了一遍,再来应对这类题就顺多了。希望正在准备秋招测试岗位的你,也能从我的这段经历里获得一点参考。