手动测试面试问题与答案

2025年3月17日 | 阅读 21 分钟
Software Testing Interview Questions

下面列出了最常问的软件测试面试问题QTP 面试问题及答案。

1) 什么是 PDCA 循环,测试在其中扮演什么角色?

正常的软件开发过程有四个步骤。简而言之,这些步骤被称为 PDCA。

Software Testing Interview Questions

PDCA 代表计划(Plan)、执行(Do)、检查(Check)、行动(Act)。

  • 计划: 它定义了目标和实现该目标的计划。
  • 执行: 它取决于计划阶段确定的计划策略。根据这个阶段执行。
  • 检查: 这是软件开发阶段的测试部分。它用于确保我们按计划进行并获得所需结果。
  • 行动: 此步骤用于解决在检查周期中发生的任何问题。它会采取相应的适当行动并重新修订计划。

开发人员负责项目的“计划和构建”部分,而测试人员则负责项目的“检查”部分。


2) 白盒测试、黑盒测试和灰盒测试有什么区别?

黑盒测试: 黑盒测试策略基于需求和规范。它不需要了解被测试软件的内部路径、结构或实现。

白盒测试: 白盒测试基于被测试软件的内部路径、代码结构和实现。它需要全面详细的编程技能。

灰盒测试: 这是另一种测试类型,我们查看正在测试的“盒子”,它只用于了解它是如何实现的。之后,我们关闭“盒子”并使用黑盒测试。

以下是白盒测试、黑盒测试和灰盒测试的区别

黑盒测试灰盒测试白盒测试
黑盒测试不需要程序的实现知识。灰盒测试对内部程序的了解有限。在白盒测试中,完全需要程序的实现细节。
它具有低粒度。它具有中等粒度。它具有高粒度。
它也被称为不透明盒测试、封闭盒测试、输入-输出测试、数据驱动测试、行为测试和功能测试。它也被称为半透明测试。它也被称为玻璃盒测试、透明盒测试。
它是用户验收测试,即由最终用户完成。它也是用户验收测试。主要由测试人员和程序员完成。
测试用例由功能规范制定,因为内部细节未知。测试用例由程序的内部细节制定。测试用例由程序的内部细节制定。

3) 在生命周期早期设计测试有什么好处?

在生命周期早期设计测试可以防止缺陷进入主代码。


4) 缺陷的类型有哪些?

缺陷有三种类型:错误、遗漏和多余。

错误: 这些缺陷是由于需求实现不正确而引起的。

遗漏: 它用于指定遗漏的事物,即未实现规范,或客户需求未得到适当记录。

多余: 这是产品中包含的额外功能,而不是最终客户提供的。它总是与规范存在差异,但可能是客户所需的一个属性。然而,由于与用户需求存在差异,它被认为是缺陷。


5) 什么是探索性测试?

针对应用程序同时进行测试设计和执行被称为探索性测试。在这种测试中,测试人员利用其领域知识和测试经验来预测系统可能在何处以及在何种条件下出现意外行为。


6) 什么时候应该进行探索性测试?

探索性测试在软件发布前作为最终检查进行。它是自动化回归测试的补充活动。


7) 在生命周期早期设计测试有什么好处?

它有助于您防止代码中出现缺陷。


8) 谈谈基于风险的测试。

基于风险的测试是一种通过风险优先级对测试进行排序的测试策略。它基于详细的风险分析方法,该方法根据风险的优先级对其进行分类。最高优先级的风险首先得到解决。


9) 什么是验收测试?

验收测试旨在使用户/客户确定是否接受软件产品。它还验证软件是否遵循一组约定的验收标准。在此级别,系统将进行用户可接受性测试。

Software Testing Interview Questions

