ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

2019快手测试岗笔试题深度拆解:从基础到思维的完整备战路线

2019快手测试岗笔试题深度拆解:从基础到思维的完整备战路线 1. 一份2019年的笔试卷为什么今天还有参考价值先说个很多人都有的误区以为笔试面试题这种东西越新越好2019年的卷子早该扔进回收站了。真不是这样。测试岗的笔试和开发岗有个本质区别——开发岗的技术栈迭代非常快三年前的框架可能已经没人用了但测试岗笔试的核心考察的是知识体系的完备度、逻辑思维的严密性和工程落地能力。这三样东西恰恰不会因为时间推移而过时。2019年快手秋招测试B卷放在今天来看依然是测试工程师校招笔试的典型模板甚至可以说它基本框定了后面几年各大厂测试岗笔试的考察范围。我当时拿到这套题的第一感受是范围很广但深浅有度。它不像一些公司那样堆砌偏题怪题而是把测试岗真正需要的底层能力都覆盖到了——从测试基础理论到Linux操作从数据库到网络协议从自动化工具到代码能力再到测试思维的场景题。基本就是一份“测试工程师能力模型”的清单式考察。尤其值得一提的是这套题对“测试思维”的考察比重相当大。很多同学复习的时候疯狂刷编程题、背八股文结果在测试思维题上栽了跟头这恰恰是校招测试岗最容易被忽视、也最拉分的地方。所以这篇文章我想从头到尾拆一遍这套题结合当年的实际考察方式和现在的行业现状聊聊每个板块到底在考什么、怎么复习最有效、哪些坑需要提前避开。如果你正在准备测试岗的校招笔试无论是快手还是其他大厂这套题的含金量都值得你花时间认真过一遍。下面我们直接进入正题。2. 看透整套卷子的“考点地图”测试岗笔试到底在筛什么人在看具体题目之前先搞清楚一个更底层的问题快手这样的公司出这套笔试B卷到底想筛出什么样的人测试工程师这个岗位在很多不了解的人眼里就是“点点点”随便一个人培训两周就能上岗。但在大厂的实际工作里测试工程师是产品上线前最后一道防线直接对线上质量负责。一个合格的测试工程师至少要具备四层能力基础的计算机功底、专业的测试方法论、自动化和工程化能力、解决问题的逻辑思维。快手这套卷子就是围绕这四层能力设计的。先从整体结构来看这套卷子基本上涵盖以下几个板块我按分值权重和考察频次排了个序考察板块核心考点考察能力层次测试基础理论测试流程、用例设计方法、缺陷管理专业方法论计算机基础Linux命令、数据库SQL、网络协议底层功底自动化测试Appium、Selenium、接口测试、持续集成工程化能力代码与算法手写代码、逻辑题编程基本功测试思维题场景分析、发散设计、边界条件综合素养这个顺序不是随便排的。从实际笔试的通过率来看测试基础理论是送分题但也是最容易丢分的地方计算机基础是拉开差距的关键自动化测试考察的是有没有真实项目经验代码题是很多测试岗同学的心理阴影而测试思维题则是最能体现一个人“天生适不适合做测试”的试金石。再拆细一点。测试基础理论部分考的不是你能不能背出V模型和W模型的区别而是给你一个实际场景你能不能设计出覆盖全面的测试用例。计算机基础部分Linux考的通常是最常用的命令数据库考的也就是增删改查和join但题目会用一些特殊场景来考察你理解得深不深。网络部分则是HTTP协议、TCP三次握手这类老生常谈但也经常出“输入一个URL到页面显示中间发生了什么”这种综合性题目。自动化测试这个板块最有意思。笔试很少让你直接写自动化脚本而是考察你对自动化框架的理解比如元素的定位方式、等待机制的设计、用例的管理和报告的输出。还会问持续集成怎么和自动化结合起来。这说明什么说明公司需要的不是会背几个API的人而是真正理解自动化测试在工程体系中定位的人。代码与算法部分说实话对测试岗的要求比开发岗低不少。不会考动态规划、不会考红黑树更不会让你手撕AVL。常见的就是数组、字符串处理、简单排序、递归这类基础题。但别掉以轻心基础题也能考出层次感——比如一道看起来简单的字符串反转可以衍生出内存效率、边界条件、输入校验等很多考察点。最后是测试思维题这是整个卷子里最灵活的部分。它可能是一道逻辑推理题也可能是一个开放性的场景设计题还可能是一个“如何测试一把椅子”这种经典题目的变体。这类题没有标准答案但你回答的结构化程度、思维覆盖的全面性决定了你的分数上限。看明白这张考点地图你就会发现这套笔试筛的不是做题机器而是基础扎实、有实战意识、思维清晰的准测试工程师。下面我逐个板块拆解备考要点。3. 测试基础理论送分题背后的“陷阱”最多测试基础理论在整套卷子里占比不低但也是最容易被轻视的部分。很多同学觉得“测试流程谁不知道”结果一拿到题才发现自己以为的理解和面试官想要的理解完全不是一回事。我先列一下这个板块最简单也最容易出现的出题方式给你一个需求描述要求设计测试用例考察等价类划分、边界值分析、因果图、判定表这些用例设计方法测试流程相关比如缺陷的生命周期、测试报告包含哪些要素测试分类比如按阶段分的单元测试、集成测试、系统测试、验收测试按方式分的黑盒测试和白盒测试这些知识点本身不难但笔试题目会出得很“活”。举个典型的例子假设有一个登录功能输入框要求6-16位字母或数字请设计测试用例。这是测试岗笔试里最经典的题目没有之一。很多人拿到这道题就开始写“输入正确账号密码登录成功输入错误密码提示错误……”然后写个七八条就交卷了。但这个答案在阅卷人眼里基本就是不及格的水平。为什么因为这道题考察的核心是等价类划分和边界值分析而且必须覆盖正常流、异常流、边界值、特殊字符、安全性等多个维度。一份完整的用例设计至少应该包括正常流输入合法的6位、16位、中间值比如10位的账号密码验证登录成功边界值5位过短、6位最小合法值、16位最大合法值、17位过长异常流账号为空、密码为空、账号密码都为空特殊字符输入中文、输入特殊符号、#、空格等格式校验纯数字、纯字母、数字字母混合安全性输入SQL注入语句、输入超长字符串导致缓冲区溢出交互逻辑密码输入错误多次后是否有锁定机制、是否有验证码兼容性不同浏览器、不同操作系统下表现是否一致你看一个看似简单的登录功能展开写可以写出三四十条用例。这不是在堆数量而是体现了你的测试思维是否系统化。普通选手和优秀选手的区别往往就在这里拉开了。再来说说缺陷管理。笔试里经常考的是“缺陷报告中应该包含哪些要素”。这个很简单就是标题、前置条件、复现步骤、期望结果、实际结果、严重程度、优先级、附件截图或日志。但有些同学会漏掉“复现步骤”或者“附件”这就是基础不扎实的表现。还有个高频考点是黑盒测试和白盒测试的区别。这个大家都会背但题目经常换个问法“以下哪些测试方法属于黑盒测试”选项里混入语句覆盖、分支覆盖这些白盒测试的方法一不留神就选错了。说到底不是不会而是概念之间没有建立清晰的边界。我的建议是复习测试基础理论不要死记硬背而是拿一个具体的功能比如登录、购物车、搜索框完整地走一遍用例设计流程把等价类、边界值、场景法这些方法实际用一遍。你用过一次就比背十遍概念都管用。另外提一句现在很多公司笔试里会增加一些测试左移和右移的概念题。所谓测试左移就是测试介入的时间提前在需求评审阶段就参与进去测试右移则是上线后继续关注线上监控和用户反馈。这类题在2019年的卷子里虽然不多但在近年越来越常见复习的时候顺着了解一下会有优势。4. 计算机基础Linux、数据库、网络是拉开差距的“分水岭”计算机基础部分是整个笔试里性价比最高的板块。为什么这么说因为它的考察范围非常明确翻来覆去就是Linux、SQL和计算机网络这三样只要认真复习拿分是板上钉钉的事。但同时它也是很多非科班出身的测试同学最头疼的部分。先说Linux。测试工程师日常工作中离不开Linux——查日志、看进程、操作文件、部署环境每一项都需要Linux命令的功底。笔试里最常考的是以下几类文件操作ls、cd、cp、mv、rm、touch、cat、less、tail权限管理chmod、chown、chgrp进程管理ps、top、kill日志查看tail -f、grep、awk、sed网络相关netstat、ping、curl、telnet压缩解压tar、zip、unzip尤其值得注意的是组合用法。笔试题目经常不会直接问“查看文件的命令是什么”而是给你一个场景“线上服务报错了请写出排查日志的命令。”这时候光会tail就不够了你得能写出tail -f app.log | grep ERROR这种组合命令。更高阶一点的还会要求用awk提取特定列、用sed替换文本、用sort和uniq做统计。举个例子一道我印象很深的题有一个access.log每行记录包含IP、访问时间、请求URL、状态码。请统计访问次数最多的前10个IP。这题的解答思路就是用awk提取IP列sort排序uniq -c去重统计再sort按次数反排最后head -10。全命令写出来就是awk {print $1} access.log | sort | uniq -c | sort -rn | head -10这道题本身不难但它考察的不是单个命令的记忆而是多个命令串联解决实际问题的能力。这种能力靠背命令列表是练不出来的必须真的在Linux环境里多操作几遍。再说数据库。测试岗的SQL考察范围非常简单直接增删改查、多表联查、聚合统计、基础排序分页。不会考索引优化、存储过程、触发器这些进阶内容。但就是这些基础内容每年都有很多人丢分。最容易翻车的是这一类题目有两个表学生表student和成绩表score请查询所有成绩大于80分的学生姓名。很多同学一看到就懵了先join再where逻辑绕来绕去最后写出来的SQL要么语法错误要么逻辑错误。其实正确写法很直接SELECT s.name FROM student s JOIN score sc ON s.id sc.student_id WHERE sc.score 80;这道题考的就是多表联查和条件过滤。但我在实际批改中发现很多同学不是不会SQL而是不够熟练——平时写SQL的机会太少一到考场上手生。所以即便你是计算机科班出身也建议考前集中一周每天在本地或者在线SQL练习平台上刷二十道题把常用的语法练成肌肉记忆。最后是网络基础。这个板块的考察范围非常经典几乎就是HTTP协议、TCP/UDP、DNS解析、三次握手四次挥手这几件事。HTTP协议是所有测试工程师的必修课。状态码是必考内容2xx表示成功3xx表示重定向4xx表示客户端错误5xx表示服务端错误。其中404资源不存在、500服务器内部错误、301永久重定向、302临时重定向这些高频状态码的含义必须做到脱口而出。还有一个超级经典的综合性大题请描述在浏览器中输入一个网址并按下回车后整个网络请求的过程。这道题考的是候选人对网络体系的理解程度一个完整的回答应该是浏览器解析URL提取域名DNS解析将域名转换为IP地址浏览器与服务器建立TCP连接进行三次握手浏览器发送HTTP请求请求行、请求头、请求体服务器处理请求并返回HTTP响应浏览器接收响应解析HTML、CSS、JavaScript页面渲染完成连接保持或关闭四次挥手很多同学回答到第4、5步就停了或者把三次握手和四次挥手的过程搞混。这道题丢分的原因基本就两个一是流程不完整二是细节不准确。备考的时候建议自己动手画一遍这个流程确保每个环节的顺序和描述都准确无误。计算机基础这个板块的特点是多而杂但每一项都不深。时间充裕的话系统过一遍教材时间紧张的话就直接刷题把常见题型练熟。对于想拿高分的同学来说这一块是最应该下功夫的因为它的提分速度最快、确定性最高。5. 自动化测试与工具生态笔试问的不是API用法是工程思维自动化测试这个板块在2019年的笔试里主要分布在选择题和简答题中近些年的比重还在增加。它的考察方向和实际操作非常贴近——不问你怎么用某个工具而是问你怎么设计一套自动化的测试方案。我看过不少同学的复习材料大多集中在Appium怎么启动、Selenium怎么定位元素、Python的pytest或者Java的JUnit怎么写用例。这些当然要会但笔试并不会出“请写出Appium启动App的代码”这种题。笔试更关心的是你在宏观层面的理解。举几个高频出题方向自动化测试的适用场景和局限性Web自动化中元素定位的方式id、name、class、xpath、css selector以及优先选择顺序等待机制强制等待、隐式等待、显式等待的区别和适用场景自动化用例的稳定性和数据管理问题持续集成如何与自动化测试结合接口测试和UI测试的区别及各自的定位拿元素定位来举例。很多同学一上来就只知道用xpath但实际项目中xpath的维护成本非常高页面稍有改动xpath可能就失效了。行业内比较推荐的优先级是id优先其次是name、class再考虑css selector最后才是xpath。这个逻辑背后的原因是稳定性id和name一般是开发人员显式定义的轻易不会变化而xpath依赖于页面的DOM结构层级变了就断了。这个细节在笔试怎么考呢给一个HTML片段里面有几个定位属性问你应该用哪种方式定位更合适。知道优先级背后的原理这种题就是送分只会背API的就只能靠猜。再来说等待机制。这几乎是自动化测试面试和笔试里必出的一题三种等待方式的区别一定要说清楚强制等待sleep固定时间等待无论元素是否已经出现简单粗暴但效率低隐式等待implicitly_wait设置一个全局等待时间在查找元素时轮询等待但只能处理元素存在性的等待显式等待WebDriverWait针对某个特定元素设置等待条件和超时时间可以处理元素可见、可点击等复杂条件笔试常出的场景是“页面加载较慢元素需要动态出现用哪种等待方式更合理”正确答案是显式等待因为它在效率和稳定性之间取得了最佳平衡。但很多同学会答隐式等待这其实忽视了隐式等待对页面加载和元素查找的全局影响。关于自动化测试和持续集成的结合考察方向主要是Jenkins配置定时任务、自动化用例在流水线中的触发时机、测试报告的生成和展示、失败用例的自动重跑机制。这一块需要你真正在项目里做过一遍光看文档很难形成体感。有同学可能会问2019年的卷子会不会不考Appium这些工具答案是要考的但考的是理解层面不是应用层面。比如Appium的架构原理客户端通过WebDriver协议与Appium Server通信Server再通过各平台的自动化驱动操作设备、iOS和Android在自动化上的差异class name、权限弹窗处理方式不同等、真机和模拟器测试的区别覆盖面、速度、稳定性。这些内容光刷题是刷不出来的需要你至少搭建过一次完整的自动化测试环境。我说句实在话自动化测试这个板块笔试只是开胃菜真正的考验在面试和入职之后。但笔试阶段能把工程思维体现出来就已经能打败一大半候选人了。备考的时候别只盯着某个工具学多问自己一句**为什么这个工具要这样设计它在整个测试体系中的定位是什么**带着这种思路去复习效果会完全不同。6. 手写代码与算法测试岗的编程题考的是“不出错的能力”很多准备测试岗的同学对代码题有种天然的恐惧觉得“我又不开发为什么要写代码”。实话说这种心态如果不调整笔试大概率会吃亏。我一直认为测试工程师写代码的能力甚至比开发工程师更要求“稳”。开发写错一个逻辑可能上线后才会暴露但测试写错一个脚本可能导致整个回归测试的结果失真比不测还危险。所以测试岗的代码题考察的核心不是你会不会复杂的算法而是在基础问题上能不能一次写对、边界条件覆盖全、代码风格清晰。快手这套卷子的代码题难度上限也就是LeetCode的简单到中等偏下水平。常见的出题方向包括字符串处理反转、去空格、统计字符出现次数数组操作去重、排序、查找最大值最小值基础算法冒泡排序、二分查找、递归求斐波那契数列简单数据结构用数组实现栈、用两个栈实现队列但考得简单不代表容易拿分。我见过太多人写代码的时候不考虑边界条件比如数组为空、字符串为null、数值越界一写就崩。这恰恰是测试工程师最不能犯的错误——一个不考虑异常输入的测试脚本本身就是有缺陷的。举个例子一道看起来很简单的题写一个函数判断一个字符串是否是回文字符串。正常思路是双指针从两端向中间遍历这是标准解法。但你能不能在代码里处理空字符串、单字符串、大小写混合、带空格和标点的字符串如果你的函数一上来就假设输入一定合法那这段代码的质量就打了折扣。笔试阅卷人会根据你的容错意识来判断你的工程素养。再比如数组去重那道题很多人上来就写两层循环时间复杂度O(n²)。这种解法不是不能过但如果你能写出利用Set或者哈希表的O(n)解法并且解释清楚为什么在数据量大的情况下O(n)更优这就能让阅卷人眼前一亮。这不需要你有多深的算法功底只要你有这个意识。还有一点值得提醒笔试写代码千万别只在脑子里跑一遍就交卷。我自己的习惯是写完代码后在草稿纸上手动模拟几个典型输入正常值、边界值、异常值跟着代码逻辑一步一步跑确认没有语法错误和逻辑漏洞再提交。这个习惯在笔试中能帮你避免至少三分之一的低级错误。至于是否需要专门刷算法题我的建议是如果时间充裕LeetCode简单题刷50道中等题刷30道足够覆盖测试岗笔试的代码题范围。如果时间紧就把字符串、数组、基础排序和递归这几类高频题型练熟不要碰动态规划、图论这些进阶内容。说到底测试岗的编程题是“能力下限测试”——不是看你能跳多高而是看你基础够不够稳。心态放平把基本功打扎实这部分的分数是完全可以拿满的。7. 测试思维的场景题答得“全”比答得“准”更重要接下来聊整套卷子里最有趣也是最拉分的部分——测试思维场景题。这类题可能是一道逻辑推理也可能是一个“你怎么测试某功能”的开放题目。它们没有标准答案但通过你的回答阅卷人能判断出你是否具备测试人员最核心的素质结构化思维、发散性思维和批判性思维。先看一个最经典的开放题变体给你一个电梯你怎么测试它我第一次见这道题是在某大厂的一面当时愣了一下脑子里全是“按楼层按钮、看电梯能不能到”回答得毫无章法。后来才明白这种题考察的不是你懂不懂电梯而是你有没有一套系统的测试方法论。一个高分回答应该按维度拆解功能测试楼层按钮、开关门、超载报警、紧急呼叫、楼层显示、运行方向指示性能测试满载运行速度、开关门时间、连续运行的稳定性、高峰期运载效率压力测试超载临界点、连续长时间运行是否过热保护安全测试停电时应急处理、困人故障报警、防火门联动、防夹功能兼容性测试不同类型的用户老人、小孩、残疾人、不同使用场景搬运大件物品、推婴儿车边界测试最顶层和最底层的停靠逻辑、多电梯联动时的调度算法你看一旦按维度拆解思路就清晰了。这个逻辑不仅适用于电梯任何“你怎么测试xxx”的问题都可以套用。笔试和面试官想看到的不是你背出某个标准答案而是你面对一个陌生对象时能不能快速建立测试框架。还有一类思维题考的是逻辑推理能力。比如8个球其中有1个重量不一样其他7个重量相同。用天平最少称几次能找出这个球答案是两次。思路是把8个球分成3、3、2三组。第一次称3个对3个如果平衡则重量不同的球在剩下的2个里第二次称一次就能找出如果不平衡则确定范围在轻的那一组3个里第二次从3个中任取2个称量就能锁定目标。这种题目本身是小学数学思维题但它出现在测试卷里背后是有逻辑的——测试工程师每天都在做类似的“二分定位”工作从大量看似正常的现象中用最少的步骤定位到问题的根因。考的是思维方式不是计算能力。还有一类常见的考察方式是给一段产品描述要求列出需要测试的点。这种题目的关键是思维覆盖的广度。比如给你一个视频App的“发布视频”功能大多数人都能想到测试视频上传、封面选择、文案编辑这些主流程。但高分答案会额外覆盖到弱网环境下的上传行为、视频格式兼容性mp4、avi、mov、超长视频的处理逻辑、存储空间不足时的提示、发布过程中切换后台的处理、重复点击发布按钮的防重处理。这里我分享一个我的独家框架——测试点设计的六个维度可以套用到任何场景题中正常功能用户的常规操作路径是否按预期工作异常处理极端输入、非法操作、系统异常时是否有合理反馈边界条件数据的最大最小值和临界值性能表现响应时间、并发量、资源消耗兼容适配不同设备、版本、分辨率、浏览器安全合规权限控制、数据隐私、敏感信息处理用这个六个维度去套任何场景基本不会漏掉关键测试点。我后来在带团队的时候也是用这个框架去培训新人设计测试用例效果比看教材好得多。场景题还有一个容易忽略的加分项优先级思维。当你列出了一堆测试点之后如果能主动说明哪些先测、哪些后测、哪些可以在时间不够的情况下适当取舍这会让阅卷人觉得你有真实项目的经验而不只是会背模板。比如“核心功能优先回归边缘功能可以放到第二优先级”这样一句话就能体现出你对测试风险控制的理解。8. 针对这套卷子的完整备战路线与实战建议前面拆了这么多最后聊点实在的如果我现在要准备这套笔试我会怎么规划复习。先说时间安排。假设你有一个月的完整准备时间我建议这样分配第一周主攻测试基础理论。把所有用例设计方法过一遍拿登录、购物车、搜索框三个经典功能练习用例设计每天写一道场景题。这一周的目标是把测试基础分拿稳。第二周主攻计算机基础。Linux和SQL重点刷题网络协议理解为主。每天抽两小时动手操作Linux命令一小时做SQL练习题。周末把“输入URL到页面显示”的完整流程画三遍确保流程图烂熟于心。第三周主攻自动化和代码题。搭建一次Appium或Selenium的自动化测试环境跑通一个最简单的自动化用例感受工具的完整工作流程。代码题每天刷3-5道LeetCode简单题重点练字符串、数组和排序。第四周查漏补缺。把前几周的错题重新做一遍找一套近两年的真题模拟考试严格按照笔试的时间限制来。重点练习如何在时间压力下保持冷静合理分配每道题的作答时间。再说做题策略。笔试的时间通常是比较紧张的我自己的做题顺序是先做自己熟悉的、确定能拿分的题目再做需要思考的中等难度题最后啃不确定的压轴题。遇到不会的题不要死磕在做题前先把整张卷子扫一遍对题量和难度做到心中有数。还有一个很多人忽视的细节笔试中的简答题书写工整度和结构化程度真的会影响分数。同样一道测试用例设计题一个答案是一坨文字堆在一起另一个用“正常流、异常流、边界值”分点列出来后者在阅卷体验上高出不止一个档次。哪怕内容一模一样结构化表达也能让你多得几分。最后送大家一个终极备考心法不要只为了通过笔试而复习而是借这次机会真正把测试工程师的知识体系搭建起来。这套卷子之所以值得认真对待是因为它覆盖的内容就是入职之后每天都要用的东西。Linux命令你会天天敲SQL查询你会天天写用例设计你会天天做自动化脚本你会天天维护。笔试只是检验你具不具备这些基本功而真正的成长是在每一次踩坑和复盘之后。祝每一个认真准备的测试er都能拿到心仪的offer。
返回列表