Raina-软件测试指南
AI测试学习圈
面试题
关于作者
小红书
B站
AI测试学习圈
面试题
关于作者
小红书
B站
  • 面试题

    • 面试题导航
    • 01-测试基础理论面试题
    • 02-测试用例设计面试题
    • 03-功能测试面试题
    • 04-性能测试面试题
    • 05-自动化测试面试题
    • 06-接口测试面试题
    • 07-移动端测试面试题
    • 08-安全测试面试题
    • 09-测试管理面试题
    • 10-测试工具面试题
    • 11-敏捷测试面试题
    • 12-数据库测试面试题
    • 13-兼容性测试面试题
    • 14-测试环境管理面试题
    • 15-测试文档面试题
    • 16-测试编程语言面试题
    • 17-测试最佳实践面试题
    • 18-项目实战面试题
    • 19-AI测试基础与AI辅助测试面试题
    • 20-大模型LLM应用测试面试题
    • 21-AI Agent与AIGC评估面试题
    • 22-机器学习模型与AI安全测试面试题
    • 23-AI Agent协议与扩展机制测试面试题
    • 24-电商交易系统测试面试题
    • 25-IM即时通讯系统测试面试题
    • 26-支付与金融系统测试面试题

测试基础理论面试题

本文档包含 50 道测试基础理论面试题,涵盖软件测试定义、测试原则、测试生命周期、测试级别、测试类型、缺陷管理等。

文内部分章节配有 Mermaid 流程图、状态图与时序图,站点已通过 @vuepress/plugin-markdown-chart 在构建与浏览时渲染。


一、软件测试基础(15题)

Q1: 什么是软件测试?软件测试的目的是什么?

答案:

软件测试是在规定的条件下对程序进行操作,以发现程序错误、衡量软件质量,并对其是否能满足设计要求进行评估的过程。

测试的目的可以概括为:发现缺陷;验证软件是否满足需求;评估质量水平;降低发布后的风险;为决策提供质量方面的信息;并通过测试活动把问题反馈到研发过程里,减少后续缺陷。上线前做支付回归时发现重复扣款,就是典型的既在找问题,也在帮团队控制上线风险。

Q2: 软件测试与质量保证(QA)有什么区别?

答案:

测试更偏向「对着产品验货」:执行用例、找缺陷、出测试报告。

QA 更偏向「把过程管好」:流程和规范、评审、度量、培训、改进建议,贯穿整个生命周期。

一个偏检测,一个偏预防;看产品和看过程是互补关系,不是谁替代谁。

维度测试(Testing)质量保证(QA)
关注点发现产品中的缺陷预防缺陷、改进过程
常见工作设计/执行用例、报缺陷、回归规范与流程、评审、度量、培训
结果侧重测试报告、缺陷报告质量报告、改进建议

Q3: 软件测试在软件开发中的作用是什么?

答案:

一是质量保障:对照需求验证功能是否正确、整体质量是否达标。

二是风险控制:提前暴露严重问题并评估影响。

三是成本控制:越早发现缺陷,修复和返工越便宜,也能减少线上事故带来的损失。

四是给发布、排期、范围裁剪提供依据。

五是推动持续改进:把缺陷和线上问题反馈回研发和流程,避免同类问题反复出现。

Q4: 软件测试的基本原则有哪些?

答案:

业界常说的七条(例如 ISTQB)可以这样记:

  1. 测试能证明软件有错,不能证明绝对没错。
  2. 完全穷举不现实,只能按风险和优先级做取舍。
  3. 测试越早介入越好,需求、设计阶段就要有测试视角。
  4. 缺陷往往扎堆在某个模块,Bug 多的地方通常值得加测。
  5. 同一批用例反复跑,能发现的新问题会越来越少,用例要维护和更新。
  6. 项目背景不同,测法也不同,没有一套模板打天下。
  7. 没报 Bug 不等于产品好用,还要满足真实需求和体验。

Q5: 什么是测试心理学?测试人员应该具备什么样的心理素质?

答案:

测试心理学研究的是:测试人员在测的时候怎么想、情绪和行为会怎样影响结果,以及怎么调节才能测得更稳。

实际工作里,测试人员一般会强调:对结论多求证、细心抠边界、报告问题对事不对人、能把现象和影响说清楚、愿意持续学新东西,以及在排期紧的时候仍能守住关键质量门槛。

Q6: 什么是测试思维?如何培养测试思维?

答案:

测试思维是一种系统性的思考习惯:主动想哪里可能出问题、风险在哪、该设计什么场景去覆盖。

