最常问的 25 个 SDET 面试问题及答案

17 Mar 2025 | 阅读 17 分钟

1) 什么是 SDET?

SDET 是 “软件开发工程师兼测试” 的缩写。它是一种测试角色,在当前的敏捷方法论中越来越受欢迎。它也称为软件设计工程师兼测试。

SDET 最初由微软和谷歌引入,当时他们发现由于测试周期短,测试团队无法如此快速地测试构建。因此,引入了敏捷开发,产品开发和测试周期必须并行进行,以实现产品的整体目标。SDET 角色就是这样产生的。

SDET 的角色与日常测试工程师不同,因为 SDET 必须对质量和测试有良好的理解,并且对编码有很好的知识。简单来说,我们可以说它是软件开发人员和测试工程师的混合体。


2) SDET 的主要职责和责任是什么?

由于 SDET 结合了软件开发人员和测试人员,他们必须参与软件开发和测试。这就是为什么 SDET 对软件测试、编程语言、分析技能和沟通技能有很好的了解。

以下是 SDET 的主要职责和责任列表

  • 了解客户需求并设计高级测试场景。
  • 构建用于集成测试的自动化框架。
  • 构建用于应用程序测试的 UI 自动化测试框架。
  • 编写单元测试代码并审查其他开发人员的单元测试结果。
  • 优化代码并对代码进行性能测试。
  • 参与应用程序安全测试和增强。
  • 参与发布管理。
  • 就客户需求与开发和测试团队协调。
  • 始终致力于通过强大的自动化框架改进产品,实现更快的开发、更少的缺陷、更快的测试周期和快速的结果。
  • 为客户提供改进的性能和安全性。

3) SDET 角色需要哪些技能?

以下是 SDET 角色所需的技能列表

质量保证和测试知识

  • 寻求 SDET 职位的候选人必须了解测试方法和生命周期。
  • 对质量保证和质量概念有良好的了解。
  • 对测试用例和缺陷报告有良好的了解
  • 必须熟悉测试管理和缺陷报告工具等工具。

编码和编程知识

  • 熟练掌握 Java、Python 或 .Net 等编程语言。必须了解面向对象编程的各个方面,如类和对象。
  • 需要对 Junit 和 TestNG 等单元测试框架有良好的了解。
  • 他必须熟练掌握 Selenium 或其他付费工具等自动化工具。
  • 他必须熟练掌握 Jmeter 等性能测试工具。
  • 他必须熟练掌握云计算相关技术和服务,如 Google Cloud、AWS 和 Azure。
  • 他必须熟练掌握敏捷方法论和 Git 等版本控制系统。
  • 他必须熟练掌握 PostMan、Rest-assured 或 SoapUI 等 API 测试工具。

其他所需技能

  • 候选人必须具备良好的研究和分析能力。
  • 能够为给定问题提供多种解决方案。
  • 他必须有积极和热情的态度,因为 SDET 必须处理两个角色,所以他在工作时应始终保持积极和冷静。
  • 他必须具备良好的口头和书面沟通能力。
  • 良好的时间管理能力,并且必须是一个优秀的团队合作者。

4) 什么是即席测试?在当前的 IT 行业中我们如何定义即席测试?

即席测试与正式测试完全不同。它是一种非正式的测试类型,测试人员不遵循任何文档、测试设计技术,而是随机测试应用程序。这种测试主要由对被测应用程序有深入了解的测试人员执行。在这种测试中,测试人员在不使用任何测试用例或任何业务需求文档的情况下随机测试应用程序。

如果谈到当前的 IT 行业,即席测试是当今最流行的测试之一。当客户提出一些即席需求时,我们必须执行这种测试。在这种技术中,开发人员必须立即开发测试用例,并在最短的时间内提供准确的可交付成果。这是一种快速测试,因此文档或规划并非总是可能的,但有些组织有专门的团队和特定的工具来跟踪和交付这种任务。

5) 软件开发工程师兼测试 (SDET) 与手动测试员之间有什么主要区别?

