85+ 软件测试面试问题与答案

以下是面向新手和专业人士的所有重要软件测试面试问题列表。借助此软件测试面试指南,在软件测试领域找到您的理想工作。

 

新手软件测试面试问题

1) 什么是集成测试?

集成测试是一种将单独的应用程序组件组合并测试的软件测试方法。它通常在单元测试和功能测试之后执行。


2) 什么是随机测试?

随机测试,也称为即席测试,是一种不遵循与应用程序相关的任何测试用例或要求的方法。在许多情况下,它是一种无计划的活动,随机检查应用程序的任何部分以发现缺陷。


3) 什么是SDLC?

SDLC(软件开发生命周期)是一个系统化的软件开发过程,旨在确保所构建软件的质量和正确性。它是软件开发生命周期过程的简称,旨在生产满足客户期望的高质量软件。

开发应在预定义的时间框架和成本内完成。此生命周期包含一个详细的计划,解释了如何规划、构建和维护特定软件。


4) 什么是数据驱动测试?

数据驱动测试是使用XML文件、电子表格、Microsoft Excel和SQL数据库等数据源重复执行测试脚本。

为了生成输出,您可以使用这些数据源作为输入值。之后,将其结果与预期结果进行比较,以验证系统或软件。

Data-driven Testing


5) 编写测试用例的最佳实践是什么?

从最终用户的角度编写测试用例

  • 编写简单易懂的测试步骤,以便任何人都能轻松遵循
  • 使测试用例可重用
  • 设置给定优先级
  • 您应该描述测试用例、测试数据、预期结果、前置条件和后置条件。
  • 除了有效测试用例外,还要编写无效测试用例
  • 遵循所有适当的命名约定
  • 审查测试用例并在必要时更新它们。

6) 什么是边界值分析?

它是一种软件测试技术,用于分析等价类分区的边界值。这种测试方法可以帮助您识别边界上的错误,而不是范围内的值。


7) 重要的测试指标有哪些?

以下是一些重要的测试指标

  • 修复的错误总数。
  • 发现的缺陷数量及其严重程度。
  • 由源代码错误引起的问题总数与配置或外部环境因素引起的问题总数
  • 错误修复率随时间变化
  • 发布前未解决的错误数量。
  • 用户报告的故障与测试人员发现的错误。

8) 哪些参数有助于检查测试执行的质量?

检查测试执行质量的两个最重要的参数是

  • 缺陷拒绝率是总拒绝数与总生产数之比。
  • 缺陷泄漏率是总拒绝数与总生产数之比。

9) 不同的测试级别有哪些?

  • 测试级别有四种类型:单元/组件/程序/模块测试
  • 集成测试
  • 系统测试
  • 验收测试

10) 什么是 Bug/缺陷生命周期?

缺陷生命周期也称为缺陷生命周期。在软件开发过程中,每个缺陷都有一个生命周期。缺陷需要经历整个生命周期才能关闭。缺陷的生命周期取决于所使用的工具(QC、JIRA 等)和组织流程。

Bug/Defect Life Cycle


11) 什么是配置管理?

配置管理是一种测试方法,用于建立和维护产品物理、性能、功能、设计和操作信息的一致性。它还为您的组织带来成本效益和更好的时间管理。


12) 缺陷报告格式的主要组成部分有哪些?

以下是缺陷报告格式的基本组成部分

  • 项目名称
  • 模块名称
  • 检测到的缺陷
  • 缺陷ID
  • 缺陷名称
  • 缺陷截图
  • 严重性和优先级状态
  • 缺陷解决者和解决时间

13) Selenium 和 Sikuli 有什么区别?

以下是 Selenium 和 Sikuli 之间的一些基本区别

Selenium Sikuli
您无法自动化视频播放器、音频播放器等 Flash 对象。 它提供广泛支持以自动化 Flash 对象
它的API很复杂 它有一个简单的API
它只能自动化 Web 应用程序 您可以自动化 Web 应用程序以及 Windows 应用程序。

14) Web 测试安全问题有哪些类型?

  • 拒绝服务 (DOS) 攻击
  • 查看其他统计信息
  • 缓冲区溢出
  • 通过浏览器地址直接传递内部URL

15) 什么是 TestNG?

TestNG 是一个高级框架,旨在充分利用开发人员和软件测试人员的优势。此程序还包括一个异常处理机制,可防止程序意外终止。


16) 什么是缺陷级联?

缺陷级联是一种在测试过程中发现一个缺陷时触发应用程序中其他缺陷的方法。它还会引发其他应用程序缺陷,因为在软件开发的后期阶段会出现多个缺陷。


