Upgrade to Pro — share decks privately, control downloads, hide ads and more …

レガシーチームでテストを書いた話

eijit
December 17, 2018

 レガシーチームでテストを書いた話

テストを書く習慣のなかったチームでテストを書く手助けをした話

DevLove 関西「現場でレガシーコードに立ち向かっている者達の話」
https://devlove-kansai.doorkeeper.jp/events/83358
の発表資料です。

eijit

December 17, 2018
Tweet

Other Decks in Programming

Transcript

  1. 私とテスト 2014 年頃まで C/C++ でコンシューマ向けアプリのライブラリ開発 テストは CppUnit を利⽤して⼿元で実⾏ テスト対象は書き易いところだけ 2015

    年頃から JavaScript でサーバの API 開発 テストは Mocha を利⽤して⼿元と Jenkins で実⾏ テスト対象は基本的にすべてのコード 5
  2. これまでのゲートウェイの開発⼿順 ⼿順 およその時間 コードを書く 内容による コンパイル ⼗数秒から⼗数分 ファームウェア転送 1-2 分

    ゲートウェイ再起動 1 分程度 動作確認 内容による このように書いたコードのフィードバックが得られるまでとても時間が かかっていた。 8
  3. テスト駆動開発の導⼊ 「テスト駆動開発/Kent Beck」を下敷きにして下記を伝えた 最初に失敗するテストを書く テストを通す最短の実装を書く Red, Green, Refactoring のサイクルを素早く回す Fizz

    Buzz を題材にして実際にテスト駆動開発を実演して⾒せた かなり愚直にテスト駆動開発の⼿順をなぞった 題材が簡単だったので直ぐに正しい実装が解り、あまり良い題材 ではなかったかもしれない 15
  4. テスト駆動開発の実践 題材として下記の課題を⽤意しておいた。 階乗 (factorial) フィボナッチ数列 ( bonacci) 素数判定 (prime) 三⾓形の判定

    (triangle) 三辺の⻑さを与えた時に三⾓形の種類を判定する ※ 課題に使った問題を下記に置きました。 https://github.com/eijit/tdd 16
  5. 勉強会の振り返り 会議室に⼈数分の PC を⽤意できなかったため、テスト駆動開発の実践 時には、⼀部のペアは各⾃の席に戻ってコーディングを⾏った。 (Good) 疑問点をその場で聞いてくれた (Bad) 様⼦を⾒に時々巡回する必要があった (Bad)

    巡回の際に私のペアを⼀⼈で放置することになった (Bad) ⼀体感が薄れてしまった 課題を多く感じた。テスト駆動開発を体験してほしい⼈は 4 ⼈だったの で、モブプログラミングで取り組んだら良かったと今になって思う。 17