「どの「ベスト」プラクティスを採用した場合に ROI が向上し、ソフトウェアの品質がより速く向上するかを示す研究」
それは素晴らしいことではないでしょうか。もしそんなことがあったら、みんなでやっていて、DDJ でそれを読むだけです。
ないので、苦渋の判断をしなければなりません。
「8% の ROI のために X を実行する」ということはありません。テクニックの中には、多額の投資を必要とするものがあります。その他は無料で始められます。
- 単体テスト (本当の意味で) - 無料 - ROI はすぐに開始されます。
- 自動化された単体テスト (無料ではない) には自動化が必要です。
- テスト駆動設計と開発 - 無料 - ROI がすぐに開始されます。
- 静的コード分析 - ツールが必要です。
- 継続的インテグレーション機能 - 安価ですが無料ではありません
ROIを知ることはできません。したがって、投資を優先することしかできません。人々が他のものよりも採用しやすいものもあります。チームがこの手法を受け入れる意欲を考慮に入れる必要があります。
編集。単体テストは無料です。
「テストのコーディングに費やす時間は、リストの次の機能をコーディングするのに費やされた可能性があります」 確かに、テストは開発者がより多くの作業を行うことを意味しますが、サポートはデバッグの作業を減らします。これは1対1の取引ではないと思います。正式な単体テストの記述 (および合格) にもう少し時間を費やすことで、サポート コストが大幅に削減されます。
「レガシーコードはどうですか?」ポイントは、無料はコスト管理の問題だということです。レガシー コードに単体テストを追加すると、コストは無料ではありません。だから、それをしないでください。代わりに、メンテナンス、バグ修正、および新規開発の一環として単体テストを追加してください。その後は無料です。
「トレーニングが問題です」 私の経験では、いくつかの確かな例と、コードに加えて単体テストに対する管理上の要求の問題です。単体テストが必要であることを説明するには、全体会議以上のことは必要ありません。以下に例を示します。次に、全員が自分のステータスを「書かれたテスト/テストに合格」として報告する必要があります。60% 完了していません。315 個のテストのうち 232 個です。
「特定のプロジェクトで機能する場合にのみ、平均して無料です」常に正しい、良い点.
「もっと時間が必要です。時間はビジネスに自由ではありません」 ほとんど機能せず、多くのサポートを必要とする悪いコードを書くことも、機能するが多くのサポートを必要としない良いコードを書くこともできます。テストに実際に合格するまでの時間は、サポート、メンテナンス、およびデバッグのコストを削減すると思います。私の経験では、リファクタリングのための単体テストの価値により、アーキテクチャの変更にかかる時間が劇的に短縮されます。機能を追加する時間を短縮します。
「すぐに ROI になるとは思いません」 実際、1 つの単体テストには非常に大きな ROI があるため、特性化するのは困難です。最初に合格するテストは、あなたが本当に信頼できると思うものになります。信頼できるコードを 1 つだけ持つことで、時間の節約になります。考えるのに多くの時間を費やさなければならないことが 1 つ減るためです。
戦記
今週は、バルク データ ローダーを完成させる必要がありました。お客様から受け取った 30,000 行のファイルを検証してロードします。内部で開発したファイルをアップロードするために使用する優れたライブラリがあります。そのモジュールを顧客ファイルに使用したかったのです。しかし、顧客のファイルはかなり異なっているため、ライブラリ モジュール API はあまり適していないことがわかりました。
そのため、API を書き直し、テストを再実行して、変更をチェックインしました。これは、API の大幅な変更でした。破損多し。すべての参照を見つけて修正するために、ソースを大幅に検索します。
関連するテストを実行した後、チェックインしました。そして、密接に関連していないと思われるテストを再実行しました。おっと。失敗しました。API の一部ではないものをテストしていましたが、これも壊れていました。修理済み。再度チェックインしました(1時間遅れ)。
基本的な単体テストがなければ、これは QA で機能しなくなり、バグ レポートが必要になり、デバッグと再作業が必要になります。労力を見てください: QA 担当者がバグを見つけて報告するのに 1 時間 + 開発者が QA シナリオを再構築して問題を特定するのに 2 時間 + 何を修正するかを決定するのに 1 時間。
単体テストあり: テストが通らなかったことに気づき、コードを修正するのに 1 時間。
ボトムライン。テストを書くのに3時間かかりましたか?いいえ。しかし、テストを書くための私の投資に対して、プロジェクトは 3 時間戻ってきました。