組織にテストコードを書く文化を
根付かせるためにやってきたこと
2017/06/29 塚原 裕也
@Next Game Engineer Summit
塚原 裕也
(つかはら ゆうや)
株式会社グレンジ
リードエンジニア / マネージャー
2008/04
SIのベンチャーでエンジニア始める
2012/02
サイバーエージェントグループのゲーム系子会社
CyberX入社
2014/11
グレンジへ合流し、現在に至る
2011/02/01 設立
グレンジって?
※絶賛新規仕込み中
提供アプリ
ポコロンダンジョンズ
リリース

- iOS:2014年6月

- Android:2014年8月
ダウンロード数

- 1000万突破
ポコダンって?
なぞって、えい!
改めて、今日話すこと。
組織にテストコードを書く文化を
根付かせるためにやってきたこと
運用中のタイトルに導入して
カバレッジを90%以上にした話
みなさん、
テストコード書いてますか?
 
まずは・・・
・リリースして10ヶ月くらい
・テストコードは”ゼロ”
・不具合が多く不安定
・テストがないのにリファクタリングと
いう名目で実装が行われる
・”祈る”開発
 - 影響範囲が未知で自信ない
導入前の状況。
・1年間でカバレッジ90%超
 (現在のカバレッジは95%)
・生産性が上がった
・テストコードがないと不安
・”祈らない”開発
 - コードに自信が持てている
導入後の状況。
・忙しくてテストを書く時間はない
・よくわかんないけど、面倒くさそう
・テスト書く時間あったら他の機能
を実装して欲しい
越えないといけない反発。
余計に反発強め
テストコード経験なし 運用中のサービス×
他セクション向け
の取り組み。
(もちろんエンジニアにもする話)
「テスト書く時間あったら他の機能
を実装して欲しい」
・工数が余計にかかることはない
 (必要な時間という認識)
・無駄な手戻りが減り円滑に進む
スケジュール面でアピール。
・品質が見える化する
※テストを書いたら品質が上がるわ
けではなく、品質はリファクタリング
などで上がる。テストはその布石。
品質面でアピール。
・生産性があがる
 - 開発スピードが上がる
 - 仕様変更に強くなる
 - エンジニアが自信を持って開発
したコードの方が安心
もっと仕事するアピール。
エンジニア向けの
取り組み。
・理解者を増やす(根気が必要)
・「時間がない」のはテストを書かな
いから
・テストコードの工数も含めて見積
もりする(時間がないを言い訳にさせない)
・時間はあげるから書いてくれ
理解してもらう。
・推進する人を立てる
・カバレッジを見える化して煽る
  (穴埋めするのを楽しむ)
・TDDに拘らない
・新規ファイルはテストを必ず書く
 (本当にどうしても時間ないときは後から書く)
・既存ファイルは空いた時間or機
能改修する時に書く
進め方。
海外版開発チームからテストコードの
ベース部分を逆輸入。
とにかく導入する。
メンバーが合流するのを機に押し進めた。
"require-dev": {

"phpunit/phpunit": "3.7.*",

"squizlabs/php_codesniffer": "~2.3",

"sebastian/phpcpd": "~2.0",

"phpmd/phpmd": "~2.2",

"phing/phing": "~2.11"

}
使用ライブラリ。
composer.json
・Jenkinsの利用
 - Gitのpushをトリガーに実行
 - カバレッジ計算
 - コード規約チェック
 - 冗長なコード検出を行う
自動化。
カバレッジ見える化。
半年
1年
現在
・他セクションの理解を得られないと導入が進ま
ない
・とにかく書いてテストコードのメリットを体験しな
いと本当には理解してもらえない
・見える化大事
・カバレッジを増やすことにモチベーションを持てる
人を味方につけると進捗が早い
・諦めない心と強い信念が必要
・テストコードは安定化させるための一つの手段
でしかない(これだけじゃ安定しないよ)
まとめ。
ご清聴ありがとうございました。

組織にテストコードを書く文化を 根付かせるためにやってきたこと