我只是想补充并提供更多背景信息,说明我们为什么要进行这些级别的测试,它们对示例的真正含义
Mike Cohn 在他的《敏捷成功》一书中提出了“测试金字塔”作为在项目中进行自动化测试的一种方法。这个模型有多种解释。该模型解释了需要创建什么样的自动化测试、他们可以多快地对被测应用程序提供反馈以及谁编写这些测试。
基本上任何项目都需要 3 个级别的自动化测试,它们如下所示。
单元测试-
这些测试您的软件应用程序的最小组件。这实际上可能是代码中的一个函数,它根据一些输入计算一个值。此功能是构成应用程序的硬件/软件代码库的其他几个功能的一部分。
例如 - 让我们以基于 Web 的计算器应用程序为例。该应用程序中需要进行单元测试的最小组件可能是一个执行加法的函数,另一个执行减法的函数等等。所有这些小功能组合在一起就构成了计算器应用程序。
过去,开发人员编写这些测试,因为它们通常使用与软件应用程序相同的编程语言编写。诸如 JUnit 和 NUnit(用于 java)、MSTest(用于 C# 和 .NET)和 Jasmine/Mocha(用于 JavaScript)等单元测试框架用于此目的。
单元测试的最大优势在于,它们在 UI 下运行得非常快,我们可以快速获得有关应用程序的反馈。这应该包含超过 50% 的自动化测试。
API/集成测试-
它们一起测试软件系统的各个组件。这些组件可能包括测试数据库、API(应用程序编程接口)、第三方工具和服务以及应用程序。
例如 - 在我们上面的计算器示例中,Web 应用程序可能使用数据库来存储值,使用 API 进行一些服务器端验证,并且它可能使用第 3 方工具/服务将结果发布到云端以实现可在不同平台上使用。
过去,开发人员或技术 QA 会使用各种工具(例如 Postman、SoapUI、JMeter 和 Testim 等其他工具)编写这些测试。
这些运行速度比 UI 测试快得多,因为它们仍然在后台运行,但可能比单元测试消耗更多时间,因为它必须检查系统各个独立组件之间的通信并确保它们具有无缝集成。这应该包含超过 30% 的自动化测试。
UI 测试-
最后,我们有验证应用程序 UI 的测试。这些测试通常用于测试通过应用程序的端到端流程。
例如 - 在计算器应用程序中,端到端流程可以是,打开浏览器 -> 输入计算器应用程序 url -> 使用用户名/密码登录 -> 打开计算器应用程序 -> 执行一些操作在计算器上 -> 从 UI 验证这些结果 -> 注销应用程序。这可能是一个端到端的流程,非常适合 UI 自动化。
从历史上看,技术 QA 或手动测试人员会编写 UI 测试。他们使用像 Selenium 这样的开源框架或像 Testim 这样的 UI 测试平台来编写、执行和维护测试。这些测试提供了更多的视觉反馈,因为您可以通过屏幕截图、日志、测试报告查看测试的运行方式、预期结果与实际结果之间的差异。
UI 测试的最大限制是,与单元和 API 级别的测试相比,它们相对较慢。因此,它应该只占整个自动化测试的 10-20%。
接下来的两种类型的测试可以根据您的项目而有所不同,但想法是-
烟雾测试
这可以是上述 3 个测试级别的组合。这个想法是在每次代码签入期间运行它,并确保系统的关键功能仍然按预期工作;合并新代码更改后。他们通常需要运行 5 到 10 分钟才能更快地获得故障反馈
回归测试
它们通常至少每天运行一次,涵盖系统的各种功能。他们确保应用程序仍按预期工作。它们比冒烟测试更详细,涵盖了应用程序的更多场景,包括非关键场景。