テスト駆動開発の利点を理解していますが、単体テストの導入により、製品に対する満足度やオーサリング開発者のストレスレベルを明らかにする研究はありますか?
ケーススタディ、またはできれば研究論文を探しています。
私は、TDDとプログラマーのストレスに焦点を当てた論文を個人的に知りません。私が実際に提供できるのは、私自身の経験に基づく事例証拠だけです。
私が最初にTDDを試したとき、より困難なことの1つは、コードの前にテストを書くことがより理にかなっているように、考えを再集中させることでした。多くの場合、私のアイデアをコードに組み込んでから、テストをフォローアップする方が簡単だと感じました。時間の経過とともに、コード内の目立ったバグの数が実際には変化していないように見え、テストによって動作が遅くなっているように見えることに気付きました。ある意味で、これは、質の高い仕事を時間どおりに提供する能力の点で失敗のように感じられ、スケジュールの見積もりがすべて私が期待していたものから大きく外れているように見えたため、当時の追加のストレスに貢献しました。
より多くの経験と、このアプローチを実際に機能させることができるかどうかを確認する決意を持って、数年早送りします。私は、BDDを使用するアプローチを変更しました。これは、私の考え方に合っているようで、TDDを実行するためのより良い方法のように感じます。この方法の方がうまく機能するだけでなく、指定された要件のみを満たすことに集中し続けることがより簡単にできることがわかりました。金メッキで時間を無駄にすることはなく、以前よりも早くコードを解き放つことができます。これは、自分の努力がより集中され、時間をより効率的に使用できるようになるためです。これは、私のテストランナーが私のすべてのテストに合格したことを示したときに、より平凡なタスクをさらに楽しくする効果がありました。コードの品質も向上しており、コードは時間の経過とともに維持しやすくなっています。これらすべてにより、私の仕事のストレスが大幅に軽減されました。
問題は、物事がこのようにうまく機能していることはわかっていますが、仕事の質に影響を与えている他の多くの要因があるため、TDDとストレスの軽減との直接的な相関関係を描くことはできません。私は、ストレスレベルの全体的な減少にも貢献している他のスキルを時間をかけて学びました。それらのスキルの中には対人関係のものもあれば、単純なマインドフルネスの練習のものもありますが、コードの品質とデザインに関する本をたくさん読んだ結果として習得したスキルもあります。これらはすべて、私の仕事の進め方に影響を与えています。これらすべての要素が私が感じるストレスの量に影響を与えていますが、それ自体が大きな影響を与えたことで目立つものはありません。
したがって、TDD自体がストレスを軽減するとは言えませんが、TDDがソフトウェアの作成方法の改善に役立っているという観察結果を提供できます。仕事を楽にすることで、TDDはストレスの少ない労働環境を維持するのに何らかの形で貢献したと言えますが、TDDが貢献した具体的な量を直接測定することは困難です。
> Test Driven Development, has it reduced stress for developers?
いいえですが、ストレスの種類が変わりました。
Tdd以外のレガシープロジェクトでは、コードの品質とメンテナンスコストの増加のためにストレスを感じています。特に、「プログラムロジックのこの小さな変更に非常に多くの時間と費用がかかる」理由を判断する際に、私はストレスを感じています。
Tddプロジェクトには、不要なコードをすべて含む「tdd-時間の無駄」を廃止することで生産性をさらに向上させたい「賢い」利害関係者がいます。したがって、TDDを守ることはストレスです。
コード品質が高いために生産性が向上する場合は、特定のタイムスロットでより多くの機能を実装する必要があります。
私がtddプロジェクトであることを望んだときに、多くのストレスを引き起こしたいくつかの非tddレガシープロジェクトを考えることができます。