新しい機能を実装したり、バグを修正したりする必要があるときは、通常、テストで状況を再現しようとします。フィクスチャを考え出し、テストを書くのに3時間ほどかかることがあります。実際の機能の実装やバグの修正には1時間もかかりません。
実際に機能を実装したり、バグを修正したりするのに比べて、テストを書くために他の誰かが少なくとも3倍長い時間を費やしていますか?コードの作成に対するテストの作成に費やした時間の許容比率はどのくらいですか?
新しい機能を実装したり、バグを修正したりする必要があるときは、通常、テストで状況を再現しようとします。フィクスチャを考え出し、テストを書くのに3時間ほどかかることがあります。実際の機能の実装やバグの修正には1時間もかかりません。
実際に機能を実装したり、バグを修正したりするのに比べて、テストを書くために他の誰かが少なくとも3倍長い時間を費やしていますか?コードの作成に対するテストの作成に費やした時間の許容比率はどのくらいですか?
回答:
バグや機能の複雑さによって異なります。かつて1.5週間の開発費見積もりと3か月のテスト見積もりがあった1つのプロジェクトを思い出します。コードの変更はわずかで、ほんの数行しかありませんでしたが、保険システムの多くのコンポーネントにさまざまな影響を与えたため、非常に徹底的にテストする必要がありました。別の時に、間違った場所に括弧が含まれるバグがありました。検出に2時間、修正に2秒かかりましたが、ロジックの変更の影響を受けた可能性がある数十のシナリオをテストするのに約1週間かかりました。
一般に、正確な方法がないため、コーディングに費やした時間とテストに費やした時間の比率について心配する必要はありません。一部のプロジェクトでは、通常は(プロジェクトに対して)標準であるプロジェクト相対比率が表示されますが、それでも後で変更される可能性があります。
コードが適切に機能することを確信を持って言うのに必要なだけ時間をかけてください。
機能が意図したとおりに機能するか、またはバグが正しく修正されるまで、テストの作成に十分な時間をかけてはいかがでしょうか。
すべての状況は異なります。なんらかの比率はあり得ません。一部のテストは実装に10分の1の時間がかかり、他のテストは何百倍もの時間がかかります。
プロジェクトで単体テストを導入した後、私はかつて調査を行いました。その結果、テストの作成に費やした時間は、実装に費やした時間と同じくらい、約40%でした。しかし、私たちはそこで完全にカバーすることを目指していませんでした、そしてそれは強力な構造と慣習で確立されたプロジェクトでした。
コーディング時間とユニットテストの作成時間はほぼ同じになるはずです。多分もう少し時々。SOに関するこの記事を見てください。コーディングとユニットテストに費やされた時間の比率
あなたは正しく数えていますか?テストに費やす時間を正確に計算するには、テストなしでコードを記述する必要があります。
テストを書くのに本当に3時間かかり、合格するためのコードを書くのに1時間かかった場合、テストを書かずに同じバグを修正するのに5時間以上かかることがあります。
はい、多くの場合、実際の修正コードよりもテストに多くの時間を費やしています。