质量保证面试题

2025 年 4 月 14 日 | 阅读 13 分钟
Quality Assurance Interview Questions

以下是经常被问到的 QA 面试题质量保证面试题 及其答案列表。

1) 什么是质量保证?

QA 代表质量保证。QA 是一系列旨在确保已开发的软件满足 SRS 文档中提到的所有规格或要求。.

QA 遵循 PDCA 循环

QA Interview Questions1
  • 计划

计划是质量保证的一个阶段,在此阶段,组织确定构建高质量软件产品所需的流程。

  • Do

执行是开发和测试流程的一个阶段。

  • Check

此阶段用于监控流程,并验证这些流程是否满足用户要求。

  • 行为

行动是实施改进流程所需操作的阶段。


2) 质量保证和软件测试有什么区别?

以下是质量保证和软件测试之间区别的列表

 质量保证软件测试
活动质量保证是一系列用于确保已开发的软件满足所有用户要求的活动。软件测试是在开发阶段之后执行的活动,用于检查实际结果是否与预期结果匹配,以确保软件没有错误。简而言之,我们可以说软件测试是对被测应用程序的验证。
活动它包括实施流程、程序和标准的活动。它包括测试验证的活动。
导向它是面向过程的,即它检查流程以确保向客户交付高质量的软件。它是面向产品的,即检查软件的功能。
活动类型预防性纠正性
目的质量保证的主要目标是交付高质量的软件。软件测试的主要目标是查找已开发软件中的错误。

3) Build 和 Release 有什么区别,请写出 Build 和 Release 之间的区别?

Build 定义为开发团队将软件交给测试团队。

Release 定义为测试人员和开发人员将软件移交给用户。


4) 定义 Bug 泄露和 Bug 发布?

Bug 泄露 定义为测试团队未发现但最终用户发现的 Bug。Bug 发布是指测试人员在知道发布中存在 Bug 的情况下将其发布到市场。这些类型的 Bug 优先级和严重性较低。这种情况发生时,客户希望按时交付软件,而不是延迟交付软件和纠正 Bug 所涉及的成本。


5) 软件开发问题的解决方案是什么?

软件开发问题有五种不同的解决方案。

  • 软件开发的流程应清晰、完整并得到所有人的同意,从而设定流程标准。
  • 接下来是现实的计划,例如计划、设计、测试、修复 Bug 和重新测试的时间。
  • 需要充分的测试,在开发了一个或多个模块后立即开始测试。
  • 使用团队沟通工具。
  • 在设计阶段使用快速原型,以便客户更容易发现期望。

6) 解释软件质量保证中的文档类型?

以下是软件质量保证中的文档类型

  • 需求文档

应用程序中要添加的所有功能都以需求的形式记录,该文档称为需求文档。此需求文档由项目团队中的各种人员(如开发人员、测试人员、业务分析师等)协作制作。

  • 测试指标

测试指标是量化度量,用于确定测试过程的质量和有效性。

  • 测试计划

它定义了将应用于测试应用程序的策略、将使用的资源、将执行测试的测试环境以及测试活动的计划。

  • 测试用例

测试用例是一组在测试时使用的步骤和条件。执行此活动以验证软件的所有功能是否正常工作。测试用例可以有多种类型,例如逻辑、功能、错误、负面测试用例、物理测试用例、UI 测试用例等。

  • 可追溯性矩阵

可追溯性矩阵是一个表,用于跟踪用户需求和测试用例。需求可追溯性矩阵的主要目的是确保所有测试用例都得到覆盖,以便在软件测试期间不会遗漏任何功能。

  • 测试场景

测试场景是测试用例的集合,有助于测试团队确定项目的正面和负面方面。


7) “测试驱动开发”的规则是什么?

在测试驱动开发中,在编写实际代码之前准备好测试用例。这意味着您必须在应用程序的实际开发之前编写测试用例。

测试驱动开发周期

  • 编写测试用例
  • 执行测试用例
  • 如果测试用例失败,则进行更改以使其正确
  • 重复此过程
QA Interview Questions2

8) 什么是可追溯性矩阵?

可追溯性矩阵是一份文档,用于映射和跟踪用户需求与测试用例。需求可追溯性矩阵的主要目的是确保所有测试用例都得到覆盖,以便在软件测试期间不会遗漏任何功能。


9) 写出 QA 和程序员的职责区别?

职责区别如下

序号。QA 职责程序员职责
1.QA 团队关注流程质量程序员关注产品质量
2.QA 确保用于开发高质量产品的流程程序员使用这些流程,以便最终产品具有良好的质量

程序员在流程执行过程中发现的任何问题都会告知 QA,以便他们改进流程。


10) 验证和确认有什么区别?

