了解不同类型的测试
测试范围涵盖从端到端测试(通过操作用户界面)到集成测试,最后到单元测试。端到端测试测试一切,包括用户界面、底层 HTTP 服务,甚至数据库交互;没有什么是被模拟的。例如,如果您有一个电子商务应用程序,则端到端测试实际上可能会使用真实信用卡下达真实订单,或者可能会使用测试信用卡下达测试订单。
端到端测试的运行和维护成本很高。它们需要使用通过编程驱动程序(如 Selenium、WebdriverIO 或 Cypress)控制的完整浏览器。这类测试平台的运行成本很高,应用程序代码的微小改动都可能导致端到端测试失败。
集成或系统级测试可确保一组系统按预期运行。这通常需要确定被测系统的极限位置,并允许其运行,通常是针对模拟或存根的上游服务和系统(因此不在测试之列)。与端到端测试相比,由于外部数据访问被存根化,因此可以减少超时和片断等一系列问题。集成测试套件通常足够快,可以作为持续集成步骤运行,但工程师往往不会在本地运行完整的测试套件。
单元测试能在开发过程中提供快速反馈。单元测试与 TDD 搭配使用是极限编程实践的一部分。单元测试非常适合测试复杂的逻辑或根据预期输出构建系统。单元测试通常可以快速运行,开发人员在将代码提交审查和持续集成测试之前,可以根据单元测试结果编写代码。
以下是对测试金字塔的解释。它可以被理解为:你应该有大量廉价而快速的单元测试、合理数量的系统测试和少量端到端的用户界面测试:

Figure 1. Figure 12.1: Pyramid of testing diagram
现在我们已经了解了为什么应该测试应用程序,让我们开始编写一些测试。