在软件和 IT 组织中,手动测试员是执行软件测试以发现应用程序代码中的错误和缺陷的人员。测试员还必须检查多个软件功能,而无需了解整个软件开发过程。另一方面,软件开发工程师兼测试 (SDET) 负责进行测试,并且对软件开发过程有很好的了解。

以下是 SDET 和手动测试员之间的主要区别列表

软件开发工程师兼测试 (SDET)手动测试员
SDET 代表“软件开发工程师兼测试”,它是一名对编程语言和编码有出色知识的测试员。换句话说,我们可以说 SDET 是一名测试员,同时也是一名编码员。手动测试员是被指定在开发团队开发软件或系统后进行测试的员工。
由于 SDET 对编码和测试有很好的了解,他们参与软件开发过程的每个阶段。测试员只了解测试软件或系统,因此他们只参与软件开发过程的测试阶段。
SDET 专业人员在设计、实施和测试方面有丰富的知识。手动测试员不了解软件的设计和实施。他们只参与执行测试用例。
SDET 专业人员可以开发测试自动化工具。手动测试员不需要开发测试自动化工具或框架。
SDET 测试的范围相当广泛,因为他们专注于多种测试类型和技术——例如,安全性、功能性、非功能性测试等。手动测试员的测试范围要窄得多,因为他们只需关注应用程序的功能方面。
SDET 专业人员还检查软件的性能。手动测试员只负责测试软件中的缺陷。他们不关心软件的性能。
SDET 专业人员精通软件需求和其他相关主题。手动测试员对软件需求的理解有限。
SDET 专业人员关注白盒和黑盒测试。手动专业人员关注黑盒测试。
SDET 专业人员的薪水通常高于手动测试员。手动测试员的薪水低于 SDET 专业人员。

6) 在软件测试的背景下,什么是代码检查?代码检查涉及哪些步骤?

代码检查是一种静态测试,测试人员在其中检查软件代码并发现缺陷。它简化了初始错误检测过程,降低了缺陷乘数比,并避免了后续阶段的错误检测。代码检查是应用程序评估过程的一部分。

以下是代码检查中涉及的关键步骤列表

  • 检查团队的主要成员是主持人、阅读器、记录员和作者。
  • 检查团队的主要任务是接收相关文档,准备检查会议,并与检查团队成员协调。
  • 如果任何检查团队成员不熟悉该项目,作者会向他提供其代码的概述。
  • 在此步骤之后,每个检查团队都会使用检查清单进行代码检查。
  • 代码检查完成后,将与所有团队成员召开会议,讨论检查后的代码。

7) 严重性 (Severity) 和优先级 (Priority) 之间有什么主要区别?

严重性指定特定缺陷或错误对客户业务的影响。它用于衡量问题对系统影响的程度。严重性可分为三类:严重、主要和次要。

优先级指定修复缺陷的重要性。它根据潜在严重程度分配。开发人员为不同的缺陷分配优先级,以便按确定的顺序解决。因此,我们可以说优先级是解决缺陷的顺序。它可分为三类:高、中和低。


8) 软件测试中代码检查的优点是什么?

以下是软件测试中代码检查的主要优点列表

  • 代码检查是发现软件代码中缺陷和漏洞的最佳方法。
  • 它可以提高软件的整体质量。
  • 它可用于标记任何流程改进。
  • 它可以有效地发现并消除功能缺陷。
  • 它也是纠正先前缺陷的好方法。

9) 探索性测试和即席测试之间有什么关键区别?

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

探索性测试即席测试
在探索性测试中,测试人员不知道需求,并根据探索应用程序的功能进行测试。即席测试属于非正式测试类别,它在没有任何事先文档或计划,或不遵循任何特定测试设计技术的情况下执行。
探索性测试提供了即席测试的自由度,并且比半正式测试具有更多优势。即席测试是一种非正式的、自由形式的软件测试方法,可以在不需要深入了解测试主题的情况下执行。
此测试主要由领域专家执行。当测试人员是专家并且对被测应用程序 (AUT) 有很好的了解时,才会执行此测试。没有预期的结果、业务需求文档或测试用例。
此测试有助于测试人员提出关于产品功能以及如何选择适当测试的问题。即席测试与结构化测试完全不同,因此它没有任何规则、目标、文档化计划或目标。这种测试的效率完全取决于测试人员的经验水平。
此测试的结构足够严谨,可以提供可靠的结果,并且可以有效地发现测试用例中的新问题。此测试难以管理,而且由于缺乏文档,任何发现的缺陷也难以重现。