验证验证
验证是在开发阶段评估步骤以确定它们是否满足用户要求的过程。确认是在开发过程后评估产品以确定它是否满足指定要求的过程。
验证是静态测试。确认是动态测试。
验证测试在确认之前执行。确认在验证之后执行。
它不涉及执行代码。它涉及执行代码。
它涉及评审、走查、检查和桌面检查等活动。它涉及黑盒测试、白盒测试和非功能性测试等方法。
它在开发周期之前发现 Bug。它在开发周期之后发现 Bug。
它符合 SRS 文档中指定的标准。它检查是否满足指定的标准。
QA 团队执行验证,其中他们验证软件是否符合 SRS 文档中指定的标准。软件测试人员对产品进行测试。

11) 定义软件测试中面临的关键挑战?

应用程序应稳定以便测试。

  • 测试应有时限。
  • 先执行哪些测试?
  • 测试完整的应用程序。
  • 回归测试
  • 缺乏熟练的测试人员。
  • 不断变化的需求。
  • 缺乏资源、培训和工具。

12) 重测和回归测试有什么区别?

回归重新测试
回归测试用于验证代码中的新更改是否影响了未更改的功能。重测是对上次执行失败的模块进行的测试。
回归测试的主要目标是任何代码更改都不应影响现有功能。重测是对已修复缺陷进行的测试。
它是通用测试,因为只要代码发生更改就可以随时执行。这是计划好的测试。
它是在已通过的测试用例上执行的。它是在已失败的测试用例上执行的。
回归测试可以自动化,而手动测试则昂贵且耗时。要执行重测,我们无法自动化测试用例。
回归测试不包括缺陷验证。缺陷验证属于重测。
根据资源可用性,回归测试与重测并行执行。重测的优先级高于回归测试,因此始终在回归测试之前执行。

13) 定义 QA 在软件开发中的作用?

QA 代表质量保证。QA 团队通过监控整个开发过程来追求质量。QA 跟踪结果并调整流程以满足期望。

质量保证的作用是

  • QA 团队负责监控开发过程中要执行的流程。
  • QA 团队的职责包括计划、测试、执行流程。
  • QA Lead 创建时间表并就产品的质量保证计划达成一致。
  • QA 团队将 QA 流程传达给团队成员。
  • QA 团队确保测试用例与需求的追溯性。

14) 描述 QA 中的风险维度?

风险维度是

  • 进度:不切实际的进度,一天内开发出庞大的软件。
  • 客户:需求定义模糊,需求不明确,需求变更。
  • 人力资源:项目所需技能水平的资源不足。
  • 系统资源:无法获得所有关键资源,无论是硬件还是软件工具,还是软件许可证都会产生不利影响。
  • 质量:资源不足、交付时间紧迫和频繁的需求变更等复合因素会影响测试产品的质量。

15) 什么是测试件?

测试件(Test ware)是一个术语,用于描述执行测试所需的所有材料。测试件包括测试计划、测试用例、测试数据以及执行和设计测试所需的任何其他项。


16) 什么是猴子测试?

  • 猴子测试是一种黑盒测试,用于通过提供随机输入来测试应用程序,以检查系统行为,例如检查系统是否崩溃。
  • 当用户提供随机输入以检查系统行为时,这种测试会自动执行
  • 执行猴子测试无需创建测试用例。
  • 它也可以自动化,即我们可以编写程序或脚本来生成随机输入以检查系统行为。
  • 当执行压力测试或负载测试时,此技术很有用。

有两种猴子

  • 智能猴子
  • 笨猴子

智能猴子

  • 智能猴子是对应用程序有大致了解的猴子。
  • 它们知道应用程序的页面将重定向到哪个页面。
  • 它们也知道它们提供的输入是有效的还是无效的。
  • 如果它们发现任何错误,那么它们足够聪明地提交 Bug。
  • 它们也知道菜单和按钮是什么。

笨猴子

  • 笨猴子是对应用程序一无所知的猴子。
  • 它们不知道应用程序的页面将重定向到哪里。
  • 它们提供随机输入,并且不知道应用程序的起始点和结束点。
  • 它们对应用程序了解不多,但仍然会发现环境故障或硬件故障等 Bug。
  • 它们对应用程序的功能和 UI 也不太了解。

17) 写出预防性方法和反应性方法的区别?

预防性方法:也称为验证过程。预防性是防止缺陷的方法。在此方法中,在软件开发生命周期的早期阶段,即在软件开发之前,就设计了测试。在此方法中,测试人员试图在早期阶段防止缺陷;这属于质量分析。

反应性方法:也称为确认过程。此方法用于识别缺陷。在此方法中,测试是为在软件开发后执行而设计的。在此方法中,我们试图找出缺陷。这属于质量控制。


18) 什么是质量审核?

审核被定义为现场验证活动,例如对流程或质量体系的检查或检验。质量审核是内部或外部质量审核员或审核团队对质量体系进行的系统分析过程。质量审核在预定的时间间隔进行,并确保机构拥有清晰定义的内部系统监控程序以及有效的行动。审核是用于验证流程客观证据的重要管理工具。


19) 什么是测试计划?

测试计划文档是包含所有测试活动计划以交付高质量产品的文档。测试计划文档源于许多活动,例如产品描述、SRS 或所有未来项目活动的用例文档。通常由测试负责人或测试经理准备,该文档的重点是描述要测试什么、如何测试、何时测试、谁将执行什么测试。

 


