测试的剖析

简而言之,测试旨在查看特定行为的结果,并确保该结果与预期一致。行为不是可以凭经验衡量的东西,这就是为什么编写测试可能具有挑战性。

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

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

  1. 安排(Arrange)

  2. 执行(Act)

  3. 断言(Assert)

  4. 清理(Cleanup)

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

执行(Act)是启动我们想要测试的行为的单一、改变状态的动作。这种行为执行对被测系统(SUT)状态的改变,正是通过结果改变的状态,我们可以对行为做出判断。这通常采取函数/方法调用的形式。

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

清理(Cleanup)是测试在完成后进行清理的地方,这样其他测试就不会被它意外影响。

从核心来看,测试最终是执行(Act)断言(Assert)步骤,而安排(Arrange)步骤仅提供上下文。行为存在于执行(Act)断言(Assert)之间。