验收测试的类型有

  1. 用户验收测试:它也被称为最终用户测试。这种类型的测试在测试人员测试产品后进行。用户验收测试是根据用户需求、要求和业务流程进行的测试,以确定系统是否满足验收标准。
  2. 操作验收测试:操作验收测试在产品发布到市场之前进行。但是,它在用户验收测试之后进行。
  3. 合同和法规验收测试:在合同验收测试的情况下,系统根据某些标准进行测试,这些标准在合同中制定。在法规验收测试的情况下,检查软件应用程序是否符合政府法规。
  4. Alpha 和 Beta 测试:Alpha 测试在开发环境中进行,然后在发布给客户之前进行。从 Alpha 测试人员那里获取输入,然后开发人员修复错误以提高产品质量。与 Alpha 测试不同,Beta 测试在客户环境中进行。客户执行测试并提供反馈,然后实施这些反馈以提高产品质量。

10) 什么是无障碍测试?

无障碍测试用于验证软件产品是否可供残障人士(聋人、盲人、智障人士等)使用。


11) 什么是即席测试?

即席测试是一个测试阶段,测试人员通过随机尝试系统的功能来尝试“破坏”系统。


12) 什么是敏捷测试?

敏捷测试是一种使用敏捷方法论的测试实践,即遵循测试优先设计范式。


13) 什么是 API(应用程序编程接口)?

应用程序编程接口是一组形式化的软件调用和例程,应用程序可以通过它们访问支持系统或网络服务。


14) 自动化测试是什么意思?

通过使用无需人工干预即可执行测试的软件工具进行的测试称为自动化测试。自动化测试可用于 GUI、性能、API 等。


15) 什么是自底向上测试?

自底向上测试是一种遵循集成测试的测试方法,其中首先测试最低级别的组件,然后测试更高级别的组件。该过程重复进行,直到测试最高级别的组件。


16) 什么是基线测试?

在基线测试中,运行一组测试以捕获性能信息。基线测试通过使用收集到的信息并对应用程序进行更改来提高应用程序的性能和能力。基线将应用程序的当前性能与其以前的性能进行比较。


17) 什么是基准测试?

基准测试是根据其他组织提供的行业标准比较应用程序性能的过程。

这是一种标准测试,它指定了我们的应用程序相对于其他应用程序的地位。


18) 哪些类型的测试对 Web 测试很重要?

有两种类型的测试对 Web 测试非常重要

  • 性能测试:性能测试是一种测试技术,用于测量系统的质量属性,例如在不同负载条件下的响应速度、速度和可伸缩性。性能测试描述了在产品发布到市场之前需要改进哪些属性。
  • 安全测试:安全测试是一种测试技术,用于确定数据和资源是否受到入侵者的保护。

19) 在测试场景中,Web 应用程序和桌面应用程序有什么区别?

Web 应用程序和桌面应用程序之间的区别在于,Web 应用程序向世界开放,可能有许多用户同时在不同时间访问应用程序,因此负载测试和压力测试很重要。Web 应用程序也容易受到各种形式的攻击,主要是 DDOS,因此安全测试在 Web 应用程序的情况下也非常重要。


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

验证和确认的区别

验证验证
验证是静态测试。确认是动态测试。
验证发生在确认之前。确认发生在验证之后。
验证评估计划、文档、需求和规范。确认评估产品。
在验证中,输入是清单、问题列表、走查和检查。在无效测试中,实际产品被测试。
验证输出是一组文档、计划、规范和需求文档。无效是实际产品作为输出。

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

重新测试和回归测试的区别列表

回归重新测试
回归是一种软件测试类型,用于检查代码更改是否影响应用程序的当前特性和功能。重新测试是检查在最终执行中失败的测试用例的过程。
回归测试的主要目的是代码所做的更改不应影响现有功能。重新测试应用于缺陷修复。
缺陷验证不是回归测试的一个要素。缺陷验证是回归测试的一个要素。
回归测试可以自动化执行,而手动测试可能昂贵且耗时。重新测试无法自动化执行。
回归测试也称为通用测试。重新测试也称为计划测试。
回归测试关注执行在早期版本中通过的测试用例。重新测试关注执行早期失败的测试用例。回归测试可以与重新测试并行执行。重新测试的优先级高于回归测试。

22) 测试的预防性方法和反应性方法有什么区别?

预防性测试设计在早期,而反应性测试在软件生产后设计。


23) 退出标准的目的是什么?

退出标准用于定义测试级别的完成。


24) 为什么要使用决策表测试?