20) 你如何决定何时测试足够了?

这是最关键的问题之一。作为项目经理或项目负责人,有时我们可能面临需要取消测试以提前发布产品的局面。在那些情况下,我们必须决定测试人员是否已充分测试了产品。

在实际项目中,有许多因素需要考虑以决定何时停止测试

  • 如果我们达到了测试截止日期或发布截止日期
  • 通过进入设定的测试用例通过率。
  • 在实际项目中,如果项目的风险在可接受范围内。
  • 如果所有高优先级 Bug 和阻塞性 Bug 都已修复。
  • 如果我们满足验收标准。

21) 如何设计测试用例?

设计测试用例主要有两种技术

  • 黑盒测试
  • 这是一种基于规范的技术,测试人员将软件视为一个具有输入和输出的黑盒。
  • 在黑盒测试中,测试人员不知道软件的内部结构,他们只知道软件做什么,但不知道软件如何做。
  • 这种技术适用于存在规范的所有测试级别。
  • 白盒测试
  • 白盒测试是一种评估代码内部逻辑和结构的测试技术。
  • 为了实现白盒测试,测试人员应该了解编码,以便他们能够处理内部代码。他们查看内部代码并找出发生故障的单元。

22) 什么是探索性测试?

探索性测试是一种非正式的软件测试方式。它不遵循正式流程,如需求文档、测试计划、测试用例等。

探索性测试的特点是

  • 探索性测试在应用程序上的正式测试完成后执行。
  • 探索性测试的主要目的是在不遵循任何流程的情况下破坏应用程序。
  • 执行探索性测试的测试人员应具备深厚的对产品的知识。

23) 猴子测试与探索性测试有何不同?

猴子测试和探索性测试都遵循非正式方法,但在猴子测试中,我们不需要对软件有深入的了解。然而,要执行探索性测试,测试人员应具备对软件的深入了解。


24) 探索性测试与探索性测试有何不同?

以下是探索性测试和探索性测试之间区别的列表

即席测试探索性测试
探索性测试是对软件的测试,没有任何文档或需求规范。在探索应用程序时了解软件。
不需要文档。探索性测试中需要文档。
探索性测试的主要目标是实现测试的完善。探索性测试的主要目标是学习应用程序。
这是一种非正式的方法。这是一种正式的方法。
探索性测试不需要专家测试工程师。探索性测试不需要专家测试工程师。

25) 软件测试中有哪些不同的级别?

软件测试有四个不同的级别

  • 单元/组件测试
  • 集成测试
  • 系统测试
  • 验收测试
QA Interview Questions3

单元测试

  • 在大多数模型中,它是最低级别。
  • 单元是软件中的程序或模块。
  • 单元测试由程序员执行,测试模块,如果发现任何 Bug,则会立即修复。

集成测试

  • 集成意味着所有模块的组合,所有这些模块作为一个组进行测试。
  • 集成测试对从一个模块流向另一个模块的数据进行测试。
  • 它基本上检查两个或多个模块之间的通信,但不检查单个模块的功能。

系统测试

  • 系统测试用于测试完整或集成的系统。
  • 它测试软件以确保其符合 SRS 文档中指定的标准。
  • 它是最终测试,执行功能性和非功能性测试。

验收测试

验收测试由用户或客户执行,以检查它是否满足他们的要求。


26) 什么是 Bug 生命周期?

Bug 生命周期也称为缺陷生命周期。Bug 生命周期是 Bug 所经历的一组特定状态。缺陷所经历的状态数量因项目而异。

QA Interview Questions4
  • 新建

当首次记录并发布新的缺陷时,状态被指定为“新建”。

  • 已分配

一旦测试人员发布了 Bug,测试人员的负责人就会批准该 Bug 并将其分配给开发团队。

  • 开放

开发人员开始分析并着手修复缺陷。

  • 固定

当开发人员进行必要的代码更改并验证更改时,他们可以将 Bug 状态设置为“已修复”。

  • 重测

测试人员在此阶段对代码进行重测,以检查开发人员是否已修复缺陷,并将状态更改为“重测”。

  • 重新打开

如果即使开发人员修复了 Bug,Bug 仍然存在,那么测试人员会将状态更改为“重新打开”,并且 Bug 将再次经历 Bug 生命周期。

  • 已验证

测试人员在开发人员修复 Bug 后对其进行重测,如果没有发现 Bug,则状态会更改为“已验证”。

  • 封闭

如果 Bug 不再存在,则状态会更改为“已关闭”。

  • 重复

如果缺陷重复两次或缺陷对应于先前 Bug 的相同概念,则状态会更改为“重复”。

  • 已拒绝

如果开发人员认为该缺陷不是真正的缺陷,则状态会更改为“已拒绝”。

  • 已推迟

如果 Bug 的优先级不高,可以在下一个版本中解决,则状态会更改为“已推迟”。