テスト駆動開発(TDD)とは何か?
この記事の内容について
この記事は私が『テスト駆動開発』を読み、テスト駆動開発(以下TDD)について理解したことをまとめたものです。
『テスト駆動開発』からの引用と意訳を多く含みます。引用元は注釈をご確認ください。
TDDとは何か?
TDDはテスト技法ではない。
分析技法であり、設計技法であり、実際には開発のすべてのアクティビティを構造化する技法。1
TDDのTは「テスト」の一部。ではTDDのテストとは何か?
それは Checking である。2
テストと確認(Check)は違う。
確認(Check)は思ったとおりに動くことを確認する行為。つまり期待値との比較なので、機会が得意とするところ。
テストとは対象を壊しにいく行為。これは人間が得意とするところ。3
TDDのテストは、思ったとおりに動くことを確認するものなので、確認(Check)にあたる。
TDDは実際には何で駆動されているのか?
ここまででTDDとは「テスト」という言葉から抱くイメージとは、かなり違うものだとわかる。
では、実際にはどういった言葉が適切なのだろうか?
それは「振る舞い(Behavior)」である。4
テスト駆動開発(TDD)改め振る舞い駆動開発(BDD)は、テストやアサーションといった語彙の先入観による誤解を避け、強みを最大限に引き出すために生まれた。
TDDは誰でもできるのか?
TDDはスキル5
練習によって獲得できる技術。
しかも「個人スキル」なので、状況に依存することなく始められる。
TDDを使ったほうが良いのか?
自分が活用できるテクニックとして加わればよく、最終的には使わなくてもよい。6
優れたエンジニアリングがプロジェクトの成功に占める割合は20%といったところ。
この観点では、TDDを使うと業界の標準的な指標以上になるので「やりすぎ」といえる。7
まとめ
最初は「TDDはテストを最初に書く」くらいのイメージしかなかったのですが、『テスト駆動開発』を読んでその認識は正されました。
教条主義化や意味の希薄化8 が起こっているという話からは、「アジャイル」や「技術的負債」にも同じものがあると感じています。
不安から開放してくれるはずの技法が、他人を攻撃するモノになったり、正しく活用されないのは残念なことです。
とはいえ、それを避けるために生まれたBDDの「振る舞い(Behavior)」という言葉は「テスト」よりも馴染みのないと思われるので、浸透するのはまだ時間を要しそうですね。
それはさておき、私個人としてはTDDは魅力的なスキルです。
プロダクトやビジネスを加速させるためのテクニックとして、積極的に身につけていきたいですね。
書籍について
Author And Source
この問題について(テスト駆動開発(TDD)とは何か?), 我々は、より多くの情報をここで見つけました https://qiita.com/blue32a/items/608019d7fc7c65a750bc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .