1

ドライブのナイーブ文字列検索アルゴリズムをテストする必要があります。 http://en.wikipedia.org/wiki/String_searching_algorithm

誰かが私がこの問題にどのように取り組むことができるかについていくつかの光を当てることができますか?

私のテストは、外部の動作のみをテストする必要がありますか?(つまり、使用されるアルゴリズムに関係なく、パターン発生インデックス?)

または、アルゴリズム固有で、テストドライブアルゴリズム固有の実装にする必要がありますか?

4

1 に答える 1

1

または、アルゴリズム固有で、テストドライブアルゴリズム固有の実装にする必要がありますか?

これは、クラスがどのように使用されるかに大きく依存します。パブリックコントラクトをテストするのが通常の方法です(そして、そのための適切なテストを作成するのはかなり簡単です)。したがって、クライアントが実装の詳細に関する知識を何らかの形で使用できない限り、私はそれに固執します。

紙に特定のアルゴリズムがあると、次のような実装関連のテストを厳密に記述せずに、いくつかの基本的なテストを特定するのに役立つ可能性があることに注意してください。

  • 無効な入力(空の文字列、null)
  • 入力が大きすぎる/小さすぎる(たとえば、パターンが検索された文字列の長さを超えています-それではどうしますか?)
  • 有効な入力ですが、何も一致しません

これにより、実装固有のテストを行うための基本的なエントリポイントが得られます。データ駆動型テストを利用 すると、実装レベルの知識が必要になることを完全に回避できます。また、十分な大きさのデータセットがあれば、アルゴリズムの正確さも検証できます。

于 2012-07-10T17:33:59.433 に答える