SlideShare a Scribd company logo
1 of 8
テストコードをちゃんとした話
中村剛
09/01 2015
アジェンダ
①なぜテストコードが書けていなかったのか反省と分析
②現状を踏まえどうやって変えていったか
③まとめ
①:忙しさという名の響きに負けた
全くのゼロからのスタートアップでやるべき事が溢れ、後
回しになり結局、十分な時間が取れなかった
フレームワークの比較見当、コーディング規約、テスト方
針、すべてが後手になり統一意識が取れず、各々が考え
る実装でくみ上げられていった。
・同じようなメソッドが無駄に増える
・デグレが多発
・単純な凡ミスが増加
・ブラウザので手動テスト頼み、コストがドンドン膨らむ
この時テストコードの存在すらないので当然カバレッジ0%
よくあるダメなパターン
②:決めを作ってとにかく頑張る
フレームワークの特性に合わせてある程度のコーディン
グ規約を決めた。
頑張ってリファクタした。
Jenkinsでユニットテストを定期的に実施するようにした
Jenkinsでテストの結果、カバレッジを視覚化した
Githubに移行してレビュー行程を導入した
②:頑張った結果新たな問題も
ビジネスサイドからすると、エンジニアは頑張ってコード書
いてるけど、別に新機能や改善されてる機能のリリースが
少ないという不満
抱えている問題、先送りすればするほど傷が深くなるので
今その問題に対応してる為、新機能開発が遅れている旨
を説明
といってもリファクタ+テストコードの実装だけでずっと人
員を避けないので、新規機能も実装+ボーイスカウトポリ
シー(通りかかった道のゴミを拾うポリシー)で実装を進め
た
大きな声で言えないけど軽く無視してやり続けた。
(時として必要)
100%のカバレッジは果てしなく遠いゴールなので70〜
80%した。Webサービスとして適正値と判断
③:まとめ
・いくら時間が無くとも頑張りどころはあって、ココで踏ん
張りきれずに妥協すると向こう2年をこの問題に悩まされ
ると考えて頑張る
・色々考えて決めたら、途中問題が出てきても頑張りきる
ただし、結果間違った決めだった可能性もあるので時に
真摯に振返る
・自動化できる部分やツールで軽減できる事、定量的に
見える化は積極的に活用する

More Related Content

Similar to ユニットテストをちゃんとした話

テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2Masashi Shibata
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~Tomomi Kajita
 
テスト駆動開発入門
テスト駆動開発入門テスト駆動開発入門
テスト駆動開発入門Shuji Watanabe
 
nseg第5回勉強会
nseg第5回勉強会nseg第5回勉強会
nseg第5回勉強会ko ty
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進めDai FUJIHARA
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進めRakuten Group, Inc.
 
アプリケーション開発目線から考える テストの書き方について
アプリケーション開発目線から考える テストの書き方についてアプリケーション開発目線から考える テストの書き方について
アプリケーション開発目線から考える テストの書き方についてbitbank, Inc. Tokyo, Japan
 
テストコード入門
テストコード入門テストコード入門
テストコード入門小川 昌吾
 
Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例健一 辰濱
 
第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナー第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナーTomoyuki Sato
 
co-meeting_meetup_vol1_利用事例紹介(newデイシス)
co-meeting_meetup_vol1_利用事例紹介(newデイシス)co-meeting_meetup_vol1_利用事例紹介(newデイシス)
co-meeting_meetup_vol1_利用事例紹介(newデイシス)Satoshi Furuichi
 
Dev Love Lt 20090622(佐々木)
Dev Love Lt 20090622(佐々木)Dev Love Lt 20090622(佐々木)
Dev Love Lt 20090622(佐々木)DevLOVE
 
開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについてTakaaki Kasai
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTakuto Wada
 
プログラミングを早くする方法
プログラミングを早くする方法プログラミングを早くする方法
プログラミングを早くする方法kazukiTakahashi18
 
20130603 aspnet勉強会 実践的debugging
20130603 aspnet勉強会 実践的debugging20130603 aspnet勉強会 実践的debugging
20130603 aspnet勉強会 実践的debuggingkumake
 
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめhakoika-itwg
 

Similar to ユニットテストをちゃんとした話 (20)

テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
 
テスト駆動開発入門
テスト駆動開発入門テスト駆動開発入門
テスト駆動開発入門
 
nseg第5回勉強会
nseg第5回勉強会nseg第5回勉強会
nseg第5回勉強会
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
 
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
 
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
 
アプリケーション開発目線から考える テストの書き方について
アプリケーション開発目線から考える テストの書き方についてアプリケーション開発目線から考える テストの書き方について
アプリケーション開発目線から考える テストの書き方について
 
テストコード入門
テストコード入門テストコード入門
テストコード入門
 
Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例
 
私とインクス
私とインクス私とインクス
私とインクス
 
第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナー第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナー
 
co-meeting_meetup_vol1_利用事例紹介(newデイシス)
co-meeting_meetup_vol1_利用事例紹介(newデイシス)co-meeting_meetup_vol1_利用事例紹介(newデイシス)
co-meeting_meetup_vol1_利用事例紹介(newデイシス)
 
Dev Love Lt 20090622(佐々木)
Dev Love Lt 20090622(佐々木)Dev Love Lt 20090622(佐々木)
Dev Love Lt 20090622(佐々木)
 
開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
 
プログラミングを早くする方法
プログラミングを早くする方法プログラミングを早くする方法
プログラミングを早くする方法
 
Software testing
Software testingSoftware testing
Software testing
 
20130603 aspnet勉強会 実践的debugging
20130603 aspnet勉強会 実践的debugging20130603 aspnet勉強会 実践的debugging
20130603 aspnet勉強会 実践的debugging
 
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
 

ユニットテストをちゃんとした話