
最近后台收到好几个准备春招的读者问测试岗笔试怎么准备还有人专门翻出往年的真题来问我“这题到底考什么”。我手头刚好有一份奇安信2020年秋招测试方向的笔试卷趁着周末重新把整张卷子的考点、出题思路和答题策略捋了一遍。这篇文章不逐题报答案而是把它当作一个标本拆解安全厂商测试岗笔试题背后的考察逻辑。不管你是准备投奇安信还是打算面其他安全公司、互联网公司的测试开发岗这份拆解都能给你一个比较清晰的复习框架建议先收藏再慢慢看。1. 奇安信测开笔试的考察逻辑安全基因决定了出题风格先聊一个很多人会忽略的问题为什么安全公司的测试笔试题和互联网大厂的测试笔试题风格差这么多奇安信做的是安全产品和政企客户解决方案它的测试岗面对的不是普通App里的“点赞、评论、下单”这类业务逻辑而是防火墙策略、终端管控、漏洞扫描、日志审计这些底层能力。这就决定了它的试题会很看重“你对系统原理的理解够不够深”而不是单纯的“你会不会点点点”。1.1 为什么安全厂商的测试岗更看重“原理理解”拿2020年这张卷子里的题目风格来说很多题表面上是提问“某功能怎么测”但实际想考察的是“你知不知道这个功能背后的实现原理”。比如考路径遍历表面是问怎么测试实际上是想确认你是否明白Web服务器如何处理URL、为什么要做输入验证、过滤器配置不当会造成什么后果。安全产品的测试就是这样用例设计必须建立在理解攻击原理和防御机制的基础上。如果你对被测对象的工作原理不清楚写出来的用例大概率只是拿键盘随便敲几个字符根本测不到点子上。所以准备奇安信这类公司的笔试第一件事不是刷题而是把基础的计算机网络、操作系统、数据库原理重新过一遍。1.2 2020年试卷的知识模块分布与重点结合试卷内容和这些年测试岗位面试的惯例整张卷子大致可以分成五个知识板块模块典型考点占比估算测试理论基础用例设计方法、测试流程、缺陷管理25%计算机基础Linux命令、网络协议、数据库SQL30%自动化测试Appium、Pytest、CI集成20%安全测试输入验证、路径遍历、渗透思路15%场景综合题某个具体功能如何设计测试方案10%这个比例并不绝对但基本能代表安全厂商测试岗的考察倾向计算机基础占比很重纯理论题反而没那么卷。很多刷了一堆测试理论题的候选人反而栽在了Linux、SQL、网络这些基本功上。原因也不难理解——测试工程师每天打交道最多的就是操作系统、数据库和网络环境这些基础不牢测试方案的设计一定是飘的。2. 从热搜词反推必考知识点Linux、网络与数据库奇安信这套卷子里Linux和网络的占比明显高于普通互联网公司。我搜了一下近几年奇安信测试岗面试的相关热搜词“linux面试题测试”“连接数测试”“网速测试”“内存测试”这些词被反复检索说明这些确实是笔试面试的高频考点而且大家在准备时也普遍觉得比较棘手。2.1 Linux高频考点命令、权限与日志分析Linux这块我建议按三个层次准备由浅入深第一个层次是常用命令的熟练度。ls、cd、cp、mv、rm这些就不用说了重点看这几个grep、awk、sed、find、ps、netstat、top。特别是grep和awk的组合用法笔试里经常给一个日志文件片段让你统计某个IP出现的次数或者筛选出某个状态码的请求。第二个层次是权限与用户管理。chmod的三种身份、三种权限、数字表示法怎么换算chown怎么改属主属组useradd和usermod的常用参数。这里有个容易混淆的点chmod 755和chmod urwx,gorx是等价的但很多人只记住了数字法遇到符号法就懵了。笔试如果出这类题考的就是你对两种写法是否都熟。第三个层次是日志分析。安全产品测试绕不开日志/var/log/messages、/var/log/secure、nginx的access.log分别记录什么怎么通过日志里的时间戳、来源IP、状态码判断一次请求是否成功。我建议找个真实环境练一练用tail -f实时看日志用grep加管道符组合过滤用sort和uniq -c统计次数。这几个命令串起来就是一个小型的日志分析流程。提示面试官问Linux题通常不是考你背了多少命令而是看你在排查问题时的思路。碰到“系统变慢了你怎么排查”这种题回答套路应该是先用top看负载再用ps找进程用netstat查连接最后用dmesg看内核日志。这条链路能体现你对系统问题的排查框架比单独背几十个命令有用得多。2.2 网络测试基础连接数、延时与带宽的测定方法网络这块2020年试卷里有一类题很典型给你一个内网环境让你测某台服务器的最大连接数或者测两台机器之间的网络质量。这类题考察的是你对网络测试工具的掌握程度和测试方案设计的完整性。连接数测试很多人第一反应是netstat。但netstat只能看当前连接状态测不出“最大连接数”。正确的思路是用压力测试工具主动发起连接比如abApache Bench、wrk、JMeter设置不同的并发数观察服务器在哪个临界点出现连接失败或响应时间陡增。试卷里如果考这个你要能写清楚并发数从100、500、1000逐步增加记录失败率、平均响应时间、CPU和内存占用最后画出趋势曲线拐点就是最大连接数的参考值。延时和带宽测试就相对常规了。ping测ICMP延时traceroute看路由路径iperf打流量测吞吐量。这里有个细节ping通不代表网络质量好因为ICMP包走的是网络层和应用层TCP的实际传输路径可能有差异。严谨的做法是iperf跑TCP流同时测带宽和丢包率再用ping -f做大包压力测试看分片情况。这些工具都不难但能把它们合理地组合在一个测试方案里是面试官想看到的。2.3 数据库必背SQL聚合、连接与事务数据库题在测试岗笔试题里属于“看着简单、实际上容易丢分”的类型。简单是因为SQL语法就那么点东西容易丢分是因为测试岗的SQL题往往带一点业务场景需要你理解数据之间的关系。三个必背的SQL能力点第一是聚合查询。GROUP BY加COUNT、SUM、AVG、MAX、MIN的组合要滚瓜烂熟。特别是HAVING和WHERE的区别WHERE是在分组前过滤记录HAVING是在分组后过滤组。这个区别笔试里经常考而且很多工作了两三年的人都会搞混。第二是连接查询。INNER JOIN、LEFT JOIN、RIGHT JOIN的区别必须能用大白话讲清楚。我自己的记忆方法是LEFT JOIN就是“左边的表全保留右边匹配不上就补NULL”。实际测试工作中写SQL查数据LEFT JOIN用的频率远高于INNER JOIN因为测试数据往往不完整你需要把主表的记录全部带出来看缺口。第三是事务的ACID特性。BEGIN和COMMIT之间发生了什么ROLLBACK能把数据恢复到什么状态隔离级别如果配置不当会出现脏读、不可重复读、幻读中的哪种问题。安全产品的测试经常涉及数据一致性验证所以这块理解到位了后续“测试数据库功能”的题才能答得踏实。3. 测试理论题怎么做才不丢分用例设计是最核心的竞争力测试理论是笔试题里最不应当丢分的部分但很多人恰恰在这部分发挥不稳定。原因很简单理论书上的概念都背过但一到具体题目就不知道怎么套用。这一节我用2020年试卷里出现过的典型题目来做示范讲清楚“理论怎么落地成用例”。3.1 等价类、边界值与场景法的实战用法等价类划分、边界值分析、场景法、判定表这四种方法在笔试里出现的频率最高。它们不是彼此孤立的而是一个用例设计流程里的不同步骤。我通常建议的流程是先用等价类把无限输入划分成有限类别再用边界值补充每个类别的临界数据然后用场景法覆盖正常的操作流程和异常的容错路径最后如果条件之间有时效、权限之类的组合依赖再用判定表理清。举个例子2020年试卷里有一道题是给一个用户登录功能写测试用例。我当时看到题目第一反应就是这题绝不是让你简单地写“输入正确用户名密码能登录输入错误密码提示错误”那种写法最多拿一半分。正确的做法是分几层来设计功能层登录成功、登录失败、记住密码、忘记密码、切换账号输入层用户名的长度边界1位、16位、17位、特殊字符、SQL注入字符串、空格开头安全层连续输错5次是否锁定、验证码有效期、登录态cookie是否加密、退出后是否清除本地缓存兼容层主流浏览器、同一浏览器不同版本这样写出来的用例才是一个测试工程师该有的水平而不是一个刚培训完的脚本小子。笔试阅卷人扫一眼你写的用例深度基本就能判断你有没有真正的测试思维。3.2 一个登录场景的完整用例设计演示为了让你更直观地理解上面说的“分层设计”我直接给一份精简但完整的登录用例框架你可以直接参考这个格式去准备其他场景。用例编号测试场景前置条件操作步骤预期结果TC-001正确凭据登录用户已注册且状态正常输入正确用户名和密码点击登录登录成功跳转首页显示用户昵称TC-002密码错误用户已注册输入正确用户名、错误密码提示“密码错误”不记录登录态TC-003用户名长度边界值无输入16位用户名合法上限可以正常提交TC-004用户名超长无输入17位用户名前端提示长度超限或自动截断TC-005连续失败锁定用户已注册连续输错密码5次第6次尝试时账号被锁定提示联系管理员TC-006验证码过期登录页已加载验证码等待验证码超过有效期后输入提示“验证码已过期请刷新”TC-007安全日志无分别执行登录成功和失败操作日志中心能查到完整记录包含IP、时间、UA这个表格里TC-003和TC-004考察的是边界值TC-005和TC-006考察的是异常场景TC-007考察的是你有没有安全产品的日志意识。这种格式拿到笔试里无论面试官是看你的用例设计深度还是看格式规范都能拿到比较好的印象分。3.3 测试计划、用例评审与缺陷生命周期除了用例设计测试理论还有一个容易被考到的方向流程类问题。比如“你怎么保证一个项目的测试进度不延期”“你怎么推动开发修复一个低优先级bug”这类题。这类题的考察重点不在于标准答案而在于你有没有真实参与过完整的测试流程。回答的思路应该围绕三个关键词优先级、风险评估、沟通机制。以缺陷生命周期为例从提交到关闭的链路是New新建→Open打开→Fixed修复→Reopen重开/Closed关闭。但实际工作里还有个容易被忽略的状态是Rejected拒绝。开发经常会把“不是bug是设计如此”的缺陷拒绝掉这时候测试怎么处理正确的做法不是跟开发吵架而是回到需求文档看看原始需求是什么。如果需求里没有明确说明就需要产品经理来裁决。这个处理思路是笔试里能让你脱颖而出的亮点因为只有经历过真实迭代的人才写得出这种答案。4. 自动化测试工具栈Appium、Pytest、Jenkins的考核重点从热搜词里“appium测试”“pytest测试框架”“jenkins tessy自动化测试”“sikixix自动化测试”这些词的检索量来看自动化测试工具是很多人准备时的重点也是焦虑来源。其实笔试里对自动化工具的考察没有想象中那么深更看重的是你有没有真正在项目里用过而不是只看了个教程。4.1 Appium移动端自动化定位策略与等待机制Appium的题通常有两个方向一个是环境搭建类另一个是脚本实现类。环境搭建类问的无非是“Appium连接真机需要装什么”。如果你只列了“安装Appium、安装客户端库、启动Appium Server”那和背答案没区别。有经验的人会往下多说一层Android端还需要安装对应版本的platform-tools并确认adb devices能识别到设备iOS端需要libimobiledevice和WebDriverAgent在真机上正确签名。这些细节才是区分“听过Appium”和“用过Appium”的分水岭。脚本实现类最常考的是定位策略。笔试里给你一段页面结构让你说出用什么方式定位某个元素这种题要能答出优先级优先用resource-idAndroid或accessibility idiOS因为这类定位符最稳定其次用xpath但要注意尽量使用相对路径而不是绝对路径否则UI一调整脚本就废了类名和文本定位是下策通常用在没法加测试ID的第三方控件上。还有一个高频考点是等待机制。很多人刚开始写Appium脚本时喜欢用sleep(5)这种写法在笔试现场如果被问到“怎么优化”标准的演进路线是强制等待 → 隐式等待driver.implicitly_wait()→ 显式等待WebDriverWaitexpected_conditions。你要能说清楚为什么显式等待最好——它只在元素满足条件时才继续执行不浪费多余时间也不会因为固定延时太短而误报。4.2 Pytest测试框架fixture、断言与参数化Pytest在笔试中出现频率最高的三个概念fixture、assert、parametrize。fixture要理解它是一个“依赖注入机制”。同一个fixture可以有多个测试函数使用它负责准备测试数据和清理测试环境比传统的setUp/tearDown灵活得多。笔试如果让你实现一个“每个测试用例都使用临时目录”的需求答案就应该是写一个pytest.fixture返回tmp_path然后每个测试函数的参数里声明它。assert在Pytest里有个重要特性普通的assert语句就能做断言失败时Pytest会自动把实际值和期望值报告出来。面试官如果问“Pytest和unittest的主要区别”你可以从断言方式、fixture机制、插件生态三个角度回答这里体现的是你对框架设计理念的理解不只是API的熟记程度。参数化的写法也要熟练import pytest pytest.mark.parametrize(username,password,expect, [ (admin, 123456, True), (admin, wrong, False), (, 123456, False), ]) def test_login(username, password, expect): result do_login(username, password) assert result expect这段代码同时覆盖了多个输入场景是笔试里“自动化测试实现”题型最常见的一个考法。4.3 CI集成Jenkins、Tessy与嵌入式测试Jenkins的考法和Appium、Pytest不同它很少直接让你写代码更多是问“怎么把自动化用例集成到持续集成流水线里”。这就要你理解流水线的基本流程代码提交触发构建 → 部署测试环境 → 执行自动化用例 → 收集测试报告 → 发送通知。我在实际项目里的做法是在Jenkins里建一个Pipeline任务用Jenkinsfile描述整个流程测试阶段调用Pytest命令生成JUnit格式的XML报告再通过HTML Publisher插件展示测试结果。定时任务用H 2 * * *这类cron表达式每天凌晨跑全量回归白天提交则跑冒烟用例。这套方案在笔试里写出来面试官才会觉得你是真正设计过CI流程的人。热搜词里还出现了“jenkins tessy自动化测试”Tessy是嵌入式领域做单元测试和集成测试的工具在汽车电子、工控行业用得比较多。奇安信有部分硬件安全产品所以如果相关团队招人了解Tessy会是加分项。它的核心思路是对C代码做插桩生成测试用例自动执行并统计覆盖率。这块不用准备太深但至少要知道它是嵌入式单元测试工具能说清楚它和JUnit、Pytest这类框架的应用场景差异。4.4 冒烟测试与回归测试自动化用例的取舍自动化测试那块还有一个容易被问到的点“自动化用例跑得太慢怎么办”。这题没有标准答案但有一条比较成熟的优化思路先分层把用例分成冒烟、回归、全量三个等级。冒烟用例挑核心链路控制在10到15分钟之内每次提交代码后必须跑完回归用例覆盖主要功能模块每天定时跑全量用例覆盖所有边界和异常场景每周跑一次或每个版本迭代后跑。这个思路里体现的是“投入产出比”意识。自动化测试不是用例越多越好而是要在时间窗口和覆盖率之间找到平衡。笔试的时候能说出“我按照用例的执行时间和业务重要性做分级把冒烟用例压缩到15分钟内”这句话的价值远高于你背十个自动化框架的API。5. 安全测试题奇安信笔试里的“送分题”和“拉分题”到了最关键的模块。奇安信毕竟是做安全的公司安全测试的题目可以说是笔试里的“身份标识”。但这部分题目的难易分化极其明显基础概念题是送分题能看出你懂不懂安全场景分析题是拉分题能看出你是否有渗透测试或代码审计的实战经验。5.1 什么是路径遍历为什么输入验证那么重要热搜词里有一个很有代表性的词条“奇安信 输入验证路径遍历”。这几乎可以肯定是试卷里的原题关键词因为它太典型了。路径遍历Path Traversal的经典场景是这样的Web应用拼接文件路径时直接把用户输入带入了文件系统操作比如# 不安全的写法用户可控的filename直接拼路径读取 filename request.args.get(file) content open(/var/www/files/ filename).read()如果用户传入../../etc/passwd路径就变成了/var/www/files/../../etc/passwd操作系统会一路回退到根目录最终读取到/etc/passwd。这就是路径遍历漏洞。安全测试人员看到这类代码要能快速识别问题并设计验证用例。输入验证的核心意义就在于永远不要信任用户的直接输入必须做白名单校验、规范化路径、禁止..回退序列。笔试如果给你一段类似的代码让你找出问题答题的层次应该有三层第一层指出存在路径遍历风险第二层说明攻击者如何利用路径拼接和../回退的机制是什么第三层给出修复建议比如用os.path.abspath规范化路径后再判断是否在允许目录内或者干脆用文件ID映射真实路径不让用户直接接触文件系统路径。这种“能指出问题、能解释原理、能给出方案”的三段式回答是安全公司面试官最认可的表达方式。只答“有漏洞需要过滤输入”只是入门水平。5.2 安全测试的通用流程从威胁建模到测试报告除了具体的漏洞类型安全测试的流程类问题也是笔试热点。“给你一个Web系统你怎么做安全测试”这类题回答时如果只是罗列“SQL注入、XSS、CSRF、文件上传”那是背题不是做安全测试。一个有经验的安全测试工程师会先做信息收集了解系统的部署架构、技术栈、对外开放的端口和接口再做威胁建模分析攻击面在哪里哪些接口暴露给不可信用户然后才进入攻击测试阶段针对识别出来的攻击面逐项验证最后是风险评估和报告输出按严重程度给出修复优先级。这个流程里最容易被笔试者忽略的是威胁建模这一步。很多人的测试方案直接从“测SQL注入”开始跳过了“为什么要测这里”的分析过程。实际上安全测试区别于功能测试的核心就在于“攻击面分析”回答里如果体现不出你这个意识方案深度就会差一大截。5.3 奇安信产品线常识天擎、代码卫士、可信浏览器的定位笔试里偶尔会出现一两道“你对奇安信的产品了解多少”这种送分题。准备这类题不用把每个产品都背得滚瓜烂熟但至少要知道三家主力产品的定位和测试关注点。天擎是终端安全管理系统覆盖终端杀毒、补丁管理、外设管控、文档安全这些能力。它的测试关注点是终端Agent的稳定性、资源占用、病毒查杀率和误报率以及大规模终端场景下的策略下发效率。代码卫士是源代码安全分析平台通过静态分析扫描代码中的安全缺陷。它的测试关注点是扫描引擎的误报和漏报率、支持的语言种类、扫描速度以及审计流程的可用性。静态代码分析工具的原理是抽象语法树加数据流分析理解这一点就能明白为什么代码卫士能发现哪些漏洞又有哪些漏洞它发现不了。可信浏览器主要面向政企客户的安全上网场景基于Chromium内核魔改集成了国密算法和安全管控策略。它的测试关注点是内核安全加固是否影响网页兼容性、国密HTTPS站点能否正常访问、外设调用策略是否正确拦截。这类产品常识题不用钻研太深每款产品能说出定位、核心功能、测试侧重点三句话就已经超过大部分候选人了。但如果时间允许强烈建议去看看奇安信官网的产品文档把每个产品的一级功能菜单过一遍。因为面试官可能顺着你的回答往下追问如果你连“天擎的控制台有哪几个大模块”都答不上来前面说再多也是白搭。6. 笔试现场的时间分配与答题策略前面几节讲的是知识点这一节聊一个实战问题这张卷子拿到手120分钟你按什么顺序做、每个题型花多久、不会的题怎么处理。见过太多现场翻车的情况都是因为前面对着一道大题死磕后面容易拿分的题来不及写。6.1 每种题型的建议用时以一份常规的测试方向笔试卷来说题型和分值大致如下题型题量建议用时策略单选题15题15分钟拿不准的先标记不纠结多选题10题15分钟不确定就少选多选通常倒扣分简答题6题40分钟分层作答先结论后展开用例设计题2题30分钟用框架写条例清晰系统设计/压轴题1题20分钟写出主链路异常场景即可这个时间分配的核心原则是用例设计题和系统设计题的分值最高简答题次之单选题虽然多但单题分值低。别在前面的选择题上恋战因为一道选择题的分值可能只有用例设计题的五分之一。我的答题顺序习惯是先花两分钟把整张卷子浏览一遍大致判断简答题里哪些是自己知识盲区然后直接从用例设计题开始做。原因很简单这类题不看你“知不知道”而是看你“有没有思路”。趁头脑清醒的时候先把框架写出来后面哪怕时间不够拿到基本分的概率也会更高。做完整道大题的成就感和确定性也会给后面的答题提供正向心理暗示。6.2 场景题不会做的时候怎么“给出合理思路”笔试最怕的题就是那种“给你一个场景写测试方案”。比如“一个支持千万级并发的API网关你怎么设计测试方案”。很多人的第一反应是懵因为心里没底。但你记住一件事面试官不指望你能看到千万级并发现场他只看你的思考框架对不对。如果真遇到这种题我建议用下面这个框架硬套先定义测试目标可靠性、性能、安全哪个优先再拆测试维度功能测试、性能测试、稳定性测试、安全测试、兼容性测试。然后选核心工具功能用Pytest Requests性能用JMeter或wrk安全用Burp Suite思路做威胁建模。最后讲测试数据的构造并发用户数怎么模拟、测试数据量级怎么规划、监控指标怎么采集。即使你对API网关的实际原理了解不深只要按照这个框架走写出来的方案就是结构完整的。这比憋半天憋出三行字要强得多。笔试考察的往往不是“你会不会做”而是“换个新东西你知不知道怎么上手”。6.3 写测试用例时的格式规范最后提一个细节写用例设计题时一定要用表格或者带编号的列表。这样做有两个好处第一阅卷人一眼就能看到你的用例覆盖了哪些场景不需要在你的长篇大论里找重点第二规范的格式会传递出一个信号——你是一个按流程工作的测试工程师而不是想到哪写到哪的野路子。我自己常用的用例表格字段是编号、场景、前置条件、操作步骤、预期结果。如果题目涉及性能测试再额外加一个“通过标准”字段。注意预期结果不能写“功能正常”这种废话要写可观测的具体表现比如“接口返回200响应时间小于500ms数据库新增一条交易记录”。这一步虽然不占多少分值但能让你的答卷看起来专业不少。7. 复盘与后记如果我现在做这份卷子我会怎么准备写完上面的拆解我不禁回想起自己当年也经历过这个阶段。那时候我手里也有一堆各家公司的笔试题但说实话大部分都做得惨不忍睹不是因为题多难而是因为我没有意识到“笔试不是靠刷题就能过的”。如果让我现在重新准备奇安信这张试卷我的优先级大概是这样的第一优先把Linux、SQL、网络基础补牢这三大块分值占比最稳而且每个知识点都是确定性的会就是会不会就是不会第二优先把测试用例设计练熟用“分层设计”的框架反复练习登录、购物车、文件上传、消息推送这四类经典场景第三优先准备自动化测试工具重点不是背API而是理解框架的机制——Pytest的fixture、Appium的等待、Jenkins的流水线第四才去看安全测试的漏洞原理先把路径遍历、SQL注入、XSS这三类最基础的漏洞吃透再延伸到别的。说实话今年回头看这份2020年的试卷里面大部分考点到今天依然有效。测试这个岗位技术工具迭代很快但底层能力要求反而很稳定要么会用工具要么能设计场景要么能看懂代码。这三样里有一样足够扎实笔试就不会太差。最后再分享一个我在实际招聘中观察到的现象很多候选人笔试答得不错但面试一聊就露馅。原因很简单笔试是可以准备的但面试里的追问会把你的真实项目经验挖出来。所以如果你还有时间强烈建议自己动手做一个小项目哪怕是写一套自动化脚本、搭一个简单的测试平台把这些知识点真正用一遍。纸上得来终觉浅这句话放在测试工程师身上再合适不过了。