2

答えにジャンプする前に、私が何を意味するのかを定義しましょう (定義が異なる場合があることに注意してください。それは問題の一部ですが、これが私が使用しているものです)

モック テスト別名動作ベースのテスト--- コードが正しい動作をするかどうかをテストします。つまり、動作を検証するテストです。すべての協力者は嘲笑されます。

単体テスト--- システムの小さな部分 (クラスなど) に焦点を当てた低レベルのテスト。模擬テストを使用すると、共同作業者が嘲笑されます。

統合テスト--- システムの 2 つ以上の部分 (2 つのクラスなど) の相互作用をテストします。テスト対象のコンポーネントはモックされません。

システムテスト--- システムを「ブラックボックス」としてテストします。つまり、システムの内部にアクセスできないユーザーの視点からシステムをテストします。実際のコンポーネントが使用されます (データベース、http など)

私がゆっくりと認識しているのは、単体テストがこの方法で行われる場合、統合テストは必要ないかもしれないということです。

  • 動作ベースの単体テストでは、コンポーネントが互いに正しく通信することを確認する必要があります
  • システムテストは、実際のコンポーネントを使用してバグをキャッチする必要があります

統合テストは、システム テストが失敗した場合のオプションのトラブルシューティング ツールになります (よりきめ細かいため)。(ただし、時折発生する特殊なケースを除けば、適切なログを使用したシステム テストで十分であると主張するかもしれません。)

私は何が欠けていますか?

更新: 「十分」とは、これらの単体テスト + システム テストが、単体 + 統合 + システム テストで見つかるすべてのバグをキャッチすることを意味します。

更新: 「十分」とは、ユニット + 統合 + システム テストで検出され、ユニット + システム テストで検出されないバグがあることを意味しますか? 私が本当に探しているのは、統合テストが必要であることを示す例です。

4

3 に答える 3

0

私がゆっくりと認識しているのは、単体テストがこの方法で行われる場合、統合テストは必要ないかもしれないということです。

一般に、システム テスト (定義したとおり) は、自動化されている場合、統合テストよりもはるかに遅く実行されます。自動化されたシステム テストと同じことを検証する自動化された統合テストがある場合、統合テストはより早く失敗 (または成功) するはずです。

したがって、「ニーズ」の定義によって異なります。さまざまなカテゴリのテストが重複していても害はなく、バグをより早く発見するのに役立つ場合は価値があります。それは、私が推測する価値の大きさに依存します(両方を持つことのROIはいくらですか)。

于 2015-01-01T01:07:35.360 に答える