ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

途虎养车测试岗笔试复盘:O2O业务场景与用例设计要点

途虎养车测试岗笔试复盘:O2O业务场景与用例设计要点 2024年秋招我投了途虎养车的测试岗。说实话当时对这家公司的了解仅限于换轮胎、做保养的直到收到笔试通知才开始认真研究它的业务模式。考完之后复盘发现它的笔试题相比纯互联网公司的通用测试题有一个非常明显的差异——几乎所有题目都在围绕线上交易线下服务供应链这条业务链展开。这篇帖子不聊虚的就按我实际拿到的题目类型、踩过的坑、以及后来复盘时想明白的答题思路完整还原一遍。给接下来要投途虎或者其他O2O模式公司测试岗的同学做个参考。1. 途虎测试岗笔试为什么值得单独复盘岗位画像与考点倾向分析先别急着看题目。笔试考什么本质上是由这个岗位要解决什么问题决定的。途虎养车的业务模式和纯互联网公司有区别它做的是汽车后市场的线上线下一体化服务——用户通过App/小程序下单买轮胎、约保养然后到线下门店完成安装和服务。这意味着它的核心系统至少包含三块电商交易系统、门店履约调度系统、供应链库存系统。测试岗要保障的不是某一个App页面能不能打开而是这几套系统之间的数据流转是否一致、异常情况下比如库存超卖、服务券核销失败业务能否兜底。所以途虎测试岗笔试的考察范围我做完之后总结下来就三条主线第一计算机基础是底线但不是漫无目的地考。网络协议、Linux命令、数据库SQL这些属于测试工程师的基本功任何一家公司都会考途虎也不例外。但从题目设置上能感觉到它更倾向于能用来解决实际测试问题的基础能力而不是死记硬背的八股文。比如网络部分重点考察HTTP状态码、TCP握手、接口调用的异常场景很少出现冷门协议的纯理论题。第二业务场景题占比明显偏高。这一点是途虎笔试最有区分度的地方。它会直接给你一个用户在App下单购买轮胎到店安装完成后优惠券没有核销成功这类场景让你设计测试用例、分析可能的原因、给出排查思路。这类题本质上是在考察你有没有用一个用户视角去测试的思维——因为这类问题的根因往往不是单个接口有问题而是多个系统之间的数据一致性出了状况。第三自动化测试和工具链是加分项但不是笔试的核心。热搜词里能刷到大量关于Appium、Jenkins、pytest的内容很多准备测试岗的同学也会把大量精力花在框架学习上。但在途虎笔试的实际卷子里框架相关的题目占比并不高更多是问你如何设计自动化用例的断言接口自动化测试的数据如何管理这类偏思路的问题。真正拉开分数差距的还是Case设计和问题分析能力。我把整张卷子按题型模块拆开看大致分布是这样的考察模块大致题量核心考察方向计算机网络与操作系统15-20题HTTP、TCP/IP、进程线程、Linux常用命令数据库SQL10题左右多表查询、聚合统计、子查询测试理论与用例设计15-20题等价类/边界值、场景法、流程分析业务场景分析2-3道大题电商门店履约场景的Case设计与问题排查自动化与工具5-10题接口测试、框架使用、断言设计看清楚这个结构再去做题就不会被热搜词带偏节奏。下面我按题型模块逐个复盘题目用我印象最深的原题以及变形题来说。2. 从真题出发计算机网络与Linux命令的考核细节这个模块很多同学觉得简单实际上它是整张卷子最容易丢分的地方——因为途虎的提问方式不是粗暴地问请写出TCP三次握手的过程而是给你一个场景让你判断是哪个环节出了问题。这种问法一换背诵型和理解型的差距就出来了。HTTP状态码这道题我记得很清楚。原题大概是用户在途虎App上提交订单后点击支付跳转收银台发现页面空白。此时抓包发现有一个接口返回了302问这个302状态码可能代表什么以及你认为页面空白可能是什么原因导致的。这里有个坑很多同学看到302就脱口而出重定向但这里的追问是重定向之后发生了什么。正常业务流程中302是服务器告诉浏览器你要的资源不在这里去这个新地址请求但移动端App的HTTP库对302的处理策略和浏览器不完全一致——有些原生网络库默认不自动跟随重定向需要开发者显式开启。所以如果服务端把收银台跳转设计成302而App端没有处理跟随逻辑页面就会卡在空白状态。这个考点背后其实是HTTP协议在移动端的最常见差异点。我后来复盘时觉得答题的关键不是背状态码含义而是要说清楚状态码是服务端给的响应约定但客户端如何处理这个约定决定了用户实际看到的结果。类似的变形还有用户下单成功但一直收不到短信通知可能涉及哪个接口的超时设计App冷启动时加载首页推荐位失败返回500这种错误应该在前端怎么兜底展示操作系统部分的进程与线程题也出现了一个很有意思的变形。题目问一个订单超时自动关闭的定时任务在服务器上以什么形式运行如果用多线程去扫描几百万个待支付订单可能会遇到什么问题这题表面上是考进程和线程的概念实际上是在考察你对高并发任务处理瓶颈的理解。正确的答题思路是定时任务通常是一个守护进程内部可能启用线程池来处理任务但几百万订单如果用一条SQL把所有数据捞到内存里再逐条处理内存一定会爆。所以合理的做法是分批查询比如每批1000条、用游标或者基于时间分片扫描同时注意处理过程中数据库连接池的连接数限制。这个题目我后来想起来其实就是测试工程师在性能测试中经常要面对的场景——你在压测一个接口时如果客户端不做并发控制服务端线程池会被打满。Linux命令的考察也很有意思不是直接问命令而是考排查思路。有一道印象很深的题用户反馈途虎App下单后一直转圈测试人员需要登录服务器查看Tomcat/Spring Boot应用的日志你会用什么命令组合如果你要实时监控日志文件的新增内容用哪个命令我当时的答案是先cd /logs/app找到日志目录用tail -n 200 app.log看最近200行然后用grep ERROR app.log | tail -n 50过滤错误最后用tail -f app.log实时跟踪。这个组合基本能覆盖90%的运维问题排查场景。如果往深了说途虎这类业务还会问磁盘空间相关的排查命令——比如日志文件把磁盘打满了怎么办。套路是df -h看磁盘整体使用率du -sh /logs/*定位大文件然后再根据日志策略决定是清空还是切割归档。这个模块给备考同学的提醒是不要只是背命令参数一定要把什么场景下用什么命令用了之后怎么解读输出结果这条链路理解透。测试工作里你面对的是一个黑盒系统日志是你唯一能窥视系统内部状态的窗口排查命令的熟练程度直接决定你定位Bug的效率。3. 测试理论与用例设计题业务场景题的答题套路测试理论这个板块是所有测试岗笔试的基本功考场但途虎的题目明显更偏向给你一个具体功能让你设计测试用例的形式而不是问你瀑布模型和敏捷模型的区别。等价类和边界值分析这道题它给的是途虎App的优惠券功能。原题大致是用户的优惠券面额支持1-200元的整数金额有效期限为领取后7天内使用请用等价类和边界值分析法设计测试数据。这题很基础但得满分不容易。等价类划分有效等价类是1到200的整数无效等价类包括小于1、大于200、非整数、空值。边界值就要把区间边界的开口和闭口搞清楚——如果产品需求写的是支持1元至200元含1和200那么测试数据要覆盖0、1、2、199、200、201以及小数、字母、符号等非法输入。有效期的边界值是第7天当天能否使用、第8天是否已失效、领取时刻和当天0点的时间对比。我当时在有效期这个边界上多想了几个Case比如用户领取时间是6月1日10:00有效期是7天内那么到底截止到6月8日10:00还是6月7日23:59:59这个模糊需求本身就是测试要发现的问题点把它写进用例里反而能说明你有需求分析能力。场景法这道题是途虎笔试里最有业务代表性的。题目用户在途虎App上下单购买四条轮胎选择到店安装服务下单完成后选择附近的途虎工场店并预约安装时间到店后门店确认订单并核销服务码随后进行安装。请基于这个流程设计场景法测试用例。这类题考察的是从用户进入页面到最后完成服务的全链路视角。场景法最重要的是把基本流和备选流画清楚但考试时我们不太可能真画流程图我的做法是按步骤编号描述基本流打开App → 选择轮胎商品 → 下单支付 → 选择门店 → 预约时间 → 到店核销 → 安装完成 → 评价备选流1下单支付后用户主动取消订单系统退款并释放优惠券和库存备选流2到店核销时服务码已过期门店无法核销需要引导用户在App重新获取或联系客服处理备选流3库存不足导致订单超时关闭备选流4支付成功但订单状态未同步到门店系统用户到店后无法查到订单关键得分点在于备选流要覆盖异常情况发生时系统如何保证用户侧和门店侧的数据一致。这一点单独拿出来说是因为它直接对应着途虎这类O2O模式的经典Bug——线上订单状态和线下履约状态不匹配。如果你在用例里能想到支付成功但门店系统未收到订单这种跨系统数据一致性场景面试官就会觉得你真的理解了途虎的业务。还有一个我印象特别深的题给你一个搜索框你会怎么测试它这道题看起来非常初级很多同学的第一反应是输入关键词验证搜索结果是否正确。但实际上它是需求不明确时测试如何澄清需求的经典题。正确做法是先反问需求细节搜索是精确匹配还是模糊匹配是否支持中文分词是否有搜索历史记录搜索结果是分页还是滚动加载是否有搜索频率限制如果没有这些信息就去设计用例等于对着空气射箭。这个模块我的整体感受是测试理论背十遍不如认真拆解一个真实业务场景。途虎的笔试明显在筛选那种能把业务逻辑翻译成测试点的人而翻译能力靠的是日常在做业务测试时积累的思路习惯临时抱佛脚刷题效果有限。4. 数据库与接口测试途虎供应链场景下SQL题的变化数据库是测试岗笔试的必考板块途虎的SQL题虽然没有难到变态但它的场景背景设置非常生活化。几乎每道题都可以在途虎的供应链系统里找到对应。有一道多表JOIN查询的题让我印象很深。题目给了一个简化版的订单表orders字段包括order_id, user_id, store_id, order_amount, order_status, created_at和一张门店表storesstore_id, store_name, city要求统计每个城市的订单总金额和订单数量按订单总金额降序排列。这题的SQL写法是SELECT s.city, COUNT(o.order_id) AS order_cnt, SUM(o.order_amount) AS total_amount FROM orders o LEFT JOIN stores s ON o.store_id s.store_id GROUP BY s.city ORDER BY total_amount DESC;这里有个关键点是要不要用LEFT JOIN。如果订单表中存在某些store_id在门店表中找不到对应记录比如门店已关闭或者下单时门店ID未正确写入用INNER JOIN会导致这部分订单被过滤掉统计结果不准确。测试人员在写SQL验证数据时最怕的就是这种隐式过滤——它让查询结果看起来很正常实际上丢了一部分数据。我当时还写了个变体验证方法先分别查订单总数和分组汇总后的总数对比是否一致如果不一致说明有脏数据或JOIN条件有问题。这个习惯算是测试人员写SQL的防御性思维。聚合函数这道题同样贴近业务。场景统计途虎App近30天内每个用户的下单次数找出下单次数超过3次的用户名单。SELECT user_id, COUNT(order_id) AS order_cnt FROM orders WHERE created_at DATE_SUB(CURDATE(), INTERVAL 30 DAY) GROUP BY user_id HAVING COUNT(order_id) 3;注意WHERE和HAVING的区别是这个题的核心考点——WHERE是分组前过滤HAVING是分组后过滤。如果你想筛选下单次数超过3次的用户只能在HAVING里写这个条件因为分组前的每一行数据是单条订单无法判断用户的总下单次数。这个细节写错整个查询结果就会完全错掉。接口测试相关的题目基本都是考察参数校验与幂等性。有一道问在途虎App中用户点击确认支付按钮后因为网络延迟客户端自动重试了一次结果支付成功扣款两次。你觉得这个缺陷属于哪类问题接口层面的根治方案是什么这道题的本质是考察接口幂等性——同一个请求因为网络重试等原因被多次提交服务端应该保证只有第一次请求生效其余重复请求直接返回上一次处理结果。常见的实现方案是客户端生成一个唯一的request_id服务端在处理请求前先查这个ID是否已存在如果存在就直接返回已处理的结果。测试时我们要验证的点包括正常支付一次、重复提交两次、提交后取消再重新提交、以及高并发下同一个request_id同时到达服务端的场景。这个题在途虎笔试里出现很有代表性——因为订单支付链路是电商业务中最不能出错的环节一旦涉及金额测试的严谨性要求会成倍提高。5. 自动化、车载与智能座舱热门方向在笔试中的真实占比考试前我在热搜词上刷到大量关于Appium、智能座舱测试、车载测试的内容想着途虎养车是汽车后市场的公司会不会车载相关的题目占比很高实际上拿到卷子发现车载相关的题目确实有但占比远没有热搜词渲染得那么夸张最主要的是几道概念性/思路性的题目。有一道自动化测试的题目考的是断言设计。题目用Appium写一条自动化用例验证用户能通过搜索框搜索到米其林轮胎并将搜索到的第一个商品成功加入购物车请问你如何设计断言。这道题的得分点在于断言不能只停留在搜索成功这个层面而要做层级化设计。比如页面层搜索结果页标题是否存在搜索关键词是否回显在搜索框中数据层搜索结果列表的第一条商品名称是否包含米其林关键词交互层点击加入购物车后购物车角标数字是否从0变为1反向断言搜索一个不存在的品牌是否有空态页提示如果只写一个assert 商品名 米其林轮胎这道题基本拿不到分。因为测试用例的价值在于能精准捕获问题而单个断言可能漏掉大量关键状态。车载与智能座舱方向的题目考得比较概念化。有一道问的是智能座舱和传统车机相比对测试提出哪些新挑战这题不需要你实际做过车载项目核心考察思路。我当时从三个层面作答交互层面触摸屏、语音、手势等多种交互并存用例设计需要考虑组合操作系统层面Android系统定制、系统升级OTA带来的兼容性问题安全性层面行车过程中任何功能都不能干扰驾驶安全所以测试要有用安全优先级排序的意识这个答题逻辑其实可以迁移到任何智能终端的测试理解上。即使没有车载项目经验把思路捋清楚面试官就能判断你是背过概念还是有分析框架。自动化框架这块题量极少但有一个点值得提醒。卷子里提到pytest和Jenkins但问法不是pytest的fixture怎么用而是你们项目的自动化测试如何集成到持续集成流水线里如果某个用例偶发失败你会怎么处理。这个问法其实在考察自动化稳定性的处理思路——偶发失败是自动化测试最大的敌人涉及等待时间、并发冲突、环境依赖等问题。遇到这种题回答的落点应该放在如何通过重试机制、稳定性优化、定位分析来降低脆性而不是单纯强调框架本身有多强大。所以我的结论是备考途虎这类公司的测试岗自动化框架的API用法知道就行但断言设计、数据管理、稳定性处理这些实战中的细节问题才是笔试和面试更容易拿分的地方。6. 考试实战时间分配、做题顺序与失分点复盘笔试整场下来时间大概90分钟题量不算少而且中间的Case设计题非常耗时间所以我考完最大的感受是如果你按试卷顺序从头做到尾很可能会在大题上挤占了太多时间导致最后模块的题目来不及做。这个模块分享一下我自己的做题策略和失分复盘。合理时间配比建议我自己做完之后的反思是按分数权重大致估算计算机基础和数据库这种客观题占40%左右的分数但它们的解题速度是最快的应该控制在25-30分钟以内。测试理论和自动化选择题是纯概念和思路题大概20分钟。剩下所有时间都应该留给Case设计题——这类题分值高、打分弹性大你多写一个完善备选流的Case可能就比别的候选人多1-2分在秋招这种竞争环境里最后的录取可能就是靠这几分的差距拉开。做题顺序上我有一个明确的建议先把Case设计题做了。为什么因为Case设计题考察的是思路完整性你想得越细写出来的内容越多越容易拿高分。而它又是最怕时间不够的模块——如果你只剩10分钟去写一个10个Case的设计方案基本上拿不到什么分。相反如果先把Case题写完了再回头做客观题哪怕时间紧一点靠常识判断和快速排除也能拿一部分分。这是分数收益最大化的策略。失分点复盘之一SQL题的表名写错了。我印象很深有一道SQL题我写表名时直接用了实际业务的表名比如orders但卷子里给的字段名略有不同我按记忆里常见的字段名直接写了结果应该是丢了几分。做这类题时一定要每个字段名对着题干检查一遍这个习惯在真实工作场景中同样重要——直接从生产环境抄SQL时字段名错一个字母查出来的数据全是错的浪费大量排查时间。失分点复盘之二边界值分析少考虑了下单数量的边界。优惠券金额那道题我自认为考虑得已经很细了但复盘时发现漏了一个维度——如果用户使用了多张优惠券组合支付那每一张券的金额边界和总抵扣金额的边界都属于边界值设计的范围。这个维度虽然题干没有明确说多张券的场景但把它写进去会让答案的完整度明显上一个档次同时也能反映你对业务的理解比其他候选人深一层。最后一个提醒笔试中写的每个字都可能在面试中被追问。途虎的面试官大概率会拿着你的笔试答卷问你当时为什么在这个场景设计了这个备选流你是如何考虑这个边界值的。所以笔试不是写完就完了建议在答卷提交前把每题的设计思路在草稿纸上做个简单标记考完之后自己复盘一遍用文档梳理一份笔试思路说明这比事后回想要靠谱得多。我在复盘时就是这样把每道Case题的思考链路又过了一遍后来面试时被问到你笔试提到的库存超卖场景具体怎么测试我能一口气答出验证前置校验、确认生产环境唯一索引、数据补偿任务三个层面。这个准备方式算是笔试真正带给我最大的收获。
返回列表