2010-07-12 55 views
4

我读过我应该先写简单,基本的测试,然后逐渐向更难的方向发展。我应该为以下功能编写哪些测试(按顺序)?TDD - 我应该为这个功能写什么测试?

功能List.syncWithList(lst)

  • 应该添加不在列表中,但在lst
  • 应删除列表中没有的lst
  • 方可更换任何项目的任何物品清单列表中与lst
  • 不同的版本标签中的项目不应替换列表中与中版本标记相同的任何项目
+2

您提供了要测试的事情列表。你还想要什么? – 2010-07-12 10:09:17

回答

8

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

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

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

  • 两侧空单。
  • 相同的列表。
  • 空左列表添加一个元素的右列表。
  • 带有空白右列表的单元素左列表将删除。
  • 以前的两个测试,但一边是五元素列表。
  • 替换单元左列表中的一个元素。
  • 替换五元素左列表中的一个元素。
  • 取代五元素左列表中的三个元素。
  • 检查在相同版本标签上没有替换。

然后在解决个别问题时添加更多。

我无法强调这一点:自动化测试!当您只需按下按钮并查看结果时,您会发现测试变得更容易。每次你发现一个bug时,添加一个可以将这个bug捕获到上面的测试套件的测试,然后按下按钮来验证它。

我们已将我们的测试精确到美术。使用一个命令,就可以完成整个过程,从而吹走数据库,使用已知数据加载它们,运行我们的测试,将输出与先前成功的测试等进行比较。

如果我们必须手动完成所有这些工作,那么我们很快就会抛弃整个想法。通过自动化一切,测试变得轻而易举。

+3

这是一个很好的答案。我只想补充一点,提问者指出,提问者写的实际上是很好的测试名称。你的测试名称应该被看作是对类的作用和预期行为的描述。 – kyoryu 2010-07-12 05:22:15

+1

+1用于自动化测试 – 2010-07-12 05:35:47

+1

+1:您已经拥有您的列表。测试一下。 – 2010-07-12 10:08:54