了解しました...これで、チームがより多くのテストを作成するように奨励しようとしているので、これは私を混乱させていますが、ここでは、次の例が統合テストケースと機能テストケースのどちらであるかを判断できません。
以下を検討してください。
多数のJSONフィードをルーティング/公開する単純なWebアプリケーションがあります。ユーザーリクエストごとに、データ変換を実行してからシリアル化されたJSON応答を返す前に、アプリケーションがHTTPを介して(バックエンドで)外部サービスにクエリする必要があります。
サードパーティのライブラリを使用して、バックエンドで発生するすべての固有のHTTPインタラクションを記録し、それをファイルシステムに書き込むことができます。これらの記録は「再生」され、テスト中にこれらのクエリ結果を確定的として扱うことができます。
私のテストケースには単一のアサーションが含まれています。これは、単一のフィードに対して予期されるJSON応答を含む単なる文字列です。アプリケーションを初期化した後-応答をキャプチャして予想されるJSONと比較する前に、アプリケーションが要求をルーティングできるようにします。
1)これは機能テストですか、それとも統合テストですか?
2)機能している場合、「ビッグバン統合テストと機能テスト」の違いは何ですか?
1)これは機能テストですか、それとも統合テストですか?
機能テストと統合テストはテストの分類であり、相互に排他的ではありません。
この場合は両方です。統合テストは、定義上、複数のコンポーネントをテストするすべてのテストです。連携して動作する2つのクラスをテストするのは低レベルの場合もあれば、システム全体をテストするテストの場合もあります。
機能テストは、特定のシステム機能を確認するテストです。したがって、「システムはユーザーオブジェクトをデータベースに永続化する」という要件がある場合、機能テストは、システムを起動し、ユーザーを保存し、システムを停止し、システムを再起動し、ユーザーが存在し、かわった。
要件仕様またはユーザーストーリーからテストケースを作成している場合、私はテストケースを「機能テスト」と呼びますが、それらは本質的に統合テストとしても分類されます。
2)機能している場合、「ビッグバン統合テストと機能テスト」の違いは何ですか?
私の理解から、「ビッグバン統合テスト」は、システムのすべてのコンポーネントが統合されてからテストされる統合テストです。このテストの目的は、すべてのコンポーネントが正しく統合され、アプリが起動できることを確認することです。この種のテストの欠点は、テストケースの失敗がバグの場所にほとんど方向性を与えないことです。そのため、より低いレベルの統合テストも重要です。
機能テストでは、テスト前にシステム内のすべてのコンポーネントを統合することもできます。ただし、システム全体が起動しているため、ビッグバン統合テストは同じように見える場合がありますが、概念的には異なります。