スタックは、リンクされたリストを介して実装されます。機能する場合と機能しない場合のテストケースは何ですか?
3141 次
2 に答える
5
適切な単体テストは、特定のインターフェイス (ブラックボックス テスト) と特定の実装 (グラスボックス テスト) によって異なります。スタックの場合、テストすることが期待されるいくつかのこと:
- アイテムをスタックにプッシュしてポップすることができます。
- 複数の個別のアイテムをスタックにプッシュする場合、ポップを繰り返すとそれらが逆の順序で返されます。
- 初期化されていないスタックは空です。
- アイテムがプッシュされたスタックは空ではありません。
- アイテムがプッシュされ、その後削除されたスタックは空です。
- アイテムがないときにポップしようとすると、NULL を返すか、例外をスローするか、プログラムを中止するかに関係なく、文書化されたタイプの失敗が発生します。
要約する:
- 基本機能。
- 注文物件。
- 空不変。
- 失敗モード。
テストする必要があるものは、他のデータ構造では異なることに注意してください。通常、この一連のテストを作成する方法は、ドキュメントによって行われた各保証が維持されていること、および関数を介したすべてのコード パスが維持されていることを確認する、各関数の単体テストを作成することです。さらに、文書化された故障モードをテストして、予想どおりに故障することを確認する必要があります。
于 2011-02-16T08:04:53.903 に答える
1
さて、スタックに何をさせたいか考えてみてください。API を作成 (または既存の stack の API を参照) し、すべての関数が本来の動作をするかどうかをテストします。Unit Testingをご覧ください。
例: 基本スタックにはpush()
andが必要なpop()
ので、次のようにします。
- 要素 A を作成し、
- A をスタックにプッシュし、
- 要素をポップする
- 要素 A かどうかを確認します。
特にエッジ ケースをテストします: 最後の要素の削除、要素の 2 回の挿入、無効なオブジェクトの挿入、スタック自体への参照、スタック上のオブジェクトの削除。
于 2011-02-16T08:03:16.307 に答える