常见角度包括:从失败路径和异常入手;盯住边界和极端情况;在组合爆炸里挑高价值场景;覆盖误操作和非常规路径。培养上可以多问为什么、切换用户或运维视角看问题、复盘漏测和线上事故,并把等价类、边界等设计方法用到日常用例里,形成团队可复用的经验。

Q7: 软件测试与调试有什么区别?

答案:

测试负责发现缺陷,调试负责在代码里定位并修复缺陷。

执行上测试人员为主、开发人员为主;产出上一边是复现步骤、影响评估和测试报告,一边是修复和根因说明。

测试把问题说清楚、日志给足,能缩短调试时间;修完后要靠回归确认没有引入新问题。

维度测试调试
目的发现缺陷定位并修复缺陷
执行者测试为主开发为主
产出侧重报告、复现步骤、影响评估修复与根因说明

Q8: 什么是测试驱动开发(TDD)?

答案:

TDD 是先写测试、再写能通过测试的代码,最后在不破坏测试的前提下重构,循环进行。流程常记成红–绿–重构:先写会失败的用例(红),写最小实现让用例通过(绿),再整理结构并保持全绿(重构)。

这样做有利于设计更可测、回归有网、用例本身也是文档。

缺点是团队要改习惯,初期写测试会慢一点,也需要成熟的单测框架支持。

Q9: 什么是行为驱动开发(BDD)?

答案:

BDD 用业务和技术都能读的自然语言描述系统行为,再落到自动化用例,减少「产品说的」和「研发做的」对不上号。常见写法是 Given / When / Then 一类场景,强调业务价值,场景往往可以直接驱动自动化。工具上常见 Cucumber、SpecFlow、Behave、JBehave 等。

示例:

Feature: 用户登录
  Scenario: 成功登录
    Given 用户访问登录页面
    When 用户输入正确的用户名和密码
    Then 用户应该成功登录

Q10: 什么是测试左移和测试右移?

答案:

左移(Shift Left)指把测试活动尽量前移到需求、设计、编码阶段,通过评审、单测、集成测等早点发现问题,修起来更便宜。

右移(Shift Right)指上线后在真实或接近真实的环境里观察系统,例如监控告警、埋点、A/B、性能与错误追踪,看用户是否真用得顺。

左移更多解决「别带病出门」,右移更多回答「出门以后效果怎样」。实际项目里两者常一起用。

Q11: 什么是持续测试(Continuous Testing)?

答案:

持续测试是把自动化测试嵌进 CI/CD:每次提交或定时流水线跑一批用例,尽快给出通过/失败,有的团队还会设质量门禁(不过线不合并或不发布)。执行上往往是单测最快、量最大,往上还有集成/API、UI、性能等,越靠前越要求快和稳。

Q12: 什么是探索性测试(Exploratory Testing)?

答案:

探索性测试是边了解产品、边设计场景、边执行,而不是完全依赖事先写死的长脚本;更吃测试人员的经验和领域感觉,适合需求变得快的迭代。一般节奏是学习、设计、执行、记录、再调整。它能挖到脚本想不到的问题,但难量化、也难全盘自动化,严重缺陷仍建议留下清晰复现步骤。

Q13: 什么是冒烟测试(Smoke Testing)?

答案:

新构建或大包进环境后,先用很少的时间跑一遍主流程和关键路径,确认「能跑、没有明显拦路虎」,再决定是否投入完整回归。选例上通常是登录、下单、支付这类主链路,以及配置和高风险模块。常见于每日构建后、大改后进测试环境或预发环境的第一道闸。

Q14: 什么是回归测试(Regression Testing)?

答案:

代码或需求改了以后,重新跑一批用例,确认没有引入新缺陷、老功能也没被带崩。范围上可以全量跑、只跑相关模块,或按风险/变更面做精选,面试里常问这三种的差别。策略上常听到风险驱动、变更驱动、覆盖率辅助。现实里用例多、耗时长,一般要配合自动化和优先级,否则团队会被拖住。

Q15: 软件测试的分类有哪些?

答案:

可以按很多维度划分,面试时最好先听清对方想问的是「阶段」「手段」还是「目的」。

划分角度常见类型
阶段单元、集成、系统、验收
方法黑盒、白盒、灰盒
目的功能、性能、安全、兼容性、可用性等
执行方式手工、自动化
时机静态(不运行程序)、动态(运行程序)
范围(常与阶段重叠)单元、集成、系统

二、测试生命周期(5题)

Q16: 软件测试生命周期(STLC)包括哪些阶段?

答案:

STLC 描述测试从「想清楚怎么测」到「收尾与改进」的一条线,常见分法包含:计划、设计、执行、评估、维护。各阶段会随版本迭代,不是一次走完就结束。

