機能テストとエンドツーエンドテストの違いは何ですか?
Techopedia エンドツーエンドテストは
アプリケーションのフローが最初から最後まで設計どおりに実行されているかどうかをテストするために使用される方法論。エンドツーエンドのテストを実行する目的は、システムの依存関係を特定し、さまざまなシステムコンポーネントとシステム間で正しい情報が渡されることを確認することです。
Techopedia 機能テストについても次のように述べています。
機能テストは、ソフトウェア開発内で使用されるソフトウェアテストプロセスであり、ソフトウェアがすべての要件に準拠していることを確認するためにテストされます。機能テストは、ソフトウェアをチェックして、機能要件内で指定されているすべての必要な機能を備えていることを確認する方法です。
上記の2つの段落を読んだ後、私はまだそれらの違いについて混乱しています。
リクエストを受け入れ、リクエストを解析して、解析したデータをデータベースに送信するnode.jsアプリケーションがあります。
requests parse requests and send data to the database
Client ---------> node.js app --------------------------------------------> Database
前述のnode.jsアプリのエンドツーエンドテストと機能テストを作成するにはどうすればよいですか?
どちらのタイプのテストでも、node.jsアプリをブラックボックスとして扱う必要があると思います。そしてそれにリクエストを送信します。次に、ブラックボックスの出力が正しいかどうかを確認します。
私の場合、機能テストとエンドツーエンドテストに違いはないようです。
私が理解しているように、この2つの最大の違いは、エンドツーエンドのテストでは、システムコンポーネントを本番環境でセットアップするためのテストが必要になることです。実際のデータベース、サービス、キューなど。これは、システムが正しく配線されていることを確認するためです(データベース接続、構成など)。
機能テストでは、アプリケーションポートのメモリ内実装を使用してシステムをセットアップできます。これにより、テストの実行が速くなり、テストを並行して実行できるようになります(場合によっては)。テストで気になるのは、機能が期待どおりに機能することだけです。これにより、データを使用してサードパーティシステムを準備することが困難または時間がかかる可能性があるため、特定のテストを設定するオーバーヘッドを削減できます。
機能テストとエンドツーエンドテストの定義は、プロジェクトのコンテキストによって異なる可能性があると思います。私は、さまざまな人々がさまざまなことを説明するためにこれらの用語を使用しているのを見てきました。そうは言っても、通常これは2つの用語が意味するものです-
機能テスト-これは、要件に基づいてシステムの機能をテストすることを指します。これは通常、システムのさまざまな要件に焦点を当て、システムが正しく機能していることを確認します。たとえば、-アプリケーションへのログイン-が1つの要件である可能性があり、その後、人はこの機能を手動または自動化された方法でテストできます。同様に、カートに商品を追加することも1つの機能である可能性があり、商品を購入するために支払いを行うことができる機能である可能性があります。
エンドツーエンドテスト-これは、ユニットテストやストーリーレベルテストのようにシステムに個別のコンポーネントがあるかどうかをテストするのではなく、エンドツーエンドのユーザーフローに基づいてシステムをテストすることを指します。例-アプリケーションにログインし、ショッピングカートに商品を追加し、チェックアウト画面に移動して注文し、アプリケーションからログアウトすることは、1つのユーザーフローである可能性があります。