「テスト駆動開発」の紹介


テスト駆動開発
Kent Beck 著、和田 卓人 訳
オーム社
https://www.ohmsha.co.jp/book/9784274217883/

を読んでみたのでそのお話


テスト駆動開発とは...


「動作するきれいなコード」を書くための取り組み


単なる「テストファースト」ではない

「先にテストを書く」だけでは「動作するコード」にしかならない
「動作するきれいなコード」にする必要がある


テスト技法ではない

テストを通じてソースコードを改善し続けることがテスト駆動開発
要求仕様を満たしているか、パフォーマンスは十分か、セキュリティは問題ないかといったことはカバーできない


テスト駆動開発の原則

レッド(テストNG)・グリーン(テストOK)・リファクタリングを繰り返すことでソースコードを開発していく


少しずつ進める

「動作するきれいなコード」を書くステップ
・作る前に「どう動くのか」をテストで書く
・テストOKとなる「動作する」コードを書く
テストが通った後で「きれい」にする
・再度テストが通ったら、次のテストを書く


その結果として...


エンジニアがソースコードに自信を持っている状態を維持できる


カオス化するソースコード

プログラミングは「複雑で困難」なもの
何も対策しなければソースコードはだんだんとエンジニアの手に負えなくなる


ソースコードに「立ち向かう」

テストがあることでリファクタリングを安心して実施できる
→ソースコードを「動作するきれいなコード」で維持していられる


テスト駆動開発は個人スキル

チーム全体で導入しなければならない、というものではない
自分のプログラミングスキル向上のため今すぐ始められる


実際にやってみる

「付録B フィボナッチ」の内容を写経したもの
https://github.com/yoktave-yoknel/TDD_Fibonacci

VSCodeでの環境構築手順メモ
https://qiita.com/yoktave-yoknel/items/8e0e3a19a17d3dbd1b8b


振る舞い駆動開発

テスト駆動開発という名前により生じる「誤解」に対し、受け入れテストを取り込む形で発展したもの
「どう動くべきか」からスタートする


正しく伝播しなかった「テスト駆動開発」

「テストファースト」が独り歩き
リファクタリングを通じて「動作するきれいなコード」を実現するという本来の意味が置き去りに


エンジニアが技術に向き合う態度

あらゆる技術に「生まれてきた意図」がある
→背景に少しだけでも関心を持つ


もっと知るために

『健全なビジネスの継続的成長のためには健全なコードが必要だ』対談
→訳者の和田卓人さんとアジャイルコーチの家永英治さんによる対談。本書の「付録C」の書かれた狙いについて語られています。

マニアが潰したテスト駆動開発
https://twop.agile.esm.co.jp/tdd-was-broken-by-mania-cb5a6e94b021

希薄化したTDD、プロダクトの成長のために必要なものは?
https://twop.agile.esm.co.jp/what-do-we-need-for-growth-of-future-65c43b5a8fe2


おしまい