决策表由一列中的输入和同一列中但在输入下方的输出组成。

决策表测试用于测试规范采用规则或因果组合形式的系统。您在表中得到的提醒会探索输入的组合以定义生成的输出。

 


25) 什么是 Alpha 和 Beta 测试?

以下是 Alpha 和 Beta 测试之间的主要区别

编号。Alpha 测试Beta 测试
1)它始终由开发人员在软件开发现场完成。它始终由客户在其现场执行。
2)它也由独立的测试团队执行它不由独立的测试团队执行
3)它不对市场和公众开放。它对市场和公众开放。
4)它始终在虚拟环境中执行。它始终在实时环境中执行。
5)它用于软件应用程序和项目。它用于软件产品。
6)它遵循白盒测试和黑盒测试的类别。它只是黑盒测试的一种。
7)它没有其他名称。它也被称为现场测试。

26) 什么是随机/猴子测试?

随机测试也称为猴子测试。在这种测试中,数据通常使用工具随机生成。数据要么使用工具,要么使用某种自动化机制生成。

随机测试有一些局限性

  • 大多数随机测试是冗余和不切实际的。
  • 它需要更多时间来分析结果。
  • 如果您不记录用于测试的数据,则无法重新创建测试。

27) 什么是负面测试和正面测试?

负面测试: 当您输入无效输入并收到错误时,称为负面测试。

正面测试: 当您输入有效输入并期望根据规范完成某些操作时,称为正面测试。


28) 测试独立性有什么好处?

测试独立性非常有用,因为它避免了作者在定义有效测试时的偏见。


29) 什么是边界值分析/测试?

在边界值分析/测试中,我们只测试精确的边界,而不是击中中间。例如:如果有一个银行应用程序,您最多可以提取 25000,最少可以提取 100。因此在边界值测试中,我们只测试高于最大值和低于最大值。这涵盖了所有场景。

下图显示了上述银行应用程序的边界值测试。TC1 和 TC2 足以测试银行的所有条件。TC3 和 TC4 是重复/冗余的测试用例,它们对测试没有任何价值。因此,通过应用适当的边界值基本原理,我们可以避免重复的测试用例,这些测试用例对测试没有任何价值。


30) 您将如何测试 Web 应用程序的登录功能?

有许多方法可以测试 Web 应用程序的登录功能

  • 使用有效登录名登录,关闭浏览器并重新打开,查看您是否仍然登录。
  • 登录,然后注销,然后返回登录页面,查看您是否真正注销。
  • 登录,然后返回同一页面,您是否再次看到登录屏幕?
  • 会话管理很重要。您必须关注我们如何跟踪登录用户,是通过 cookie 还是 Web 会话?
  • 从一个浏览器登录,打开另一个浏览器,查看是否需要再次登录?
  • 登录,更改密码,然后注销,然后查看您是否可以使用旧密码再次登录。

31) 性能测试的类型有哪些?

性能测试:性能测试是一种测试技术,用于确定系统在各种负载条件下的性能,例如速度、可伸缩性和稳定性。产品在投放市场之前会进行性能测试。

软件测试的类型有

Software Testing Interview Questions

1. 负载测试

  • 负载测试是一种测试技术,其中系统以不断增加的负载进行测试,直到达到阈值。

注意:增加负载意味着增加用户数量。

  • 负载测试的主要目的是检查系统在负载增加时的响应时间。
  • 负载测试是非功能性测试,这意味着只测试非功能性要求。
  • 执行负载测试以确保系统能够承受重载

2. 压力测试

  • 压力测试是一种测试技术,用于在硬件资源不足(例如 CPU、内存、磁盘空间等)时检查系统。
  • 在压力测试的情况下,当系统加载大量进程且硬件资源不足时,会对软件进行测试。
  • 压力测试的主要目的是检查系统的故障,并确定如何从这种故障中恢复,这被称为可恢复性。
  • 压力测试是非功能性测试,这意味着只测试非功能性要求。