计划阶段定范围、策略、资源和进度;设计阶段产出用例、数据、环境与脚本;执行阶段跑用例、记结果、报缺陷并做回归;评估阶段看覆盖率、缺陷趋势和发布风险,写总结;维护阶段持续更新用例与流程,为下一轮做准备。

Q17: 测试计划阶段的主要活动有哪些?

答案:

先读透业务与功能需求,明确测试需求、范围边界和风险。再定测试策略:测哪些类型、用什么工具和环境。接着做资源规划(人、时间、环境、工具),对风险分级并写应对措施。最后落成测试计划文档,走完评审与批准,团队才有统一依据。

Q18: 测试设计阶段的主要活动有哪些?

答案:

核心是设计用例:选设计方法、编写、评审并迭代。同步准备测试数据与环境(搭建、配置、验证可用)。若有自动化,还要开发、调试和维护脚本,并把工具安装配置到位。设计阶段产出直接决定执行是否顺利、漏测多不多。

Q19: 测试执行阶段的主要活动有哪些?

答案:

按计划执行用例,记录通过/失败与证据。缺陷要报、要跟,修复后验证,必要时关闭。盯执行进度、修复进度和风险,定期同步状态。改代码后做回归,确认旧问题修好且未引入新问题。测试数据与环境要随版本更新、清理,避免脏数据干扰。

Q20: 测试评估阶段的主要活动有哪些?

答案:

把执行结果与缺陷分布、趋势对照看,结合功能、代码、需求等覆盖率,评估软件质量与发布就绪度。撰写测试总结、缺陷分析、质量评估等报告,并记录本轮经验与改进点,反馈给下一轮计划与设计。


三、测试级别(10题)

Q21: 什么是单元测试?单元测试的特点是什么?

答案:

单元测试针对最小可测单元(常见是函数或方法),在隔离环境里验证逻辑是否正确。特点是粒度小、跑得快、依赖常靠 Mock/Stub 隔开、适合自动化,并追求较高代码覆盖率。它能较早暴露问题、降低修复成本、给重构兜底,但也要投入写测、维护测和框架成本。

Q22: 什么是集成测试?集成测试的类型有哪些?

答案:

集成测试验证多个单元拼在一起后,接口与协作是否正常。常见策略包括:大爆炸(一次全拼,快但难定位)、自顶向下(从上层往下,早期看主流程但要 Stub)、自底向上(从底层往上,少用 Stub 但主功能晚验)、增量(一块块拼,定位相对容易)、三明治(上下结合,折中复杂度)。

Q23: 什么是系统测试?系统测试包括哪些类型?

答案:

系统测试在完整、已集成的系统上做,对照需求规格看整体是否达标。类型上常覆盖:功能与业务流程、性能(负载/压力/稳定等)、安全、多浏览器/系统/设备兼容、可用性与体验、安装升级卸载等。重点是「整条链」而不是单个函数。

Q24: 什么是验收测试?验收测试的类型有哪些?

答案:

验收测试由用户或客户侧主导,验证系统是否满足业务与合同要求。常见形态:UAT(最终用户按业务场景验收)、Alpha(内部用户、偏开发/测试环境)、Beta(外部用户、偏真实或生产规模)、合同验收、以及侧重运维与上线流程的操作验收等。

Q25: 各测试级别之间的关系是什么?

答案:

从下到上粒度变大、环境更贴近真实:单元验证最小逻辑,集成验证模块间接口,系统验证整系统是否满足规格,验收验证是否满足业务与交付条件。执行上单元多为开发自测,集成开发与测试协作,系统以测试为主,验收以用户/客户为主。

测试金字塔想表达的是:底层大量快速便宜的自动化(多为单测),往上集成、系统、端到端依次变少、变慢、维护成本更高,用比例换反馈速度与稳定性。与之相反的是「冰激凌锥」:端到端占比过大,反馈慢、易碎、难维护,一般要避免。

Q26: 单元测试和集成测试的区别是什么?

答案:

单元测单个函数或类,集成测多个模块拼起来后的行为。单元强调隔离与 Mock,集成更常接真实或半真实依赖。单元跑得更快,集成更慢。单元更容易定位逻辑错误,集成更容易暴露接口与数据不一致。执行上单元多为开发,集成常由开发与测试一起做。

对比单元测试集成测试
对象最小代码单元多模块组合与接口
依赖多用 Mock/Stub多用真实或半真实依赖
速度快相对慢
典型问题逻辑错误接口、协议、数据不一致

Q27: 系统测试和验收测试的区别是什么?

答案:

系统测试偏「技术规格是否满足」,多在测试环境、用测试数据,由测试团队按技术用例执行。

