ARTICLE DETAIL

资讯详情

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

软件测试面试100题:核心考点与面试官思维解析

软件测试面试100题:核心考点与面试官思维解析 1. 面试官坐在对面的时候脑子里在想什么说实话这些年我既当过被面的也当过面别人的。软件测试岗的面试题翻来覆去就那么几类但为什么有人能拿offer有人连一面都过不去区别往往不在答案本身而在你有没有想清楚面试官问这个问题到底想验证什么。这100个软件测试面试题是我结合近几年的面试真题和带团队时的选人标准整理的。它不是让你背的而是让你拿来对照自己——每个分类背后都对应一种能力测试思维、用例设计、工具实操、数据验证、问题定位、沟通推进。我建议你拿到之后先每个分类自测一轮会的快速过不会的做好标记然后重点看我后面拆解的那几类高频追问。面试不是考试面试官想看的不是一个背书机器而是一个能解决实际问题的人。1.1 技术问题之外面试官其实在听你的“思考过程”很多人以为面试就是“我问你答”答对了就给分答错了就挂。实际完全不是这样。我面人的时候不太在意你第一遍能不能说出标准答案更在意你卡住之后怎么办是愣在那里等提示还是能顺着自己的知识体系一步一步推理是只会背概念还是能举出项目中真实遇到过的案例同一个问题有项目经验的人会先说结论再讲场景没经验的人只会报概念差异非常明显。举个例子问你“GET和POST有什么区别”很多人张口就答“GET有参数长度限制POST没有”。这话对了一半但面试官真正想听的是你知不知道GET和POST本质上都是TCP连接区别主要在语义、缓存、请求体、幂等性这些维度还有你平时测试的时候实际关注过哪些差异。所以后面我会反复强调答案要给两层——一层是定义一层是你自己验证过的经验。1.2 100道题的正确用法按主题自测而不是按序号刷题这份100题清单我按面试中的真实提问频率分了六大块测试基础与用例设计、接口与网络、数据库与Linux、自动化与性能、项目经验与场景题。你千万不要从头到尾一天刷完那样记不住也没意义。正确的用法是每天挑一个主题比如今天只看接口测试把对应题目的答案用自己的话写一遍然后对照我给出的方向和细节补漏。能写出来、能讲明白才算真会。后面每个章节我都会先讲高频题背后的逻辑再给题速查表。表里大部分题目我给了方向性答案少数题目故意只留了关键点因为你必须结合自己的项目经历去补血肉面试官一追问细节就露馅。2. 测试基础与用例设计最容易拿分也最容易翻车的地方基础题是面试的第一关也是很多人的翻车点。原因很简单基础题看似简单但面试官会一直往下追问直到你露出破绽。比如问你“什么是测试用例”你背出“测试用例是执行测试的依据”还不够他马上会问“那你项目里的用例包含哪些字段评审的时候谁会参加用例执行失败了你怎么处理”这一连串问题光靠背是撑不住的。2.1 必问基础题拆解从概念到缺陷生命周期先看一个最经典的问题“什么是软件测试软件测试的目的是什么”标准答案是“验证软件是否满足需求、发现缺陷”但我建议你加一句测试的目的是在有限的时间和资源内尽可能发现质量问题并提供风险评估信息而不是证明软件没有bug。这句话一出来面试官就知道你真正做过测试知道测试是有成本约束的。再比如缺陷生命周期光说出“New→Open→Fix→Verify→Close”不够。你得说清楚验证不通过会Reopen延期处理会Deferred不是bug会Rejected还要说明谁有权限关闭、什么时候需要开发测试一起确认。这些细节才是面试官想听的。2.2 用例设计题边界值、等价类、场景法怎么答才加分用例设计是整个基础环节的重头戏。面试官通常会拿“登录功能”或“购物车”让你现场设计用例这时候不要一上来就乱说先给思路先划分功能点再选设计方法最后列优先级。比如登录功能先分UI层输入框、按钮、提示语、逻辑层账号密码校验、验证码、锁定策略、数据层数据库对比、加密存储、异常层网络超时、服务器异常。边界值和等价类是必考的组合。记住一个原则有效等价类覆盖正常场景无效等价类覆盖异常场景边界值永远要单独测。比如一个年龄输入框限制18到60岁等价类就是18-60、小于18、大于60三块边界值要测的是17、18、60、61外加空值和超长输入。千万别只说“从1到100随便挑几个数测试”那等于告诉面试官你没做过正儿八经的用例设计。2.3 测试基础与用例设计题速查表1-25题号高频题目答案要点与踩坑提醒1什么是软件测试目的是什么验证与发现缺陷有成本约束提供质量风险评估2测试和开发的关系怎么看待“测试不如开发”协作关系测试是质量保障最后一道防线用事实说话不抱怨3什么是测试用例包含哪些要素用例编号、前置条件、输入步骤、预期结果、优先级、实际结果4什么是bugbug报告包含哪些字段标题、环境、版本、步骤、预期、实际、截图日志、严重程度5什么是回归测试什么时候做代码变更后验证原有功能不受影响冒烟通过后、上线前都要做6什么是冒烟测试和回归测试的区别冒烟验证主流程是否可测回归验证变更是否破坏旧功能7黑盒、白盒、灰盒测试的区别黑盒不看代码白盒看代码逻辑灰盒关注接口数据交互8静态测试和动态测试静态不运行代码靠走查评审动态需要实际执行9Alpha测试和Beta测试的区别Alpha内部环境由测试团队主导Beta由真实用户在真实环境使用10缺陷生命周期New→Open→Fix→Verify→Close还有Reopen、Rejected、Deferred11什么是测试覆盖率越高越好吗衡量执行充分性但不是目的追求合理覆盖而非100%12测试人员为什么要参与需求评审提前发现需求逻辑漏洞降低后期返工成本13什么是探索性测试在无预先设计脚本情况下凭经验和学习边测边设计14如何保证测试的充分性需求覆盖矩阵、风险优先级、方法组合、缺陷密度复盘15如何评价测试人员的工作质量漏测率、缺陷发现质量、测试效率、项目组满意度16什么是等价类划分举例有效/无效等价类如年龄18-60小于18和大于60均为无效类17什么是边界值分析为什么容易出错边界是逻辑判断临界点最容易写错如60岁的包含问题18什么是判定表法适合什么场景多条件多动作组合如优惠券满足多个条件才生效19什么是因果图法分析输入条件和输出结果的逻辑关系导出判定表20什么是正交实验法用正交表从全量组合中选取代表性组合适合参数很多的情况21什么是场景法按业务主流程、备选流、异常流设计用例适合端到端测试22什么是错误推测法凭经验猜测容易出错的地方如空值、超长、特殊字符、重复提交23如何为登录功能设计测试用例从UI、逻辑、数据、异常四层展开覆盖正确和错误场景24如何为购物车功能设计用例增删改查、数量边界、金额计算、库存变化、并发操作25测试用例需要评审吗谁来参加需要测试、开发、产品、运维共同评审重点看覆盖度和可行性3. 接口、HTTP和抓包测功能绕不开的底层逻辑现在的软件测试几乎没有纯前端功能测试。你测的每个功能背后都是接口接口挂了或返回数据不对页面再好看也没用。所以接口测试已经成为软件测试岗面试的必考项而且追问得非常深。3.1 接口测试核心追问从状态码到鉴权最常问的是“GET和POST有什么区别”。别只背那几句GET参数在URL上POST参数在body里。你要补充几点GET一般用于查询是幂等的可被缓存POST用于提交或创建资源不幂等不能缓存。测试时关注的点也不一样GET要关注URL长度限制、参数编码、缓存命中POST要关注请求体格式、报错返回、重复提交。另一个高频题是“cookie、session、token有什么区别”。cookie存在客户端session存在服务端token是无状态认证凭证。面试官一般会继续追问你们项目用的哪种token失效怎么处理并发登录怎么限制这其实就是在考察你有没有真正处理过登录态相关的测试场景。3.2 从Postman到JMeter工具题背后的原理工具题不会直接问“你会不会用Postman”而是问“怎么处理接口依赖”或“怎么做参数化”。接口依赖的标准答案是从上一个接口的响应中提取token通过全局变量或环境变量传给下一个接口。参数化则是把写死的测试数据抽出来用CSV或JSON文件驱动。面试时你要顺口说出具体操作步骤才能证明真的用过。JMeter做接口压测也是高频题。核心不是背菜单而是讲清楚三步创建线程组设置并发数、添加HTTP请求取样器、添加聚合报告或断言。很多人只答到这里其实可以加分的是补充一句先把接口单跑通再加大并发并发太高会导致大量超时需要逐步观察。3.3 接口与网络高频题速查表26-50题号高频题目答案要点与踩坑提醒26什么是接口测试和UI测试的区别直接验证服务端接口逻辑不依赖UI效率高发现问题更早27什么是HTTP协议请求方法有哪些应用层协议GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS28GET和POST的区别语义、参数位置、幂等、缓存测试关注点也不同29常见HTTP状态码有哪些200成功、201创建、301/302重定向、400参数错误、401未认证、403无权限、404不存在、500服务器异常、502/504网关问题30什么是RESTful API用HTTP方法表达操作动作资源用URL标识状态码表达结果31如何校验接口返回值先校验状态码再校验业务码再校验关键字段和数据格式32接口断言一般看哪些内容状态码、响应字段、数据结构、数据库落库、响应时间33cookie、session、token的区别存储位置、状态管理方式、安全性和适用场景不同34什么是鉴权和授权如何测试鉴权验证身份授权验证权限测试未登录、越权、过期、并发登录35什么是幂等性哪些接口需要同一请求重复执行结果一致支付、订单创建、消息重试场景36什么是并发接口并发怎么测同一接口同时大量请求用JMeter并发线程组关注数据一致性和锁37什么是接口依赖如何处理接口返回被后续接口用提取变量或做数据预置38什么是mock什么时候用模拟不可用或未开发的依赖服务联调前置、异常模拟、第三方接口39Fiddler/Charles抓包原理是什么本地代理浏览器流量经过代理后可查看、修改、重放请求40如何测试上传文件接口文件类型、大小边界、空文件、超长文件名、并发上传、覆盖同名文件41如何测试支付接口正常扣款、余额不足、重复支付、回调异常、并发支付、金额精度42返回数据量大怎么办分页怎么测验证分页参数、总页数、最大页、翻页后数据顺序、重复数据43接口的异常场景有哪些超时、断网、服务器错误、参数类型错误、缺失必填项、乱码44怎么排查接口超时问题先用抓包确认哪一端慢再查网络、SQL慢查询、服务器资源、第三方依赖45WebSocket和HTTP区别WebSocket全双工长连接HTTP半双工无状态请求响应模式46Postman环境变量和全局变量怎么用环境变量按环境隔离全局变量全局共享引用格式为{{variable}}47Postman如何串联接口传递token在登录接口Tests中提取token保存为环境变量其他接口自动引用48JMeter压测怎么做参数化怎么做线程组设置并发、循环次数CSV数据文件或函数助手做参数化49如何做接口自动化怎么选框架PythonRequestsJenkins最常用按团队技术栈选维护成本优先50接口自动化用例怎么维护按模块拆分脚本公共方法封装接口变更及时更新断言和参数4. 数据库与Linux测试工程师的后端基本功很多功能测试出身的人容易忽略数据库和Linux觉得那是开发或运维的事。但在我面试过的候选人里能熟练用SQL验证数据、能上服务器看日志的人通常比只会点页面的测试高出至少一个薪资档位。原因很简单很多bug只在数据层暴露你不看库里存了什么就无法定位问题。4.1 SQL题从增删改查延伸到数据校验数据库题最常问的是连接查询和分组统计。内连接取交集左连接左表全量加右表匹配右连接反之。很多人背得很熟但一让写SQL就卡住。我建议你面试前至少手写这几个场景查两表关联数据、统计每个分类的数量并筛选大于某值的分组、查重复记录、更新一条数据并回查。这些是最常见的测试数据准备和验证动作。还有一题很有迷惑性“测试为什么要懂数据库”面试官想听的答案不是“因为要查数据”而是测试时要验证接口和页面看到的数据是否真实入库、字段值是否符合预期要制造特定测试数据比如构造一个用户余额为0的场景要排查问题需要对比数据库状态和页面展示是否一致。4.2 Linux题定位日志等于定位BugLinux高频题基本集中在日志查看、进程端口、资源监控三块。tail -f看实时日志grep关键字过滤grep -A -B看上下文ps -ef | grep java查进程netstat -tunlp查端口top看CPU内存free -h看内存df -h看磁盘。这些命令你得能脱口而出并且知道什么场景用哪个。面试最怕的是只会背命令、不会排错。比如问你“日志里有空指针异常怎么定位”你不能只输tail -f要说出完整思路先看异常堆栈的类和行号再定位到对应服务用grep Exception xxx.log | tail -100看最近异常再结合当时操作和当前部署版本缩小范围最后看是不是代码逻辑或数据问题。这个回答一出来面试官基本不会怀疑你的实战能力。4.3 数据库与Linux高频题速查表51-70题号高频题目答案要点与踩坑提醒51测试为什么要懂数据库数据验证、测试数据构造、问题定位、数据一致性检查52什么是SQL常用语句有哪些结构化查询语言SELECT、INSERT、UPDATE、DELETE、WHERE、JOIN53内连接、左连接、右连接的区别INNER JOIN取交集LEFT JOIN左表全量RIGHT JOIN右表全量54group by和having怎么用group by分组having过滤分组后的结果不能替代where55如何验证测试数据按条件select数据比对字段值、数量、时间戳、状态位56如何构造测试数据直接insert造数、调用接口造数、用脚本批量造数57什么是事务ACID是什么一组操作要么全成功要么全失败原子性、一致性、隔离性、持久性58什么是索引优缺点加快查询占空间影响增删改性能需要平衡59主键、外键、唯一约束的区别主键唯一标识一行外键关联其他表唯一约束保证唯一值60三张表关联查询怎么写先明确关联字段一层层join注意多对多关系可能产生重复数据61如何定位一条数据是否入库按唯一键select查询看记录数和字段值62如何测试数据库读写性能慢查询日志分析、索引命中情况、压测工具模拟并发读写63Linux常用命令有哪些ls、cd、cp、mv、rm、ps、grep、tail、netstat、top、df、free64如何查看日志tail和grep怎么用tail -f实时跟踪grep过滤关键词可组合管道使用65如何查看进程和端口ps -ef查看进程netstat -tunlp查看端口lsof -i查占用66如何查看系统资源top看CPU内存free看内存df看磁盘iostat看IO67如何修改文件权限chmod改权限chown改属主常用chmod 755、chmod x68如何查看文件内容cat全文查看、less分页、more分页、head看头部、tail看尾部69如何统计日志中的关键字grep统计匹配行数配合sort、uniq -c按关键词聚合统计70日志有异常但界面正常怎么排查确认异常级别、定位报错模块、回看操作时序、检查数据和版本因素5. 自动化与性能测试会写脚本和会解决问题是两回事自动化测试和性能测试是面试中区分“初级”和“中高级”的分水岭。不会也没关系但你要诚实并且要说清楚自己会到什么程度。最忌讳的是简历写“精通Selenium”结果一问连显式等待和隐式等待的区别都说不清这种情况基本直接挂。5.1 自动化测试框架问题怎么答UI自动化的原理是高频追问点。Selenium的工作原理可以简单理解为测试脚本调用WebDriver APIWebDriver再通过浏览器驱动和真实浏览器通信替代人工操作页面。你最好把它拆成三层来讲测试代码层、WebDriver服务层、浏览器层这样显得你是理解过的而不是只会点录制回放。元素定位也是必考XPath和CSS选择器至少要能说出常用语法。稳定性问题更要会答比如为什么用例今天能跑明天就跑挂常见原因有元素加载慢没加等待、动态id导致定位失败、页面弹窗干扰、数据未清理导致重复。解决办法就是合理等待、稳定定位、数据隔离、用例独立。5.2 性能测试面试官想听的回答思路性能测试题很多人在背名词并发数、响应时间、TPS、吞吐量。背名词不够你要能解释它们的关系。比如“并发用户数是100TPS是50响应时间是2秒”这三个数字怎么互相换算怎么判断系统够不够用。更关键的是怎么分析结果TPS上不去先看是不是压测机自身瓶颈响应时间变长再看CPU、内存、磁盘、慢SQL、外部接口耗时。面试官最喜欢这种有排查思路的回答。还有一个容易被问懵的“性能测试什么时候开始做”答案一定不是“上线前再做”而是需求阶段就要确定性能指标功能稳定后尽早做单接口性能验证上线前做全链路压测。这样才能留出调优时间。5.3 自动化与性能测试题速查表71-88题号高频题目答案要点与踩坑提醒71UI自动化测试的原理是什么通过自动化脚本模拟用户操作驱动浏览器执行并校验结果72Selenium的工作原理脚本→WebDriver接口→浏览器驱动→真实浏览器形成通信链路73如何定位元素常用哪些定位方式id、name、class、XPath、CSS优先使用稳定属性少用动态位置74显式等待、隐式等待、强制等待的区别显式等待轮询条件隐式等待设置全局超时强制等待sleep固定时间75自动化用例如何保持稳定加合适等待、稳定选择器、测试数据隔离、尽量降低环境依赖76什么是PO模式如何分层Page Object模式页面对象封装元素和操作测试用例只写业务逻辑77数据驱动测试怎么做测试数据和脚本分离用外部文件或表格驱动多组数据执行78哪些用例适合自动化哪些不适合适合重复回归、核心冒烟、多浏览器兼容不适合探索式、视觉评估79自动化测试的ROI怎么评估对比人工执行成本、反馈速度、漏测风险取长期收益计算80Appium和Selenium什么关系Appium是移动端自动化框架借鉴WebDriver协议支持原生和混合应用81什么是性能测试有哪些类型通过压测评估系统的响应速度、稳定性和资源消耗负载、压力、稳定性、并发测试82什么是并发用户、响应时间、TPS、QPS并发用户是同时在线操作数响应时间是请求到返回耗时TPS是每秒事务数QPS是每秒查询数83如何制定性能测试方案明确指标、选场景、定并发模型、准备数据、设计监控、分析结果84性能测试结果怎么分析分层看压测端、网络层、应用层、数据库层逐层排查瓶颈85性能调优从哪些方面入手代码、缓存、数据库索引、连接池、硬件资源、第三方接口86如何测试高并发下的订单系统并发下单、扣库存一致性、防重复提交、超时退款、数据库锁87测试中redis怎么用为什么快做数据缓存或辅助验证基于内存、单线程IO多路复用、高效数据结构88如何设计一套自动化测试框架分层封装、数据驱动、用例管理、报告输出、持续集成调度6. 项目经验与场景题决定薪资档位的关键一关前面的题都是零散验证项目经验和场景题才是定薪水的一关。面试官会通过你的项目描述判断你是真的独立负责过测试还是只是跑过别人写好的用例。这一部分没有标准答案但有一些公认的加分套路。6.1 介绍项目时常见的三个坑第一个坑只讲业务不讲测试。我听过很多人说“我这个项目是个电商平台用户可以下单、支付、退款”听起来很热闹但一句测试相关的都没有。正确的讲法是用STAR结构项目背景、我的角色、我负责的测试范围、最后的质量结果。面试官想听你负责了什么模块、设计了什么方案、发现了什么有价值的问题。第二个坑把开发和测试工作混在一起说。说“我写了登录接口”不如说“我负责登录模块的测试设计和执行包括接口和前端联调验证”岗位定位必须清晰。第三个坑不说数据结果。项目介绍里如果能带出“上线前发现2个P1缺陷上线后三个月漏测率控制在1%以内”说服力会强很多。没有数据也要说过程改进比如“之前回归要2天引入自动化后压缩到半天”。6.2 场景题的回答套路先确认再拆解最后给方案场景题的经典套路是“开发说不是bug你怎么办”。很多人上来就说“我跟他吵”这肯定不行。正确的回答分几步先自己复现确认是不是测试环境和数据问题再对照需求文档确认实际结果是否偏离预期如果需求本身有歧义拉产品一起评审如果确实是可接受行为就推动补充需求说明。整个回答的核心是用证据说话而不是用情绪对抗。还有一题“线上出bug了怎么处理”。这个要答出紧急流程而不是闷头改用例先评估影响范围确认是否要紧急回滚或发修复版本然后补用例防回归最后复盘原因和流程漏洞。面试官听到你说“先回滚止血、再定位根因、最后补防漏测”基本就认定你是有线上经验的。6.3 项目经验与场景题速查表89-100题号高频题目答案要点与踩坑提醒89请介绍你最近做的一个测试项目STAR结构项目背景、职责、测试设计方法、质量结果和反思90项目周期很短测不完怎么办先做风险排序核心功能优先明确剩余风险和上线决策91开发说不是bug怎么办先复现再对照需求有歧义找产品确认用证据沟通92线上出了bug怎么处理先评估影响、紧急止血再定位根因、补防漏测试、复盘流程93需求频繁变更测试怎么应对关注变更影响范围及时补充和调整用例推动变更评审94如何评估测试工作量按需求复杂度、用例数量、执行轮次、环境准备、回归成本估算95如何编写测试计划范围、策略、资源、进度、风险评估、准入准出标准96如何编写测试报告测试概况、用例执行统计、缺陷分布、风险项、结论建议97如何推动开发修复bug提高bug描述质量、区分严重程度、关键问题及时升级汇报98如何测试几乎无法复现的bug记录现场信息、收集日志和操作步骤、多环境复现、加埋点99怎么判断bug是前端还是后端抓包看接口请求与响应接口正常则前端展示问题接口异常则后端问题100你未来3年的职业规划是什么从执行测试到测试设计再到专项测试或测试开发体现成长路径7. 我的面试实战心得踩过的坑和能直接用的技巧这份100题清单整理完我还是想多说几句关于软件测试面试的真实感受。我自己见过太多候选人基础知识扎实工具也会用但挂在最后一轮原因往往不是技术而是表达方式。面试官问“你怎么测一个登录功能”你如果先从验证码开始说再从账号密码、记住我、忘记密码慢慢补面试官会觉得你没有结构。换个方式先说从功能、接口、安全、兼容四个维度覆盖再展开每一类整段回答立刻不一样。另一个容易踩的坑是“不懂装懂”。问到没接触过的领域比如“你用过Docker吗”完全没接触过时不要硬编。诚恳地说没用过然后补一句“但我理解它大概是做环境隔离的如果给我时间可以快速上手”比编一套假经验稳妥得多。面试官也是从新人过来的对诚实而好学的人普遍更有好感。最后分享一个我自己面试前必做的事把你简历里写到的每一个项目按“项目背景、你的职责、测试设计、发现的最大问题、改进动作”五个要点各写一版三句话的版本然后对着手机录音讲一遍。你会发现讲出来和想出来完全不是一回事这个练习能帮你清掉大量口头禅和逻辑断层。面试题可以背但项目故事必须练到脱口而出。祝你顺利。
返回列表