私の答え?おそらく、そうではないでしょう。
EOEテストは、非常に単純な場合に適しています。基本的なシナリオをカバーすることを計画している場合は、EOEテストでいくつかの利点を得ることができます。しかし、本当に複雑で大きなアプリケーション(ミッションクリティカルかどうかにかかわらず)がある場合、このEOEテストは維持にコストがかかり、価値があるかどうかを評価するためのシナリオを知る必要があります。
数年前、Google Testing Blogがこの問題について議論しています。私は作者にのみ同意することができます。優れたテストは、迅速で信頼性が高く、障害を分離する必要があります。これは、EOEテストでは提供できない機能です。
私は、多くのシナリオをカバーする12時間を超えるエンドツーエンドのテストを備えたアプリケーションに取り組みました。最終的には、このテストをさまざまなマシンに分散し、テストの開始、実行、終了を制御し、結果を収集してマージしました。テストされたアプリケーションはモノリスアプリケーション(テストを実行する方が簡単です)であり、テストを維持するのは悪夢でした。
ほとんどの場合、結果からバグを見つけるのではなく、テストを維持していました。エンドツーエンドのテストでバグの原因を発見するには多くの時間がかかります。多くの「偽陰性」テストと、問題を理解して修正するための数時間も処理しました。Javaアプレットの読み込みの問題、ページに予期された要素が見つからない(および自動化速度に関するその他の問題)、クエリコードを維持する(元のクエリはデータベース固有のコードを使用するため)データベースメモリテストでのみ使用されます。
これらすべてには、稼働を維持するための人々が必要です。最後に、一部のEOEテストを削除し、それらを多くの単体/統合テストに置き換えます。
したがって、私の保守的なアドバイスは、Googleのテストピラミッドを使用することです。
最初の推測として、Googleは70/20/10の分割を提案することがよくあります。70%の単体テスト、20%の統合テスト、10%のエンドツーエンドテストです。正確な組み合わせはチームごとに異なりますが、通常はピラミッドの形状を維持する必要があります。