验收测试偏「业务目标是否达成」,常在类生产或生产环境、更接近真实数据,由用户或客户按业务场景签字。

两者衔接:系统测认为技术上 OK,不代表业务方已经买单。

对比系统测试验收测试
目的对照需求规格的技术符合性对照业务/合同的接受条件
视角技术用户与业务
环境测试环境为主类生产/生产常见
执行方测试为主用户/客户为主

Q28: 什么是测试金字塔?如何应用测试金字塔?

答案:

金字塔建议把自动化主力放在底层单测(多而快),中层放适量集成/API 测,顶层留少量端到端或关键路径 UI 测,用比例控制反馈速度与维护成本。落地时优先保证单测可跑、稳定、与 CI 集成;集成层覆盖关键接口与契约;E2E 只保留高价值主流程,避免「什么都开车点一遍」。

Q29: 什么是测试冰激凌锥?为什么应该避免?

答案:

冰激凌锥是反模式:大量端到端手工或 UI 自动化在顶层,单测却很少。结果是流水线慢、用例脆弱、定位问题难、维护成本高,反馈还晚。团队应通过补单测、接口测和合理分层,把形状往金字塔拉回去。

Q30: 如何确定测试级别的测试范围?

答案:

先看需求与风险:关键路径、高风险模块、新改动的部分优先。再结合覆盖率目标(功能、需求、代码等)和时间、人力、环境约束做裁剪。原则是:关键功能必须覆盖,高风险和新功能加严,改动点配套回归;别试图在有限窗口里「全测一切」,而是把资源压在刀刃上。


四、测试类型(10题)

Q31: 什么是功能测试?功能测试包括哪些内容?

答案:

功能测试验证实现是否符合需求:功能点是否正确、主流程与异常流程是否完整、输入输出与数据校验是否可靠、界面与交互是否符合预期、异常时提示与恢复是否合理。面试时可以把「需求—场景—数据—界面—异常」串成一条线说。

Q32: 什么是性能测试?性能测试包括哪些类型?

答案:

性能测试关注负载下响应时间、吞吐、资源占用与稳定性。负载测在正常或约定负载下看指标;压力测加压到极限附近看崩溃点与恢复;容量测偏大数据量或存量数据场景;稳定性测长跑查泄漏与缓慢劣化;并发测关注多用户同时访问时的一致性与锁竞争。

Q33: 什么是安全测试?安全测试包括哪些内容?

答案:

安全测试验证认证、授权、会话、传输与存储加密、配置与日志是否符合基线,并尝试暴露常见漏洞(如注入、XSS、CSRF 等)。既要测「坏人能干什么」,也要测「正常权限是否越界」。

Q34: 什么是兼容性测试?兼容性测试包括哪些类型?

答案:

验证在不同浏览器、操作系统、设备分辨率、前后版本与数据格式下行为是否一致、升级迁移是否平滑。移动端还要考虑厂商碎片化。核心是矩阵别无限膨胀,按用户占比与风险裁剪。

Q35: 什么是可用性测试?可用性测试包括哪些内容?

答案:

关注好不好学、好不好找、操作是否顺手、文案与帮助是否够用、出错时用户是否知道下一步。常结合走查、任务完成率、主观问卷或无障碍要求一起看。

Q36: 什么是接口测试?接口测试包括哪些内容?

答案:

针对 API、RPC、消息等接口验证契约:参数校验、返回值、状态码、幂等与错误语义;再结合性能、安全、兼容与异常场景(超时、乱序、脏数据)。接口测稳定后,上层 UI 才能少背锅。

Q37: 什么是数据库测试?数据库测试包括哪些内容?

答案:

验证约束、主外键、事务与一致性、查询与写入性能、权限与注入面、备份恢复是否可靠。数据类问题一旦进生产往往代价高,适合在集成与系统阶段重点覆盖。

Q38: 什么是安装测试?安装测试包括哪些内容?

答案:

覆盖安装、卸载、升级、静默安装、权限与依赖检测、路径与配置写入、失败回滚与清理。还要在不同权限账户、磁盘空间不足、杀软拦截等异常下观察表现。

Q39: 什么是国际化测试?国际化测试包括哪些内容?

答案:

验证多语言界面、编码与字体、日期时间数字货币等地区格式,以及文化、合规差异是否处理正确。常与本地化(翻译质量、排版)搭配,但国际化更偏「框架能否撑住多地区」。

Q40: 什么是可访问性测试?可访问性测试包括哪些内容?

答案:

