TDD - 我应该为此功能编写哪些测试?

时间:2010-07-12 04:39:21

标签: unit-testing function tdd testing

我读过我应该首先编写简单的基本测试,然后逐渐转向更难的测试。我应该为以下函数编写哪些测试(按顺序)?

功能List.syncWithList(lst)

  • 应该在列表中添加任何不在列表中但位于lst
  • 的项目
  • 应删除列表中不在lst
  • 中的任何项目
  • 应替换列表中与lst
  • 中的版本标签不同的任何项目
  • 不应替换列表中与lst
  • 中的版本标签相同的任何商品

1 个答案:

答案 0 :(得分:8)

您的基本测试列表。你刚刚把它们提供给我们。至少,您应该测试是否已满足每个功能要求(例如,您在问题中给出的四点)。

除此之外还有边缘情况,例如空列表(在一面和两面),相同的列表等等。

最简单的方法是添加以下内容:

  • 双方空单。
  • 相同的清单。
  • 清空左侧列表,其中包含要添加的单元素右侧列表。
  • 一个元素左侧列表,其中包含要删除的空右侧列表。
  • 前两个测试,但一方面有五个元素列表。
  • 替换单元素左侧列表中的一个元素。
  • 替换左边五元素列表中的一个元素。
  • 替换五元素左侧列表中的三个元素。
  • 检查相同版本标签上是否没有替换。

然后在遇到个别问题时添加更多内容。

我不能强调这一点:自动化您的测试!当您只需按下按钮并查看结果时,您会发现测试更容易。每当你发现一个错误时,添加一个测试,该测试会将错误发现到上面的测试套件中,然后按下按钮进行验证。

我们将测试归结为精美的艺术品。使用一个命令,可以实现整个流程,吹走数据库,使用已知数据加载数据库,运行测试,将输出与先前成功的测试进行比较等等。

如果我们在做出改变时必须手动完成所有操作,我们很快就会全神贯注。通过自动化一切,测试是轻而易举的。