17) 什么是工作台概念?

工作台是解释活动应如何完成的文档。它也称为步骤、阶段或任务。它充当开发和监控测试人员工作结构的平台。使用初始数据,您可以使用此方法将任务划分为每个阶段并达到客户的期望。

工作台有五个任务

  • 输入
  • 执行
  • 检查
  • 生产输出
  • 返工

18) 向最终用户推出产品的不同策略有哪些?

要遵循的推出策略如下:

1) 试点,2) 逐步实施,3) 分阶段实施,4) 并行实施


19) 什么是测试平台?

测试平台是用于支持测试过程的软件、硬件和其他测试项。测试平台的主要目标是控制和监控测试条件。测试平台包含手动软件测试方法中的多种工具和技术。例如 PHP,像 WordPress 或 Joomla 这样的框架,以及像 PostgreSQL 或 MySQL 这样的数据库。


20) 什么是语句覆盖?请举例说明。

语句覆盖是一种白盒测试方法,其中源代码中的所有可执行语句至少执行一次。此代码覆盖方法计算已执行的源代码中的语句数量。

让我们看看如何计算语句覆盖。

计算给定源代码的语句覆盖率。

示例

Prints (int a, int b) {                       ------------  Printsum is a function
int result = a+ b;
If (result> 0)
  Print ("Positive", result)
Else
  Print ("Negative", result)
}                                        -----------   End of the source code

有经验者的软件测试面试问题与答案

21) 什么是潜在缺陷?

潜在缺陷是用于识别使用某些特殊操作集在软件中隐藏的未检测到的缺陷的术语。这些缺陷仅在软件测试触发特定事件时发生,从而隐藏了它们的存在。


22) 什么是测试交付物?

测试交付物是为支持测试而维护和开发的工具、组件和文档。

以下是SDLC(软件开发生命周期)不同测试阶段的测试交付物

1) 软件测试前 2) 软件测试中 3) 软件测试后


23) 什么是变异测试?

变异测试的主要目标是验证一组测试数据或测试用例是否有效。通过故意添加多个代码更改(错误),并使用原始测试用例和数据重新测试来完成。

Mutation Testing


24) 什么是 Gamma 测试?

Gamma 是一种测试方法,用于在软件准备发布时检查其指定的需要。它主要在最终用户处完成。


25) 什么是测试工具?

测试工具是一种测试过程,它收集软件和测试信息以测试整个程序或单元。它在各种不断变化的条件下运行,如压力、数据驱动,并监控其行为和输出。


26) 什么是测试结束?

这是一份总结SDLC(软件开发生命周期)期间进行的所有测试的文档。它提供了对已删除的错误和发现的错误的详细分析。

测试结束还包含实验总数、已执行实验总数、未解决的错误数、被拒绝的错误总数等。


27) 什么是模糊测试?

模糊测试是一种用于检测软件编码错误和安全漏洞的测试方法。在模糊测试方法中,随机数据被添加到系统中以使系统崩溃。如果漏洞持续存在,则使用称为模糊测试器的工具来确定潜在原因。


28) 什么是端到端测试?

端到端测试是一种应用程序测试方法,可帮助您确保应用程序按预期工作。它应该用于测试应用程序从开始到结束的流程。

此测试方法旨在检查整个系统的流程。它还确认不同系统组件和系统之间的数据完整性得以维护。


29) 什么是动态软件测试?

与静态测试相比,动态软件测试在执行时测试软件。软件测试人员在测试环境中运行软件,完成所有步骤,输入输入,并验证实际输出与可能的结果。


30) 什么是跨浏览器测试?您会使用哪些工具?

Web 应用程序可在 Chrome、Mozilla Firefox、Microsoft Edge、Safari 等各种浏览器中运行。所有这些浏览器在实现 Web 标准方面基本相同。跨浏览器测试可帮助您检查您的网站或应用程序在使用不同浏览器-操作系统组合时是否按预期工作。


31) 什么是回归测试和确认测试?

以下是两种重要的测试方法

  • 回归测试确认最近的代码更改未影响现有功能。
  • 确认测试:当测试因缺陷而失败时,会报告缺陷。之后,提交一个修复了缺陷的新软件版本。这称为确认测试或重新测试。

32) 如何在 TestNG 中跳过方法或代码块?

您可以跳过特定的测试方法或代码;然后,您可以将测试注解中的“enabled”参数设置为 false。

@Test (enabled = false)