10) 您对 Alpha 测试和 Beta 测试有何了解?

Alpha 测试:Alpha 测试是一种由测试人员进行的测试类型,用于在应用程序发布到实时环境之前识别是否存在任何缺陷。

Beta 测试:Beta 测试是一种由实际应用程序用户在真实世界环境中进行的测试类型。换句话说,我们可以说应用程序在 Beta 测试中发布,应用程序用户是实际测试人员。


11) 什么是模糊测试?

模糊测试是一种测试过程,测试人员在其中识别安全漏洞和编码错误,以及定位容易被黑客攻击的软件缺陷。在此测试中,测试人员向系统注入大量随机、不正确和意外数据,以使其崩溃,然后识别系统中是否有任何损坏。


12) 您对基于风险的测试有何了解?

基于风险的测试根据可交付成果的优先级指定产品功能的测试。在此测试中,业务需求标准被用作衡量标准,有助于确定产品所有功能的优先级。具有最高业务影响的高优先级功能首先进行测试,然后是中优先级和低优先级功能。此测试主要用于测试所有功能的时间不足时。


13) 您如何决定产品何时准备好发货?

这主要是组织高层管理的工作,他们决定产品何时准备好发货。测试团队致力于发现和修复应用程序中的所有缺陷。当测试团队确信所有缺陷都已识别、记录和解决时,他们会通知高层管理。SDET 必须确保管理层拥有所有必要的信息才能做出正确的决定。


14) 质量保证和质量控制之间有什么关键区别?

质量保证和质量控制之间的主要区别在于,质量保证主要侧重于质量过程。另一方面,质量控制主要侧重于输出质量。

质量保证:它是一种预防策略,主要侧重于规划、记录和商定一组明确的指导方针,以确保质量。它主要用于项目开始时,其主要目标是首先限制缺陷进入解决方案。

质量控制:另一方面,质量控制是一种响应策略,主要侧重于确定所交付解决方案质量的所有活动。它使用许多指定的质量标准来提供高质量的输出。


15) 您对软件测试中的缺陷报告有何了解?

在软件测试中,缺陷报告是一份详细的报告,指定了应用程序/软件或网站中需要修复的不正确之处。此缺陷报告包含解决每个问题的请求和详细信息,以及原因列表或观察到的缺陷,以精确地指出被认为是错误的具体内容。

换句话说,我们可以说缺陷报告是一种告知开发人员其编写代码中未按预期或设计工作的部分的技术。它还有助于开发人员了解其软件的哪些部分需要改进。测试人员创建缺陷报告是为了向开发人员提供有关其代码中缺陷的反馈。如果没有这份报告,开发人员很难在其编写的代码中发现缺陷。软件测试人员可以通过提供高质量的缺陷报告,其中包含开发人员可能需要的所有信息来找出问题,从而大大简化此过程。


16) 一份好的缺陷报告有哪些特质?

一份好的缺陷报告必须具备以下特质

  • 一份好的缺陷报告必须提供代码中发现的缺陷的描述性摘要。
  • 它应指定代码中的每个问题,并提供清晰、精确和相关的信息。
  • 它应提供有关缺陷的实际和预期行为的详细信息。
  • 它应提供环境信息,并包括重现缺陷的步骤。

17) 软件测试中缺陷报告最突出的要素是什么?

以下是软件测试中缺陷报告最重要元素的列表

标题:标题是缺陷报告的第一个也是最关键的元素。一个好的标题简洁明了,它应该向开发人员提供缺陷的详细描述和缺陷的类别。在这个应用程序组件中,缺陷发生了,即购物车、UI 等,以及缺陷发生时的活动或条件。清晰的标题至关重要,因为它使开发人员更容易,他们可以轻松找到报告并区分重复报告。

