在编写测试时,这些指导方针将作为要遵循的最佳实践,这可以导致更高质量的测试。
以下是在编写测试时应遵循的最佳实践。这些是通用准则,无论进行何种类型的测试,都应该遵循。
保持测试独立每个测试都应该独立于其他测试,确保一个测试的失败不会影响另一个测试的执行或结果。这可以提高测试的可靠性,实现测试并行化,并便于调试。
不要在测试之间共享状态。在执行测试之前设置状态,在执行后将其清除。这样可以保持测试的隔离性。
早期编写测试尽早在开发过程中开始编写测试。早期的测试有助于更早地发现问题,并在开发生命周期的早期提供反馈。随着开发生命周期进展到后期阶段,修复问题的成本会增加。例如,在本地开发过程中找到和修复问题是容易且廉价的,但是如果同样的问题移至生产环境,则很难找到问题,可能会导致组织损失资金、用户或信任。
测试行为,而不是实现通过测试应用程序公开的行为来测试应用程序。例如,对于 Web API,如果测试调用控制器的方法,则这些测试测试的是实现而不是行为,因为这不是 Web API 公开的行为。公开的行为是 HTTP API,应该在该级别编写测试,而不是在更低的层级。这样可以使测试与实现解耦,同时保持公共行为的一致性时,可以随意更改实现。
通过构建器管理复杂状态通常,为了测试某个场景,我们首先需要构建一个状态。这有时需要相当多的代码来进行设置。通过使用设计模式(例如构建器)来管理和简化创建的状态。
编写专注的测试一个测试应该只验证一件事情。它不应该连续验证多个语句。保持测试小而专注有助于维护测试,当测试失败时,您将知道确切的错误原因。但是,如果一个测试包含多个验证步骤,那么您将必须登陆以验证测试中到底哪个部分失败了。
使用多个级别使用多个级别创建测试套件,例如单元测试、集成测试和端到端测试。然后,在编写测试时,考虑在哪个级别可以更好地进行测试,然后在该级别编写测试。例如,公共库方法可以在单元测试中进行测试,而数据库交互可以在集成测试中进行测试。