测试的解剖

简单来说,测试的目的是查看特定行为的结果,并确保结果符合预期。行为不是可以凭经验衡量的东西,这就是编写测试具有挑战性的原因。

“行为”是某个系统对特定情况和/或刺激做出反应的方式。但确切如何为什么做某事并不像做了什么那么重要。

你可以将测试视为分解为四个步骤

  1. 安排

  2. 执行

  3. 断言

  4. 清理

安排是我们为测试准备一切的地方。这意味着除了“执行”之外的所有内容。它排列多米诺骨牌,以便执行可以在一个状态更改步骤中执行其操作。这可能意味着准备对象、启动/终止服务、将记录输入数据库,甚至像定义要查询的 URL、为尚未存在的用户生成一些凭据,或只是等待某个进程完成。

执行是启动我们想要测试的行为的单一状态更改操作。此行为执行被测系统 (SUT) 的状态更改,我们可以查看由此产生的更改状态来对行为进行判断。这通常采用函数/方法调用的形式。

断言是我们查看结果状态并检查在尘埃落定后它是否符合预期的地方。这是我们收集证据来说明行为是否符合预期的地方。我们测试中的 assert 是我们进行测量/观察并对其应用判断的地方。如果某物应该是绿色的,我们会说 assert thing == "green"

清理是测试自行清理的地方,这样其他测试就不会受到它的意外影响。

从本质上讲,测试最终是执行断言步骤,而安排步骤仅提供上下文。行为存在于执行断言之间。