描述:它提供了缺陷的简洁摘要,并指定了缺陷发生的方式和时间。此部分包含标题以外的附加信息,例如缺陷发生的频率(如果它是间歇性错误)以及似乎触发它的情况。它还包含有关缺陷如何影响应用程序的信息。

环境:环境和周围环境在应用程序的行为中起着重要作用。此部分提供了有关应用程序环境设置的所有信息。

重现步骤:它指定了重现缺陷的基本事项。这些步骤应该简短、易懂且易于任何人访问。此步骤的主要目标是方便开发人员,使他们能够在自己的一端重现错误,以找出问题所在。没有重现步骤的缺陷报告是无用的,并且浪费了开发人员的时间,这些时间本可以更好地用于解决更完整的报告。测试人员必须遵循此步骤的规则。

严重性和优先级:情况决定了问题的严重性和优先级。严重性级别和定义可能因程序开发人员、测试人员和最终用户而异。它可以通过以下方式分类

  • 严重/阻塞:此类别指定使应用程序无用或导致重大数据丢失的故障。
  • 高:当缺陷影响重要功能,且我们没有任何解决方案,或者提供的补救措施非常复杂时,称为高。
  • 中:当缺陷影响次要或重要功能,但有足够简单的修复方法可以避免重大不适时,称为中。
  • 低:这用于指定可能对用户体验影响较小的缺陷,例如次要视觉缺陷等。

实际结果:它指定用户或测试人员看到的实际结果或输出。

预期结果:它指定预期或计划的后果或结果或输出。

附件:提供附件是为了帮助开发人员更快地找到问题。例如,问题的屏幕截图可以解释很多,并且可能非常有用,尤其是当问题是视觉问题时。此外,日志和其他方便的附件可以指导开发人员。

联系方式:它提供有关错误或问题的附加信息。例如,用户如果发现任何缺陷,可以联系或提交的电子邮件地址。如果用户发现难以回复电子邮件,您还可以提供替代的沟通途径。它可以提高效率。


18) 行业中使用了哪些软件测试工具?也请解释它们的主要功能。

以下是行业中使用的一些软件测试工具列表

TestRail:TestRail 是一个基于网络的、可扩展且灵活的测试用例管理系统。您可以在几分钟内设置其基于云/SaaS 解决方案或在 TestRail 上安装自己的服务器。

Testpad:Testpad 是另一种手动测试工具。它是一个更简单易用的工具,主要强调实用性而非方法。它使用清单式测试计划,可以适应各种方法,包括探索性测试、敏捷的手动方面、语法高亮的 BDD,甚至传统的测试用例管理,而不是一次处理一个用例。

PractiTest:它是一个完整的测试管理解决方案,提供对测试过程的全面可见性。它还通过作为所有 QA 利益相关者的共同聚集地,提供对测试结果更好、更广泛的理解。

Xray:Xray 是一个功能齐全的测试工具,它存在于 Jira 内部并与其无缝协作。它主要用于帮助企业通过高效实用的测试提高产品质量。

TestMonitor:TestMonitor 是一种测试工具,提供端到端测试管理功能。它是一个简单直观的测试工具,可以帮助您采用企业软件、需要 QA、生产高质量应用程序或帮助您的测试项目。

SpiraTest:它是一个适用于大小团队的尖端测试管理解决方案。它方便测试人员在统一环境中处理需求、计划、测试、问题、任务和代码。它开箱即用,并适应您的需求、方法、工作流程和工具链。它使用敏捷的工作方法。


19) Alpha 测试的主要目标是什么?

Alpha 测试是一种在产品发布之前使用的软件测试类型。它主要用于在向最终用户或公众发布产品之前发现问题。它被称为 Alpha 测试,在软件开发过程的早期,接近尾声时完成。这种软件测试主要由软件开发人员或质量保证人员完成,它是软件发布到真实世界之前的最后一道测试。