33) 如何在 Selenium WebDriver 中截屏?

  • 您可以使用 TakeScreenshot 函数进行截屏。
  • getScreenshotAs() 方法允许您保存该截图。

34) 我应该何时使用 Selenium Grid?

Selenium Grid 允许您同时在多个平台和浏览器上执行测试脚本。这有助于您实现分布式测试执行、在不同环境下进行测试并显著节省执行时间。


35) 什么是测试策略?

测试策略是通常由项目经理开发的高级文档。它捕获了测试产品和实现目标的方法。它通常来源于业务需求规范 (BRS)。


36) 什么是修改请求?

客户端在软件开发中使用修改请求来更改软件的现有功能。


37) 什么是验证?

验证是衡量的过程,例如。它有助于验证您是否正在相应地开发产品。这里涉及的活动是检查。


38) 什么是灰盒测试?

灰盒是白盒测试和黑盒测试的组合。参与此类测试的测试人员应该能够访问设计文档。这有助于在此过程中创建更好的测试用例。


39) 什么是测试覆盖率?

测试覆盖率定义为软件测试中的一种度量,它衡量一组测试所执行的测试量。它将包括收集有关在执行测试套件时应执行的程序部分的信息。您还可以使用它来确定已采取的条件语句的分支。


40) 什么是决策覆盖?

决策覆盖示例

Demo (int a) {
If (a> 5)
 a=a*3
 Print (a)
}

场景 1

a 的值为 2

Decision Coverage

这里,黄色突出显示的代码将被执行,并且检查决策 If (a>5) 的“否”结果。

决策覆盖率 = 50%

场景 2

a 的值为 6

Decision Coverage

在此场景中,黄色突出显示的代码将被执行。这里检查决策 If (a>5) 的“是”结果。

决策覆盖率 = 50%

测试用例 A 的值 输出 决策覆盖
1 2 2 50%
2 6 18 50%

具有3年经验的软件测试面试问题与答案

41) 什么是健全性测试?

在构建完成后执行健全性测试,以检查需要在健全性测试中修复的新功能/缺陷。其主要目标是检查完整的功能,这有助于您确定错误是否已修复,并测试已修复错误对测试中应用程序的影响。


42) 什么是 TDD?

测试驱动开发 (TDD) 是一种由测试用例驱动的软件开发方法,可帮助您创建要实现的功能。测试用例是在 TDD 方法中开发的。


43) 软件测试中的验证和确认是什么?

  • 验证:它是一种静态分析技术。在这种方法中,测试是在不执行代码的情况下完成的。示例:审查、检查和走查。
  • 确认:它是一种动态分析方法,其中通过执行代码进行测试。功能和非功能测试技术的示例。

44) 确认与验证有何不同?

验证 验证
它评估软件是否满足规范。 它评估规范是否捕获了客户的需求。
验证是一种静态测试。 确认是一种动态测试。
它不需要您执行代码。 它需要代码执行。

45) 您能根据什么来衡量自动化测试的成功?

根据自动化测试,可以衡量以下标准

  • 缺陷检测率
  • 自动化执行时间以及产品发布的时间节省
  • 劳动力和其他成本的降低

46) 什么是测试策略?

测试策略是由项目经理开发的高级文档(静态文档)。它是一个测试文档,记录了我们如何测试产品并实现目标。它主要来源于业务需求规范。像测试计划这样的重要文档是以此文档为基础准备的。


47) 什么是客户端验证?

客户端验证是在浏览器级别完成的,用户的输入在浏览器本身进行验证,不涉及服务器。


48) 什么是情境驱动测试?

情境驱动测试是一种用于开发和调试计算机软件的软件测试方法,它考虑了程序在实际世界中预期如何使用。


49) 软件测试中的退出标准是什么?

退出标准是一组特定条件,它们规定了应用程序的商定功能或状态,以表明产品或过程的完成。


50) 各种测试方法有哪些?

软件测试的三种方法是

  • 黑盒测试:黑盒测试技术完全基于需求和规范。此策略不需要了解内部路径、结构或正在测试的软件。
  • 白盒测试是一种基于内部路径、代码结构和正在测试软件的测试方法。
  • 灰盒测试:它是一种软件调试方法,其中软件测试人员对软件的内部工作原理知之甚少。

51) 不同的覆盖技术有哪些?

三种基本的覆盖技术是

  • 语句覆盖:此方法有助于确保源代码的每一行都已执行和测试。
  • 决策覆盖:它确保源代码中的每个决策(真或假)都已执行和测试。
  • 路径覆盖:验证已通过代码的给定部分测试了所有可能的路径。

