開発中に単体テストを作成する場合、コーディングだけと比較して、アプリケーションの開発にかかる時間について利用可能な統計情報はありますか?
これについては非常に興味深い研究がいくつかあります。次のホワイトペーパーをお読みください。
テスト駆動開発による品質改善の実現:4つの産業チームの結果と経験
著者の1人であるNachi Nagappanのホワイトペーパーおよびその他の研究については、http://research.microsoft.com/en-us/news/features/nagappan-100609.aspxで説明しています。
この研究とその結果は、テスト駆動開発による品質改善の実現というタイトルの論文に発表されました。IBMAlmaden Research CenterのE. Michael MaximilienとNagappanによる4つの産業チームの結果と経験。マイクロソフトの主なソフトウェア開発リーダーであるティルマレシュバート。ノースカロライナ州立大学のローリー・ウィリアムズ。研究チームが発見したのは、TDDチームが、TDD以外のチームよりも欠陥密度の点で60〜90%優れたコードを生成したことです。彼らはまた、TDDチームがプロジェクトを完了するのに15〜35%長くかかったことを発見しました。
「12か月の開発サイクルでは、35パーセントがさらに4か月で、これは巨大です」とNagappan氏は言います。「しかし、トレードオフは、コード品質が非常に優れているため、リリース後のメンテナンスコストを大幅に削減することです。繰り返しますが、これらは管理者が下さなければならない決定です。どこで打撃を受けるべきでしょうか?しかし今、彼らは実際にそれらの決定を行うための定量化されたデータを持っています。」
さらに、Jason Gormanは、今年のSoftware Craftsmanshipカンファレンスでこのような実験を提案しています。彼はTDDと非TDDアプローチを使用して同じアプリケーションを作成する実験を試みており、最近彼の結果についてブログに書いています:
3回の反復で、TDDなしでカタを完了するのにかかった平均時間は28分40秒でした。TDDの平均時間は25分27秒でした。TDDを使用しない場合、平均で5.7パス(受け入れテストに合格)しました。TDDでは、平均で1.3パスを作成しました(2回の試行で、最初にパスしましたが、1回で2パスかかりました)。
さて、これはもちろん赤ちゃんの実験でした。そして、厳密には実験室の条件ではありません。しかし、私はいくつかの興味深い点に注意しています。すべて同じです。
より多くの人々がそれを実行するとき、この実験の完全な結果を見るのは面白いでしょう。
(良好な)単体テストを行ったときに保守が何時間短縮されるかを示す統計情報はありますか?
上記のホワイトペーパーから:
ケーススタディの結果は、TDDプラクティスを使用しなかった同様のプロジェクトと比較して、4つの製品のリリース前の欠陥密度が40〜90%減少したことを示しています。