尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

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

系统测试工程师笔试考点全解析:从Linux到数据库的网络与基础

系统测试工程师笔试考点全解析:从Linux到数据库的网络与基础 上周末整理移动硬盘翻出了2016年春天准备京东实习生招聘时的笔试记录。说实话那会儿“系统测试工程师”这个方向对很多应届生来说还比较陌生大部分人更愿意投研发岗愿意转过头来看测试方向的人反而不多。但正是这份笔试让我把测试从“随便点点页面”的认知拉回到计算机系统测试内容本身——原来这个岗位的选择题能考得这么细、这么扎实每一道题背后都对应着实打实的工程能力。这篇文章写给两类人。一类是打算投测试开发、系统测试方向实习或校招的同学你可以把它当成一份考点地图照着查漏补缺另一类是已经入行但想补一补理论底子的测试工程师看看当年的考察重点和现在的面试思路有哪些连上了。我会按选择题的考察模块逐个拆解同时补充这些题目背后对应的实际工作能力这样你刷题的时候就不只是背答案而是真的知道它在问什么。1. 2016年那张卷子到底在考什么先说总体印象。整张卷子以选择题为主题量不算小涉及的范围却相当克制没有偏题怪题也没有纯考记忆的冷门概念所有题目都围绕“计算机系统测试”这条主线展开。当时不少人以为系统测试工程师的选择题就是考测试理论什么等价类划分、边界值分析之类拿到卷子才发现远远不止这些——操作系统、Linux命令、数据库、计算机网络都占了相当篇幅。这说明一个事系统测试工程师要面对的是一个完整的系统而不是某一个函数或某一个页面。被测对象是前端、后端、中间件、数据库组成的整个链路测试人员如果不懂系统底层的运行机制遇到问题连排查方向都找不准。所以笔试题覆盖面广不是故意为难你而是这份工作真的需要这样的知识结构。1.1 选择题占比背后的信号那次笔试的选择题占了绝对大头后面还有少量主观题和应用题。选择题多意味着考查的广度优先于深度——招聘方想在有限时间内快速了解一个候选人的知识面是否完整。测试是一个特别讲究“木桶效应”的岗位理论薄弱、数据库不熟、网络不通任何一块短板都会在实际测试过程中变成阻力。所以选择题这种形式很适合用来筛掉“只会测试理论但没有系统知识”的人。另外选择题还有一个隐性考察点时间分配。题量大、每题分值不高如果在一道题上卡太久后面会非常被动。这个细节在后来的实际工作中也很常见——测试执行阶段永远有时间压力如何在有限时间内覆盖更多关键路径本身就是一种测试能力。1.2 从实习岗位JD反推考点布局投简历之前我仔细读过京东系统测试工程师实习生的岗位描述核心要求总结起来是熟悉测试流程和用例设计方法了解Linux和数据库基础具备良好的沟通与问题定位能力。把这些要求翻译成考点恰好就是卷子上的几个大块。岗位要求对应考点考察方式测试流程与用例设计等价类、边界值、场景法、缺陷生命周期场景化选择题Linux与操作系统基础进程、内存、文件操作、日志查看命令和概念判断数据库基础SQL查询、事务、索引基本概念语句和结果判断计算机网络基础TCP/IP、HTTP、DNS协议行为理解逻辑与问题定位基本逻辑题、测试思维题推理和实际场景结合这个对照表当年帮我省了很多力气。后来我带实习生也经常用这个思路帮他们梳理知识体系——不要零散地刷知识点先想清楚目标岗位要求什么再按图索骥去补效率会高很多。2. 我印象最深的选择题模块逐个拆解这一部分我把当年卷子里的重点知识模块展开来说。由于时间过去比较久具体题号记不全了但考察的知识点和出题思路我记得很清楚下面给出的示例题型也侧重于“这一类题该怎么想”供大家参考。2.1 测试理论与用例设计送分题和送命题都在这里测试理论部分是大部分同学相对熟悉的但恰恰是熟悉的地方最容易丢分。比如等价类划分很多人知道要分有效等价类和无效等价类但一到具体题目就会漏掉边界条件。我记得那类题有个典型考法一个输入框要求输入6到18位字母或数字问下面哪个测试用例组合最优。看起来很简单实际上考了两个要点一是有效等价类只要覆盖一个典型值就行二是无效等价类必须逐个覆盖长度为5位、19位、包含特殊字符这三种情况都不能少。这个思路在做题时容易漏因为大家习惯性地把“有效”和“无效”各想一个就完事了忘记了无效等价类要“一个原则对应一个用例”。边界值分析也几乎是必考。最小值、最大值、刚好小于最小值、刚好大于最大值、以及中间的正常值这五个点是考察的标准模板。工作中设计登录框、分页参数、金额输入这些场景时这套方法每天都在用。所以我建议准备这类笔试题时不要只背定义动手写几个测试用例把输入条件、预期结果都列出来过一个星期再拿出来看理解会完全不一样。缺陷生命周期也是高频考点。New、Open、Fixed、Rejected、Closed、Reopen这些状态的流转逻辑题目喜欢考“当开发认为不是缺陷时应该如何处理”。这个问题的标准答案是提交给测试负责人或项目组评审决定而不是直接关闭或强行让开发修改。这个知识点看起来简单但后面进了项目组会发现它是协作流程的基础处理不好很容易在团队里引发矛盾。2.2 Linux与操作系统考验平时有没有真用过Linux命令在系统测试笔试题里占了不小的比重。为什么测试工程师要考Linux因为被测系统绝大多数部署在Linux服务器上出了问题第一件事就是上去看日志、看进程、看端口。当年考得比较多的命令包括ps看进程状态、grep过滤日志、tail动态跟踪日志文件、netstat查看端口监听、top查看系统负载。这些命令不需要多高深但需要真的在服务器上操作过而不是只在书本上看过示例。有个题我印象很深大概意思是某个服务的端口起不来给你一串命令让你判断最可能的原因。选项中涉及netstat -anp | grep 8080、ps -ef | grep java、tail -f catalina.out、df -h这些命令的用途。其实考的就是你是否知道排查顺序先确认端口有没有被占用再确认进程是否存在再看日志报错再看磁盘空间是否满了。我后来在实际测试中遇到的端口冲突问题排查路径几乎完全一样。操作系统部分侧重进程线程、死锁、内存管理的基础概念。比如进程和线程的区别、死锁产生的四个必要条件、发生死锁后怎么处理。这些内容大学课程里都学过但笔试考的是理解和应用不是背定义。我记得有一道题是给你一个场景两个线程同时访问共享变量问可能出现什么问题。这个其实已经带有一点并发编程的味道了测试工程师懂得这些写用例时才会想到并发场景也才能在压测时理解为什么高并发下会暴露那些奇怪的问题。2.3 数据库看你会不会查数据、看数据数据库必考而且考得很实际。系统测试中大量验证工作都需要查数据库来完成比如验证订单状态是否正确、用户积分有没有到账、活动配置有没有生效。笔试题里的SQL题通常不难重点在掌握基本的select、where、order by、group by以及多表查询的join。我记得有一道题是给两张表一张用户表和一张订单表要统计每个用户的订单数正确答案就是select u.name, count(o.id) from user u left join order o on u.id o.user_id group by u.id。这道题考察了两个易错点一是要用left join而不是inner join因为没下过单的用户也要统计出来二是group by后面要写u.id而不是u.name因为按姓名分组有可能把同名的用户合并到一起。关于索引选择题里考过一个经典的“什么时候索引会失效”的题目比如对索引列使用函数、使用like %xx%模糊查询、隐式类型转换这些情况。这道题放到现在的面试中依然高频因为索引失效直接影响查询性能而性能问题在系统测试中经常要靠慢查询日志和explain分析定位。数据库事务ACID属性也是必考概念重点是理解事务隔离级别可能带来的脏读、不可重复读、幻读问题。系统测试中涉及支付、库存这类强一致性场景时事务相关知识能帮你在测试用例设计阶段就想清楚并发异常路径。2.4 计算机网络系统测试绕不开的底层逻辑网络协议的题目出题人显然默认你学过计算机网络。TCP三次握手和四次挥手几乎是必考的但题目不会让你背状态转换而是给你一个实际场景客户端访问一个HTTPS页面过程中涉及哪些协议。正确思路是DNS解析域名、TCP建立连接、TLS握手、HTTP请求响应这样一个链路的分析能力。系统测试里排查接口超时问题时就经常需要用这个知识链路判断瓶颈在哪一层。HTTP状态码也是高频考点而且特别喜欢结合场景来考。比如访问一个不存在的资源返回404服务器内部错误返回500请求参数错误返回400重定向返回302未认证返回401。我当时整理过一个表格把常见状态码和典型业务场景对应起来后来做接口测试时发现这个表格特别实用断言接口返回是否符合预期时第一步就是看状态码。另一个容易考的点是Cookie和Session的区别。一个典型例子用户登录京东后关闭浏览器再打开为什么还是登录状态答案涉及Cookie在客户端的持久化、Session在服务端的存储以及超时机制。做系统测试时登录态失效、会话过期这类问题特别常见理解Cookie和Session机制后设计测试用例时自然会覆盖“长时间停留后操作”“同一个账号多处登录”这些场景。3. 从笔试题延伸到系统测试的实战思维把题拆完你会发现一个规律那些选择题表面上在考知识点实际上在考一个测试工程师对系统的整体理解能力。这里我以电商业务为例把系统测试的实战思维具体展开看看笔试内容和工作场景是怎么连起来的。3.1 电商下单场景里的系统测试全链路假设你负责京东商城“提交订单”这个功能的系统测试测试范围远不止前端页面上的那个“提交订单”按钮。用户点击按钮之后请求会经过网关、订单服务、库存服务、支付服务、优惠券服务等多个环节任何一个环节出问题都会导致下单失败或数据不一致。所以设计测试用例时就要分层次考虑前端的交互和校验、接口的参数和异常处理、服务的幂等性、数据库的数据一致性、超高并发下的系统表现。用笔试题里的边界值方法来举例下单数量这个字段有效范围可能是1到99。测试时除了验证1和99这两个边界还要验证0和100的异常提示是否友好是不是返回了明确的错误信息而不是一串看不懂的异常堆栈。再看数据库层面下单后订单表和库存表的数据要同时更新成功如果一个成功一个失败就产生了数据不一致——这对应事务ACID里的原子性。笔试里考的这些知识点在真实测试场景中全都用得上而且远比试卷上的题目复杂。从2016年的笔试题能看出来京东招聘系统测试工程师时已经很看重这种全链路的意识。试卷里虽然只是一道道孤立的选择题但每个选项都在暗示你学过的Linux、数据库、网络、测试理论实际工作里不是割裂的它们会同时在一次下单测试中交织出现。3.2 环境、数据和问题定位笔试里不会明说但天天在做的活笔试很难考察但工作中极其重要的一件事是测试环境维护。系统测试需要在独立于生产环境的测试环境里执行环境里要部署服务、准备测试数据、配置网络策略还要保证环境不被其他人干扰。我刚实习时有一半的时间在跟环境问题做斗争服务起不来、数据被改、端口冲突被这些问题拖慢进度是家常便饭。笔试里的Linux命令和网络知识很大程度上就是为这些场景准备的。另一个工作日常是问题定位。测试执行过程中发现一个bug优秀的测试工程师不会直接甩给开发而是先自己排查一轮。看后端日志、查数据库记录、复现最小路径这些动作能显著提高沟通效率和问题修复速度。我记得当时配合的一个测试老手拿到一个问题会先看请求参数、再去查日志、最后才决定提不提bug单。这套方法看起来很朴素但非常有效笔试里那些“给出一段命令判断排查顺序”的题其实就是在筛选具备这种习惯的人。3.3 缺陷管理从选择题到团队协作缺陷管理在笔试题里只是一道状态流转的选择题但在实际工作中它是测试人员每天都要做的事情。一个规范的缺陷单应该包含问题描述、复现步骤、实际结果、预期结果、涉及版本和模块、日志和截图。信息越完整开发和测试之间的沟通成本越低。写缺陷单还有一点容易被忽视尽量把复现路径拆到最简。比如某个功能在A页面操作三步后崩溃那你要确认是不是每一步都必要能不能跳过中间操作直接触发。这个过程本身就是测试思维训练笔试里那些“最优测试用例组合”的选择题和如何高效复现bug、如何最小化复现步骤底层逻辑完全一致。4. 这套2016年的题放到现在备考还有多少参考价值现在回过头看2016年的题我的结论是基础部分参考价值很大但只刷当年的题远远不够。4.1 一直没变的考点理论知识、SQL、Linux、网络基本功测试理论、SQL、Linux、网络这几块在今天的系统测试面试中依然是核心。因为技术栈会变、业务会变但这些知识是支撑整个测试工作的地基。不管被测系统从单体架构变成微服务还是从物理机迁移到容器化部署你排查问题的手段仍然离不开Linux命令和数据库查询你设计用例的方法仍然离不开等价类和边界值。我经常跟新人说基础越扎实后面学自动化、学性能测试、学测试平台的效率就越高因为这些进阶内容全都建立在这些地基之上。所以如果你现在准备测试岗位的校招或实习把2016年这类真题当作基本功训练材料完全没有问题尤其是测试理论、逻辑思维那一类题目多做几遍能帮你形成稳定的解题思路。4.2 明显变化的部分自动化、持续集成、性能、容器化2016年的时候行业对实习生的自动化要求还不算高笔试题里自动化相关的比重很小。但现在的测试岗位自动化已经成了标配至少你要熟悉接口自动化测试的流程、掌握一种脚本语言、了解持续集成的基本概念。系统测试也越来越多地和容器化、分布式架构绑定相应地容器基础命令、服务发现、配置中心这些知识也开始出现在面试中。这些都是当年的笔试题里没有的。另外性能测试在当年的实习生笔试里几乎没有涉及现在如果有相关实习经历或课程项目会是一个突出优势。我建议备考的同学梳理知识时在原有基础上再加上四块自动化测试框架、持续集成流程、性能测试概念、容器基础操作。技术方向在变化但学习的底层逻辑没变——还是先明确岗位要求再倒推知识清单最后逐一攻破。5. 我当时备考这套题踩过的坑最后分享几个我自己备考时踩过的坑不一定是标准答案但都是用真金白银换来的经验。第一个坑是只刷题不总结。我一开始刷了好几种测试理论题速度很快正确率也还行但过一个星期再回看发现错的题还是错同一类。后来我每道错题都写一句话解析写清楚“为什么错、正确思路是什么、以后遇到类似题怎么判断”效果立竿见影。备考不只是为了那一场考试这个过程训练的是持续复盘的能力测试工作本身就是不断复盘、不断沉淀。第二个坑是轻视Linux操作题。笔试里Linux大多是选择题所以一开始我只背命令参数含义没去实际操作。后来我在虚拟机里搭了一套环境把日志查看、进程排查、端口检查这些常用操作调了几遍才发现以前“背下来”的命令和“会实操”之间差距有多大。你可以在自己的电脑上用虚拟机装一个Linux环境也可以用云服务器搭一套重点是动手做不要只看书。第三个坑是忽略“为什么”。很多选择题的答案你是能凭记忆选出来的比如“边界值分析法适合验证输入边界”但如果追问一句“为什么边界最容易出错”可能就答不上来了。面试官很容易从这个角度深挖。后来我每次刷题都会多问自己一个为什么比如“为什么left join能保留未匹配的行”“为什么测试用例要考虑无效等价类”把这个为什么想明白了题目怎么变都不怕。第四个坑是时间分配。我第一遍做这套卷子时在几道数据库题上纠结了很久导致后面的问题定位题时间不够用。后来我给自己定了一个硬规矩选择题单题超过90秒就先标记跳过全部做完再回头想。这个方法听着很简单但在考场环境下真的能救急。后来做实际测试也一样一个用例卡太久会影响整体进度先记录下来后面集中突破效率反而更高。写在最后的一点体会虽然距离2016年那场笔试已经过去好几年但那套题给我的影响一直延续到现在。它让我意识到系统测试不是一个“没有技术含量”的岗位而是一个需要广泛知识储备、严谨逻辑思维和强排查能力的职业方向。如果你正在准备类似的考试或面试希望这份拆解能给你一些参考。技术在更新面试题目会变但基本功和测试思维是长期有价值的值得花时间去打磨。
返回列表