3. 峰值测试

  • 峰值测试是负载测试的一个子集。这种类型的测试检查应用程序在负载变化时的不稳定性。
  • 在测试期间需要考虑不同的情况
    • 第一种情况是不允许大量用户,以便系统不会承受重载。
    • 第二种情况是向额外加入者提供警告,这将减慢响应时间。

4. 耐久性测试

  • 耐久性测试是负载测试的一个子集。这种类型的测试检查系统的行为。
  • 耐久性测试是非功能性测试,这意味着只测试非功能性要求。
  • 耐久性测试也称为浸泡测试。
  • 耐久性测试检查内存泄漏等问题。当程序在使用后未释放其分配的内存时,就会发生内存泄漏。有时应用程序甚至在使用后也不会释放其内存,并且这种不可用的内存会导致内存泄漏。当应用程序长时间运行时,这会导致问题。
  • 在此测试中查看的一些主要问题是
    • 由于应用程序引起的内存泄漏。
    • 由于数据库连接引起的内存泄漏。
    • 由于第三方软件引起的内存泄漏。

5. 容量测试

  • 容量测试是一种测试技术,其中系统在数据量增加时进行测试。
  • 容量测试也称为洪水测试。
  • 容量测试是非功能性测试,这意味着只测试非功能性要求。
  • 例如:如果我们要应用容量测试,那么我们需要扩展数据库大小,即向数据库表中添加更多数据,然后执行测试。

6. 可伸缩性测试

  • 可伸缩性测试是一种测试技术,可确保系统能够很好地适应最终用户不断增长的需求。
  • 以下是此测试期间检查的属性
    • 响应时间
    • 吞吐量
    • 性能测试所需的用户数量
    • 阈值负载
    • CPU 使用率
    • 内存使用
    • 网络使用率

32) 功能测试和非功能测试有什么区别?

比较基础功能测试非功能测试
描述功能测试是一种测试技术,它检查应用程序的功能是否在需求规范下工作。非功能测试检查所有非功能方面,例如性能、可用性、可靠性等。
执行功能测试在非功能测试之前实施。非功能测试在功能测试之后执行。
重点领域它取决于客户需求。它取决于客户期望。
要求功能需求可以轻松定义。非功能需求不容易定义。
手动测试功能测试可以通过手动测试进行。非功能测试无法通过手动测试进行。
测试类型以下是功能测试的类型
  • 单元测试
  • 验收测试
  • 集成测试
  • 系统测试
以下是非功能测试的类型
  • 性能测试
  • 负载测试
  • 压力测试
  • 容量测试
  • 安全测试
  • 安装测试
  • 恢复测试

33) 静态测试和动态测试有什么区别?

静态测试动态测试
静态测试是一种白盒测试技术,在软件开发生命周期的初始阶段进行。动态测试是一种在软件开发生命周期的后期阶段进行的测试过程。
静态测试在代码部署之前执行。动态测试在代码部署之后执行。
它在验证阶段实施。它在验证阶段实施。
在此类测试期间不执行代码。动态测试需要执行代码。
在静态测试的情况下,为测试过程制作清单。在动态测试的情况下,执行测试用例。

34) 负面测试和正面测试有什么区别?

正面测试负面测试
正面测试意味着通过提供有效数据来测试应用程序。负面测试意味着通过提供无效数据来测试应用程序。
在正面测试的情况下,测试人员始终检查应用程序的有效值集。在负面测试的情况下,测试人员始终检查应用程序的无效值集。
正面测试通过考虑积极的观点来完成,例如:通过提供“Akshay”等值来检查名字字段。负面测试通过考虑负面的观点来完成,例如:通过提供“Akshay123”等值来检查名字字段。
它验证已知的测试条件集。它验证未知的条件集。
正面测试通过提供有效的数据集来检查系统的行为。负面测试通过提供无效的数据集来测试系统的行为。
正面测试的主要目的是证明项目根据客户需求运行良好。负面测试的主要目的是通过提供无效的数据集来破坏项目。
正面测试试图证明项目满足所有客户需求。负面测试试图证明项目不满足所有客户需求。

35) SDLC 中有哪些不同的模型?

