フレームワークで主にエンドツーエンドのテストを実行している状況があります。
今ではコードカバレッジは素晴らしいと思いますが、この状況(PHP/PHPUnit/XDebug)では、コードの実行が50〜80%遅くなります(XDebugはコードカバレッジの側面の中間にあるため)。
では、この場合、何がより理にかなっているのでしょうか。
物事を全体的に見ると、コードカバレッジがオンの場合は最大12分、コードカバレッジがない場合は約2〜3分かかる6エンドツーエンドのテストしかありません。
これについてどう思いますか?
テストするときは、コードカバレッジではなく、要件カバレッジに焦点を当てる必要があります。
コードカバレッジは、特定のコード行を使用するテストケースがあるかどうかを示します。 notそのコード行が実際にテストされた機能に貢献しているかどうかを教えてくれます。つまり、本質的に役に立たない「カバーされたコード」を持つことができます。
一方、特にエンドツーエンドのテストを実行する場合は、時間切れになるため、すべてをテストすることはできません。したがって、エンドツーエンドのテストでは、コードカバレッジはまったく意味がありません。
そして最後に、あなたはコードを顧客に販売せず、機能を販売します。
結局のところコードカバレッジは、ユニットテストがどれほど信頼できるかを感じさせます。しかし、それはそれほど重要ではないはずです。
カバレッジテストのオンとオフを簡単に切り替えることができますか?もしそうなら、あなたは時折カバレッジテストを行うことができますが、それをオフにしてほとんどの機能テストを行います。
コードカバレッジテストは、テストしていないコードの機能の一部を明らかにするため、実行できる場合に適しています。テストしていない場合は、そのコードが機能するかどうかはわかりません。
コードカバレッジは通常、単体テストに関するフィードバックを取得する場合にのみ役立ちます。ユニットテストは、すべてのEdgeケースをテストし、各ユニットを正しく保つための細かな点を処理する場所です。
エンドツーエンドのテストでは、通常、アプリケーションの最後の1分ごとの詳細を実行することはありません。それはそれほど有益ではありません。エンドツーエンドのテストではオフにすることをお勧めします。これは、オンになっている単体テストがあることを前提としています。