1

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

有人可以阐明我如何解决这个问题。

我的测试应该只测试外部行为吗?(即模式出现索引与使用的算法无关?)

或者我应该是算法特定的并测试驱动算法特定的实现?

4

1 回答 1

1

或者我应该是算法特定的并测试驱动算法特定的实现?

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

请注意,在纸上拥有特定算法可以帮助查明一些基本测试,而无需编写严格的实现相关测试,例如:

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

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

于 2012-07-10T17:33:59.433 回答