软件测试中有各种模型,如下所示

  • 瀑布模型
  • 螺旋模型
  • 原型模型
  • 验证与确认模型
  • 混合模型
  • 敏捷模型
  • Rational 统一过程模型 [RUP]
  • 快速应用开发 [RAD]

36) 列出冒烟测试、健全性测试和试运行测试之间的区别?

以下是冒烟测试、健全性测试和试运行测试之间的区别

冒烟测试健全性测试试运行测试
它是浅层、广泛和有脚本的测试。它是狭窄、深入和无脚本的测试试运行测试是一个内部减轻可能故障影响的过程。
当构建完成时,我们将编写自动化脚本并执行脚本。所以它会自动执行。它将手动执行。例如,一家航空航天公司可能会在新飞机和跑道首次试飞前进行一次起飞试运行。
它将包含所有基本功能并执行高级测试。它将包含一些重要功能并执行深入测试。 

37) 我们如何测试 Web 应用程序?我们对 Web 应用程序执行哪些类型的测试?

要测试任何 Web 应用程序,例如 Yahoo、Gmail 等,我们将执行以下测试

  • 功能测试
  • 集成测试
  • 系统测试
  • 性能测试
  • 兼容性测试(在各种操作系统、多个浏览器和不同版本上测试应用程序)
  • 可用性测试(检查它是否用户友好)
  • 即席测试
  • 无障碍测试
  • 冒烟测试
  • 回归测试
  • 安全测试
  • 全球化测试(仅当它以不同语言开发时)

38) 为什么要执行兼容性测试?

我们可能在一个平台上开发了软件,用户有可能在不同的平台上使用它。因此,他们可能会遇到一些错误并停止使用应用程序,业务可能会受到影响。因此,我们将执行一轮兼容性测试。


39) 一天可以编写多少个测试用例?

我们可以说 2-5 个测试用例之间。

  • 第一个测试用例 → 第 1 天,第 2 天。
  • 第二个测试用例 → 第 3 天,第 4 天。
  • 第四个测试用例 → 第 5 天。
  • 9-10 个测试用例 → 第 19 天。

最初,我们通常编写 2-5 个测试用例,但在未来阶段,我们编写大约 6-7 个,因为那时我们对产品有更好的了解,我们开始重用测试用例,并且对产品有经验。


40) 一天可以审查多少个测试用例?

我们大约编写 7 个测试用例,因此我们可以审查 7*3=21 个测试用例。我们可以说每天 25-30 个测试用例。


41) 一天可以运行多少个测试用例?

我们每天可以运行大约 30-55 个测试用例。

注意:对于这些类型的问题(39-41),请始终记住以下比例:我们可以编写 x 个测试用例,可以审查 3x 个测试用例,每天可以执行 5x 个测试用例。


42) 客户是否能获得 100% 无 bug 的产品?

  1. 测试团队不好
  2. 开发人员很棒
  3. 产品很旧
  4. 以上全部。

正确答案是测试团队不好,因为有时软件测试的基本原理定义了没有产品是零缺陷的。


43) 如何手动和借助自动化工具跟踪 bug?

我们可以手动跟踪 bug,如下所示

  • 识别 bug。
  • 确保它不是重复的(即,在 bug 存储库中检查它)。
  • 准备一份 bug 报告。
  • 将其存储在 bug 存储库中。
  • 将其发送给开发团队。
  • 管理 bug 生命周期(即,不断修改状态)。
Software Testing Interview Questions

借助自动化(即 bug 跟踪工具)跟踪 bug

市场上有各种 bug 跟踪工具,例如

  • Jira
  • Bugzilla
  • Mantis
  • Telelogic
  • Rational Clear Quest
  • Bug_track
  • Quality Center(它是一个测试管理工具,其中一部分用于跟踪 bug)

注意:这里我们有两种工具类别

产品型:在产品型公司中,他们只使用一个 bug 跟踪工具。

服务型:在服务型公司中,他们有许多不同客户的项目,每个项目都会有不同的 bug 跟踪工具。


44) 为什么应用程序会有 bug?

软件可能存在 bug 的原因如下

  • 软件复杂性
  • 编程错误
  • 如果客户和公司之间没有沟通,即应用程序是否应该按照软件的需求执行。
  • 需求修改
  • 时间压力。

