テストピラミッドでは、エンドツーエンドテストよりも単体テストが多くなるはずです。Webアプリケーションでユニットテストとエンドツーエンドテストの比率を決定する方法は?
しかし、適切な比率を得るにはどうすればよいですか?
エンド・ツー・エンド・テストが49%、ユニット・テストが51%であれば良いですか?
私は、Webアプリケーションのapiエンドポイントがcodeceptionとphpunitでテストされていることに注意しています。
また、10%のエンドツーエンドテストと90%の単体テストを目指してください。
これらのパーセントは、エンドツーエンドテストでx%をカバーした場合、単体テストで同じコードをカバーしないことを意味します。
しかし、私はMartin Fowler氏は、ここに書き込んとして多分私達は、彼らはテストをエンドツーエンドでカバーされている場合でも、ユニットテストと同じラインをカバーする必要があり、間違っている可能mihgt:
https://martinfowler.com/bliki/TestPyramid.html
私はいつも高レベルのテストは、 テストディフェンスの第2ラインとしてそこにあると主張する。高水準のテストでエラーが発生した場合は、機能コードにバグがあります。 には、ユニットテストである がありません。したがって、私は、 で公開されているバグを高レベルのテストに修正する前に、そのバグをユニットテストで再現することをお勧めします。その後、 ユニットテストでは、バグが確実に死んでいることが保証されます。
開発時間を節約するためにエンドツーエンドテストでカバーされている場合、通常はユニットテストで同じコードをカバーしません。
単体テストで同じコードを記述する必要がある場合は、できるだけエンドツーエンドではなく、単体テストでカバーする必要があるため、少なくとも1つのAPIエンドポイントの基本呼び出しをカバーする必要があることを意味します。
約100%カバレッジ:データベースクエリテストを含めるか?たとえば、条件がビジネスロジックの場合です。しかし、条件に合致しない場合は返されないことをカバーするのに時間がかかります。次に、コードが変更され、以前に削除された条件が削除されます。バグは導入されますが、テストによって表示されません。なぜなら、新たに導入されたconditiinによって項目が見つからず、テストがうまくいくと思うからです。 –
エンドツーエンドのテストではデータベースを使用する必要があります。私はハード/不可能でほとんどの場合に多くの価値を与えないので、単体テストDBクエリーに傾向はありません –