はじめに
本記事はモブプロ開発を行っているチームでやっている取り組み Advent Calendar 2022の13日目の記事です
今回は「テスト駆動開発」について紹介します。
と言いましても、テスト駆動開発の内容についてこの記事で紹介するというよりは、テスト駆動開発をどのようにチームに取り入れたか、どのような変化がチームにあったかについて主に書こうと思っております。
テスト駆動開発自体の詳しい内容はこの後紹介する書籍を読んでみてください
前回
Chapter#12 テスト書いてないだって?
じん「みなさんは今までTDDとかで開発ってしてましたか?」
アール「私はじんさんと一緒に開発してたのである程度TDDで書いてました」
ミュート「TDD????」
ベープ「TDDって何のことですか?」
じん「テスト駆動開発の略称です。最初にテストを書いて、それを通すコードを実際に書きながらシステム開発をする手法です」
アール「この開発をしてからテストが楽しいと思えるようになりましたね」
ベープ「私前職も含めて手動でテストすることはありましたが、自動テスト書いたことないですね」
ミュート「私もやったことないですね。テスト自体は経験ありますが、自信は全然ないですし、会社でテストがないプロジェクトたくさんですよね」
このときじんの脳内にはとある画像が浮かんだ
じん「いやさすがにテスト書いてないレベルはまずいです」
じん「このチームではこれからテストを書ける、テストの考え方がわかるのは大前提として、テスト駆動開発で基本的な開発を回していきます」
アール「テスト駆動開発が一番開発の楽しいところですもんね」
ミュート「なぜそんなにテストで楽しめるんだ、、、」
テスト駆動開発について
テスト駆動開発を導入するきっかけになったのは私がこの本を読んだのが始まりでした
おそらくテスト駆動開発をチームで始めようと思った方のほとんどが読んだことのあるであろう名著です
テスト駆動開発をチームで広めるためには、テスト駆動開発を実践できる人が必要だと思います。
そこで私はこの本でテスト駆動開発について学び、日々の開発をなるべくテスト駆動開発で書くようにトレーニングを積みました
そして、実際にチームに適応する際に、すべての人がこの本を学習しているわけではなく、私のチームはテストすらままならないレベルでした。
いきなりテスト駆動開発を実践で教えても考え方や流れが理解できないと思いつつ、書籍を全員が読むのを待ってられないということで以下の動画を全員で視聴する時間を作りました
この動画がかなり良くできており、書籍の大事なノウハウをまったく知らない状態からでも学ぶことができます
テスト駆動開発をチームに導入する際には最初に全員でぜひ視聴してほしいです
ここまでいったら実際にテストを書きながらテスト駆動開発について学ぶフェーズに移りました
私がいままでやってきたテスト駆動開発の経験を教えつつ、なぜテストを書くのか、テスト駆動開発にどんなメリットがあるのかを理解してもらうことを意識しました
テストはなくても開発はできます、そのようななくても何とかなるものをやらせるというのは難しいものです。
アフリカの部族に靴を売るのがとても難しいという理屈と同じです
常々なぜテストから書いたほうがいいのか、テストを書いたほうがいいのか理解してもらうように教えました
また、テスト駆動開発をやるうえでToDoリストの作成にも力をいれました (後日の記事であげます)
なるべく粒度を下げて、テストケースレベルにまで細かくしたToDoリストを作らせることで、新人が開発のゴールまでの道を逆算できるようなトレーニングを行いました
このような努力もあり、いまでは私が教えなくてもモブプログラミングでテスト駆動開発をしながら開発ができるようになりました
テスト駆動開発を行ったことで以下のメリットがありました
- テストから書くので必要最低限のコードで機能を作れる
- リファクタリングできれいなコードになる
- 目標までを逆算できるようになる
- テストを書くのが好きになった
などなど
導入する敷居は高いように見えますが、モブプログラミングでやっているチームであればできると思っておりますのでぜひ挑戦してみてください
次回
おわりに
今回も紹介程度でしたので短い記事になりました
テスト駆動開発については私が説明するより書籍を読んでいただくのが一番早いと思っています
デメリットがとても少なく、かなり気に入っている開発方法になりますので気になった方はぜひ試してみてください
モブプログラミングとかなり相性が良いですよ!