我已经读过,我应该首先编写简单的基本测试,然后逐渐转向更难的测试.我应该为以下功能编写哪些测试(按顺序)? 函数List.syncWithList(lst) 应该在列表中添加任何不在列表中但是在lst中的
函数List.syncWithList(lst)
>应该在列表中添加任何不在列表中但是在lst中的项目
>应删除列表中不属于lst的任何项目
>应该替换列表中具有不同于lst中的版本标签的任何项目
>不应该替换列表中与lst中版本标签相同的任何项目
除此之外还有边缘情况,例如空列表(在一侧和两侧),相同的列表等等.
最简单的方法是添加以下内容:
>双方空单.
>相同的清单.
>清空左侧列表,其中包含要添加的单元素右侧列表.
>单元素左侧列表,其中包含要删除的空右侧列表.
>前两个测试,但一方面有五个元素列表.
>替换单元素左侧列表中的一个元素.
>替换左边五元素列表中的一个元素.
>替换五元素左侧列表中的三个元素.
>检查相同版本标签上是否没有替换.
然后在解决个别问题时添加更多内容.
我不能强调这一点:自动化测试!只需按下按钮并查看结果,您就会发现测试更容易.每当你发现一个bug时,添加一个测试,它会把这个bug发现到上面的测试套件中,然后按下按钮进行验证.
我们将测试归结为精美的艺术品.使用一个命令,可以实现整个流程,吹走数据库,使用已知数据加载数据库,运行测试,将输出与先前成功的测试进行比较等等.
如果我们在做出改变时必须手动完成所有操作,我们很快就会完全抛弃这个想法.通过自动化一切,测试是轻而易举的.