检查视障读屏、色对比与字号,听障替代提示,运动障碍键盘可达与焦点顺序,认知负荷与文案清晰度,并对照 WCAG 等标准做抽检或工具扫描。


五、缺陷管理(10题)

Q41: 什么是软件缺陷?缺陷的分类有哪些?

答案:

缺陷指软件中与需求、设计不符,或影响使用的错误与不足。分类角度很多:按严重程度(致命/严重/一般/轻微等)、按优先级(先修谁)、按类型(功能、性能、界面、兼容、安全等)、按来源(需求、设计、编码、测试环境等)。实际项目里要区分「严重」和「优先」:影响大不一定本轮就要修,业务紧迫度会插队。

Q42: 缺陷的生命周期是什么?

答案:

从新建、分配、开发确认与修复、待测、验证通过关闭,到被拒绝、延期或修复不全重新打开等分支。不同团队工具里状态名字会略有出入,但主线大同小异。下图用中文状态名示意常见流转(可与 Jira、禅道等工具里的英文状态对照)。

Q43: 如何编写高质量的缺陷报告?

答案:

标题一句话说清问题与影响;正文写清环境、版本、复现步骤、期望与实际结果,能附日志、截图、录屏更好。严重级别与优先级分开填,避免开发猜。步骤要可复现,数据与账号若涉敏要脱敏或说明获取方式。

示例:

标题:登录页面输入错误密码后提示信息不正确

描述:
在登录页面输入错误的密码后,系统显示的提示信息不正确。

复现步骤:
1. 打开登录页面
2. 输入用户名:testuser
3. 输入错误密码:wrongpass
4. 点击登录按钮

预期结果:显示"用户名或密码错误"

实际结果:显示"系统错误,请稍后重试"

环境:
- 操作系统:Windows 10
- 浏览器:Chrome 90.0
- 软件版本:v1.2.3

Q44: 缺陷的严重程度和优先级有什么区别?

答案:

严重程度看技术影响面:崩了、数据坏了、主流程不可用,通常算高。

优先级看业务与排期:本轮必须修、可以排队、或先 workaround。

可能出现「严重但不急修」(有临时绕过且影响面可控)或「不严重但很急」(演示前的小文案)——面试常考这个差别。

Q45: 如何分析缺陷?缺陷分析包括哪些内容?

答案:

从分布(模块、阶段、类型)、趋势(新增/关闭/遗留)、根因(重复类问题来自哪一环节)几方面看,并据此做预防:补用例、改流程、加强评审或静态检查。也要看缺陷报告与修复质量本身,避免「修了但描述不清、验证困难」。

Q46: 什么是缺陷密度?如何计算缺陷密度?

答案:

缺陷密度是单位规模里的缺陷数,常见算法:缺陷数除以千行代码(缺陷/KLOC),或除以功能点。用来横向对比模块健康度、辅助发布判断与资源倾斜。注意不同统计口径(是否含已关闭、是否含重复)要一致才有可比性。

Q47: 什么是缺陷发现率?如何提高缺陷发现率?

答案:

发现率可理解为单位时间或每轮测试里有效缺陷的产出效率。提升手段包括:更合理的用例设计与评审、组合探索性测试、工具与自动化辅助、贴近生产的测试数据与环境,以及测试与产品、研发的早期对齐,减少「测了半天发现需求理解错了」。

Q48: 什么是缺陷修复率?如何跟踪缺陷修复率?

答案:

修复率常用「已修复数 / 某口径下总缺陷数」看进度,并结合重新打开率看质量。跟踪上按日或按构建刷新看板,按模块、严重度、责任人切片,配合趋势图给发布会讨论。注意分母是否含已拒绝、重复,团队要先约定统计规则。

Q49: 如何处理缺陷争议?

答案:

先对齐事实:复现路径、日志、影响范围。再对照严重度/优先级规范,必要时拉产品定业务取舍。仍僵持可升级负责人裁决,并记录结论避免下次扯皮。长期靠清晰标准、模板化和定期复盘减少争议。

Q50: 缺陷管理的最佳实践有哪些?

答案:

报告要及时、信息够、分类准;状态流转有人负责,避免长期卡在「处理中」;定期做缺陷分析驱动改进;沟通上就事论事;工具上用好筛选、看板与统计,减少手工表格。把「怎么报、怎么验、怎么关」写成团队公约,比堆工具更重要。


总结

全文按五块组织:基础概念与方法论、STLC 各阶段、测试级别与金字塔、常见测试类型、缺陷全生命周期与管理实践。题量与章节标题中的题数一致,可按章复习或挑薄弱块精读。

最近更新: 2026/5/12 03:06
Contributors: raina
Prev
面试题导航
Next
02-测试用例设计面试题