以下是 Alpha 测试的主要目标列表

  • Alpha 测试的主要目的是通过发现以前测试中遗漏的缺陷来改进软件产品。
  • 它还用于通过识别和解决以前测试中遗漏的缺陷来改进软件产品。
  • 此测试使客户尽早参与开发过程。
  • Alpha 测试在软件开发的早期阶段提供了对软件可靠性的更好理解。

20) Beta 测试的不同类型是什么?

Beta 测试是一种由真实软件应用程序用户在真实环境中测试应用程序的测试类型。这是一种用户验收测试。少量产品最终用户会收到程序的 Beta 版本,以获取有关产品质量的反馈。它通过允许客户验证产品来降低产品失败的可能性并提高其质量。

以下是不同类型的 Beta 测试列表

传统 Beta 测试:这种类型的测试将产品分发给目标市场并收集所有相关数据。它提供了一些有用的信息,可用于改进产品。

技术 Beta 测试:在这种类型的测试中,产品会交付给公司的一组员工,并从员工那里收集反馈/数据。

聚焦 Beta 测试:在这种类型的测试中,软件产品会分发给公众,以收集有关软件最重要功能的输入。

公开 Beta 测试:在这种类型的测试中,产品通过网络渠道向公众提供,并从任何人那里收集数据。收到数据后,可以根据客户输入对产品进行改进。例如,在正式发布之前,微软对其操作系统 Windows 8 使用了所有 Beta 测试。

发布后 Beta 测试:此测试在软件产品投放市场后使用。之后,收集数据以改进产品的未来版本。


21) 代码走查 (Code Walkthrough) 和代码检查 (Code Inspection) 之间有什么关键区别?

代码走查和代码检查之间的关键区别在于,代码走查是一种非正式审查,属于非正式会议。在此,作者向其主管或同事描述工作产品以接收反馈。它主要用于检查产品的有效性,并且通常被认为是质量保证的一种静态方法。

另一方面,代码检查是一种正式审查,属于产品符合特定要求和标准的情况。它由项目团队发起,涉及固定会议,并将产品与特定文档和代码进行比较。它包括系统化和结构化测试,可提高软件产品的可用性、可维护性和可靠性。


22) Alpha 测试和 Beta 测试之间有什么关键区别?

下表包含 Alpha 测试和 Beta 测试之间的关键区别

Alpha 测试Beta 测试
Alpha 测试包括白盒测试和黑盒测试。Beta 测试只包括黑盒测试。
Alpha 测试通常/主要由公司的全职测试人员完成。Beta 测试主要由不是公司员工的客户完成。
Alpha 测试不进行任何可靠性或安全性测试。Beta 测试主要检查应用程序的可靠性、安全性和健壮性。
Alpha 测试在开发人员的场所进行。Beta 测试在产品的最终用户那里进行。
Alpha 测试的责任是验证产品在进入 Beta 测试之前是否高质量。在 Beta 测试中,用户主要关注产品质量。他们还收集用户反馈并确保产品已准备好投入实际使用。
Alpha 测试是一个漫长的过程,其执行周期非常漫长且耗时。Beta 测试不是一个漫长的过程,它只需要少量时间来测试应用程序。
Alpha 测试需要使用实验室或测试环境来测试应用程序或代码。Beta 测试不需要测试环境、设置或实验室。

23) 如何在不改变背景的情况下测试文本框?

如果我们不传递任何以下类型的数据,我们可以在不改变背景的情况下测试文本框

  • 字母数字值
  • 文本格式
  • 特殊字符
  • 文本字段的大小
  • 最小/最大字符数等。

24) 测试人员可以要求哪种特定格式的缺陷报告?

如果测试人员被要求提供特定格式的缺陷报告,那么他可以遵循传统方法来提供报告。缺陷报告必须包含以下要素

  • 缺陷摘要
  • 重现步骤
  • 一个特定缺陷的预期和当前行为

25) 如果没有可用的适当测试文档,测试人员会怎么做?

如果出现没有适当的测试用例文档的情况,并且测试人员仍然需要执行测试用例,在这种情况下,测试人员可以参考客户之前提供的一些邮件,其中清楚地描述了所有要求。他还可以参考其中提到更改细节的屏幕截图。