TDD朴素文本搜索算法

时间:2012-07-10 16:44:59

标签: algorithm unit-testing tdd

我需要测试驱动器Naïve字符串搜索算法。 http://en.wikipedia.org/wiki/String_searching_algorithm

有人可以解释我如何处理这个问题。

我的测试应该只测试外部行为吗? (即,无论使用何种算法,模式都会出现索引?)

或者我应该是特定于算法和测试驱动算法的具体实现吗?

1 个答案:

答案 0 :(得分:1)

  

或者我应该是特定于算法和测试驱动算法的具体实现吗?

这在很大程度上取决于你的课程将如何使用。测试公共合同通常是要走的路(并且为此编写体面的测试相当容易),所以除非你的客户能够以某种方式使用实现细节知识,否则我会坚持这一点。

请注意,在纸上使用特定算法可以帮助精确定位几个基本测试,而无需严格执行与实现相关的测试,例如:

  • 无效输入(空字符串,空值)
  • 输入太大/太小(比如,超过搜索字符串长度的模式 - 那么你做什么?)
  • 有效输入,但没有匹配

这应该为您提供更多特定于实现的测试的基本入口点。请记住,利用data driven testing可以帮助您完全避免使用实施级别的知识,并且足够大的数据集可能足以验证算法的正确性。