45) 我们什么时候进行测试?

我们将在需要检查所有需求是否正确执行,并确保我们交付正确质量产品时进行测试。


46) 我们什么时候停止测试?

在以下情况下,我们可以停止测试

  • 一旦应用程序的功能稳定。
  • 当时间不足时,我们测试必要的功能,然后停止。
  • 客户的预算。
  • 当基本功能本身无法正常工作时。

47) 我们为哪些和所有类型的测试编写测试用例?

我们可以为以下类型的测试编写测试用例

不同类型的测试测试用例
冒烟测试在此,我们只编写标准功能;因此,我们可以提取一些包含所有必要功能的测试用例。因此,我们不必为冒烟测试编写测试用例。
功能/单元测试是的,我们为单元测试编写测试用例。
集成测试是的,我们为集成测试编写测试用例。
系统测试是的,我们为系统测试编写测试用例。
验收测试是的,但在这里客户可能会编写测试用例。
兼容性测试在此,我们不必编写测试用例,因为上述相同的测试用例用于在不同平台上进行测试。
即席测试我们不为即席测试编写测试用例,因为在即席测试时使用了一些随机场景或想法。但是,如果我们识别出关键 bug,那么我们会将该场景转换为测试用例。
性能测试我们可能不编写测试用例,因为我们将借助性能工具执行此测试。
可用性测试在此,我们使用常规清单;因此,我们不编写测试用例,因为我们在这里只测试应用程序的外观和感觉。
无障碍测试在无障碍测试中,我们也使用清单。
可靠性测试在这里,我们不编写手动测试用例,因为我们使用自动化工具执行可靠性测试。
回归测试是的,我们为功能测试、集成测试和系统测试编写测试用例。
恢复测试是的,我们为恢复测试编写测试用例,并检查产品如何从崩溃中恢复。
安全测试是的,我们为安全测试编写测试用例。
全球化测试
本地化测试
国际化测试
是的,我们为 L10N 测试编写测试用例。
是的,我们为 I18N 测试编写测试用例。

48) 可追溯性矩阵和测试用例审查过程有什么区别?

可追溯性矩阵测试用例审查
在此,我们将确保每个需求至少有一个测试用例。在此,我们将检查特定需求是否涵盖了所有场景。

49) 用例和测试用例有什么区别?

以下是用例和测试用例之间的显著差异

测试用例用例
它是一份文档,描述输入、操作和预期响应,以控制应用程序是否根据客户需求正常工作。它是客户需求的详细描述。
它来源于测试场景、用例和 SRS。它来源于 BRS/SRS。
在开发测试用例时,我们还可以发现规范中的漏洞。由业务分析师或 QA 主管准备。

50) 如何测试一支笔?

我们可以进行手动测试和自动化测试。首先,我们将看看如何进行手动测试

不同类型的测试场景
冒烟测试检查基本功能是否写入。
功能/单元测试检查笔芯、笔身、笔帽和笔尺寸是否符合要求。
集成测试组合笔和笔帽,并集成其他不同尺寸,查看它们是否正常工作。
兼容性测试各种表面、多种环境、天气条件,将其放入烤箱然后书写,放入冰箱然后书写,尝试在水上书写。
即席测试将笔扔下去开始书写,将其垂直向上放置书写,在墙上书写。
性能测试测试笔的书写速度。
可用性测试检查笔是否用户友好,是否可以长时间顺畅地书写。
无障碍测试残疾人使用它们。
可靠性测试将其扔下去书写,然后连续书写,查看它是否漏墨。
恢复测试将其扔下去书写。
全球化测试
本地化测试
价格应符合标准,保质期格式。
国际化测试检查笔上的印刷是否符合国家语言。

现在,我们将看看如何对笔进行自动化测试

Software Testing Interview Questions

为此,取一个滚筒,将一些纸张放在滚筒上,然后将笔连接到电机并打开电机。笔开始在纸上书写。一旦笔停止书写,现在观察它在每页上书写的行数,每条轨迹的长度,然后将所有这些相乘,这样我们就可以知道笔可以书写多少公里。