52) 什么是基线测试?

基线测试是一系列收集性能信息的测试。收集的信息还可以用于通过根据结果进行更改来增强应用程序的性能和功能。在基线测试期间,应用程序的性能与其之前的性能进行比较。


53) 什么是系统级测试?

跨所有模块测试整个计算机系统称为系统级测试。此测试方法包括功能测试和结构测试。


54) 什么是桶测试?

桶测试也称为 A/B 测试。它主要用于研究各种产品设计对网站指标的影响。在此测试方法中,两个同时运行的版本在一个或一组网页上运行,这有助于您测量点击率、界面和流量的差异。


具有5年以上经验的软件测试面试问题与答案

55) 什么是 N+1 测试?

回归测试的变体表示为 N+1。它在多个周期中执行,其中在测试周期“N”中发现的错误在测试周期 N+1 中解决并重新测试。此过程一直持续到没有发现错误。


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

在自底向上测试中,一种方法是,首先测试最低级别的组件,然后测试更高级别的组件。重复此操作,直到测试层次结构顶部的组件。


57) 什么是基于风险的测试?

基于风险的测试是一种根据风险优先级对测试进行排序以创建测试策略的方法。该方法的基础是详细的风险分析和风险优先级排序。


58) 正式评审的不同阶段有哪些?

正式评审过程包括六个步骤

  1. 规划
  2. 启动
  3. 准备
  4. 评审会议
  5. 返工
  6. 后续

59) 什么是半随机测试用例?

半随机测试用例是执行随机测试用例并进行等价划分的测试用例。它还消除了冗余测试用例,从而形成了一组半随机测试。


60) 什么是 API 测试?

API 测试检查软件使用的 API 的工作情况。作为软件测试人员,您必须编写代码,向提供 API 的服务器发出 API 请求和所需的输入。它从响应中收集输出,并将实际输出与预期输出进行匹配。


61) 什么是验收测试?

验收测试是一种由最终用户或客户执行的测试。它在将软件应用程序移动到生产环境之前验证或接受软件系统。


60) 什么是全球化测试?

全球化是一种软件测试方法,用于设计一个软件应用程序,使其能够适应多种语言和区域,而无需进行任何更改。


61) 什么是 GUI 测试?

GUI 或图形用户界面测试根据提供的要求/HTML 设计/模型等测试软件的用户界面。


62) 软件测试中的 RTM 是什么?

RTM是(需求可追溯性矩阵)的缩写。它是一个工具,可帮助测试人员在收到需求文档后,在整个测试过程中跟踪需求覆盖率。它根据需求开发,并维护直到特定的软件系统或应用程序发布。

RTM in software testing


63) 什么是负载测试?

负载测试是一种性能测试方法,其中应用程序在多个负载级别下执行。您可以监控服务器的峰值性能、响应时间等。在并行系统负载下,此方法允许您测量应用程序的稳定性、性能和完整性。


64) SDLC 和 STLC 之间有什么区别?

Difference Between SDLC and STLC

以下是 SDLC 和 STLC 之间的一些区别

SDLC STLC
SDLC 生命周期旨在成功完成软件开发,包括测试和其他阶段。 STLC 阶段的唯一目标是测试。
在 SDLC 中,BA(业务分析师)收集需求并创建开发计划 在 STLC 中,QA 团队分析需求以创建测试计划并执行功能和非功能文档。
在此生命周期中,开发团队创建高级和低级设计计划 在此生命周期中,测试分析师创建集成测试计划
实际代码根据设计文档进行开发和实际工作。 软件测试团队准备测试环境并执行测试

65) 什么是安装测试?

安装测试是检查我们是否可以根据安装文档中给出的指南成功安装软件。


66) 什么是接口测试?

接口测试检查单个模块是否根据给定规范正确通信。它主要用于测试 GUI 应用程序的用户界面。


67) 什么是大爆炸模型?

大爆炸模型侧重于软件开发和编码资源,几乎没有或根本没有规划。在此模型中,需求一经出现便会被理解和实现。此软件模型最适合小型项目和较小的开发团队。


68) 哪些常见场景下自动化测试优于手动测试?

在以下情况下,您可以选择自动化测试而非手动测试

  • 您必须长时间重复测试用例。
  • 有必要执行回归、性能和负载测试。
  • 您想记录测试过程。
  • 当您完成测试阶段的时间很短时
  • 您正在标准运行时环境中执行测试
  • 当产品需要多次快速部署时,手动测试变得非常耗时且多余。

69) 什么是客户端-服务器测试?

客户端-服务器应用程序是指应用程序本身安装在服务器上,应用程序EXE文件加载到所有客户端机器上。这种环境广泛应用于内联网中。


70) 什么是单元测试?

单元测试是一种软件测试,其中测试软件的单个单元或组件。进行这种类型的测试是为了检查源代码的模块是否正常工作。

Unit Testing


71) 可用性测试在 Web 测试中扮演什么角色?

在 Web 测试中,可用性测试扮演着至关重要的角色。众所周知,可用性测试意味着确定最终用户无需任何编程语言知识即可轻松访问应用程序。


72) 您能根据什么来估算您的项目?

要估算任何项目,您需要考虑以下几点

  • 将整个项目划分为较小的任务
  • 将每个任务分配给团队成员
  • 这有助于您估算完成每项任务所需的工作量
  • 验证估算

73) 什么是严重缺陷?

严重缺陷意味着大部分功能或重要的系统组件已损坏,并且没有其他可行的解决方案。

例如,由于一个模块中的错误导致其他模块的测试受阻,我们无法测试其他模块。影响客户业务的错误被视为严重缺陷。


74) 什么是缺陷泄漏?

测试团队在测试时遗漏了一个缺陷,并且构建已发布到生产环境。如果最终用户或客户发现了该缺陷(被软件测试团队遗漏),则称为缺陷泄漏。


75) 什么是错误植入?

它是一种在程序中添加已知错误的方法,可帮助您识别错误检测率。它有助于评估测试人员发现错误的能力。


76) 软件测试中的 SPICE 是什么?

SPICE 是软件过程改进和能力确定(Software Process Improvement and Capability Determination)的缩写。它是一个用于评估开发过程效率和有效性的标准框架。


77) 什么是对象库?

对象库是属于被测应用程序 (AUT) 的 Web 元素及其定位器的集合。QA 人员在 Selenium 中将所有元素定位器维护在一个单独的文件中,称为属性文件(.properties)。在执行阶段,它使您能够在测试脚本和应用程序之间识别对象。


78) 什么是缺陷报告?

在软件测试过程中,软件测试人员将其发现、观察、结论以及其他有用信息记录下来,提供给开发人员或管理层。这些数据是测试记录的一部分,称为缺陷报告。

缺陷报告提供以下优势

  • 理解问题
  • 重现此问题的步骤
  • 发生测试的环境和具体条件
  • 如果/当开发人员修复问题时,解决方案

79) 软件测试中的错误猜测是什么意思?

错误猜测是一种类似于错误植入的测试用例设计方法。在这种测试方法中,测试人员通过猜测软件应用程序中可能出现的错误来设计测试用例。


80) 什么是阻碍缺陷?

它是一种不允许用户在应用程序中继续操作的缺陷。它几乎就像一个崩溃。

例如,确保在一个软件应用程序中登录按钮不起作用,即使您有有效的用户名和密码;您无法继续,因为您的登录按钮不起作用。


81) 什么是漏洞赏金?

漏洞赏金计划帮助组织奖励那些在软件中发现错误并报告它们的人。这是一个存在已久的概念,早在互联网诞生时就已存在。

许多公司开始意识到,每次他们想在自己的系统或应用程序中寻找漏洞时,雇佣专家进行渗透测试是多么昂贵。


82) 什么是状态转换?

状态转换测试有助于您测试需要测试不同系统转换的应用程序的测试用例。当应用程序对于相同的输入给出不同的输出时,我们可以应用此方法,具体取决于早期状态发生的情况。


83) 什么是缺陷分类?

缺陷分类是一种根据风险、严重程度以及修复问题所需时间等不同特征对缺陷进行优先级排序的方法。涉及多个利益相关者,例如开发团队、测试团队、项目经理等。


84) 什么是缺陷清除效率?

缺陷清除效率是一种测试指标,表示开发团队在产品发布前修复错误和问题的有效性。它有助于您衡量缺陷与发现问题数量的比率。例如,如果在测试期间发现了 100 个缺陷,并且修复了 80 个,则 DRE 将为 100/80 = 1.25%。


85) 什么是浸泡测试?

长时间在高负载下运行系统以识别性能问题称为浸泡测试。


86) 什么是农药悖论?

在软件测试中,农药悖论发生在重复的测试用例未能发现新错误时。您可以克服这个农药悖论,因为定期审查我们并添加或更新测试用例以发现更多缺陷至关重要。