テストを書くのが嫌いな君へ #m3dev

16
テストを書くのが 嫌いな君へ #m3dev Kazuhiro Sera @seratch

Upload: kazuhiro-sera

Post on 22-Jun-2015

1.898 views

Category:

Technology


0 download

DESCRIPTION

テストコード自動生成ツールに関する紹介です

TRANSCRIPT

Page 1: テストを書くのが嫌いな君へ #m3dev

テストを書くのが

嫌いな君へ

#m3dev Kazuhiro Sera @seratch

Page 2: テストを書くのが嫌いな君へ #m3dev

- テスタビリティが考慮されていないものをメンテしている(例:SerlvetFilter、生 jsp、生 PHP、CGI・・)

- ユニットテスト≠ QA、全体の工数が増えるだけ(という近視眼的な考え方)

- 書き捨てのスクリプトまで書くの?

- この辺の話題は今日はスコープ外

なぜテストを書かないのか?

Page 3: テストを書くのが嫌いな君へ #m3dev

それだけじゃない

- 心理的障壁(ぶっちゃけ面倒)、〆切

- コーディング量は、開発するコードよりテストコードの方が多くなる

- 普段からテストコードを書いていないと、いざというとき、テストを効率的に書けない

- だから書かない?

Page 4: テストを書くのが嫌いな君へ #m3dev

◯◯書くの面倒・・

- 「Java 書くの面倒・・」

“Java は半分以上 IDE に書かせる言語です(キリッ”

- 「テストコード書くの面倒・・」

“テストコードは・・・”

Page 5: テストを書くのが嫌いな君へ #m3dev

“テストコードもツールに書かせればいい”(ある程度までは)

FA

Page 6: テストを書くのが嫌いな君へ #m3dev

- 全てを書かせることはできない、あくまでひな形レベルまで

- 「何をテストしたいか」は「何をやりたいか」によって決まる、人間にしかわからない

- とはいえ、テストコードはボイラープレートの嵐、自動生成に向いている

自動化はできない

Page 7: テストを書くのが嫌いな君へ #m3dev

Eclipse プラグイン、Maven プラグイン、sh、bat スクリプトhttp://junithelper.org/

JUnit Helper (Java)

Page 8: テストを書くのが嫌いな君へ #m3dev

Eclipse プラグイン、Maven プラグインを使ったデモをします

Demo

Page 9: テストを書くのが嫌いな君へ #m3dev

- getter/setter 無視、型毎に引数宣言・パターン網羅をカスタマイズ可能

- モックを使ったひな形(Mockito、JMock、EasyMock、JMockit)

- テストを一つも書いてないメソッドを自動検出してテストを書くことを強制する

- テストが足りなかったら追記してくれる

良いところ

Page 10: テストを書くのが嫌いな君へ #m3dev

- メソッドに対してテストを書いている

→API 設計が適切ならそれ自体は有効、もちろんこれだけで十分ではない- typeという無益なテストメソッド

→テスト 0 件のクラスを JUnit が許容しないことへの対応だが、選択可能にしたい- テストメソッドの名前が独特すぎる

→細かくカスタマイズできる

- IntelliJ IDEA のプラグインがない

→そのうち作りたい・・

悪いところ

Page 11: テストを書くのが嫌いな君へ #m3dev

rspec-kickstarter (Ruby)

Page 12: テストを書くのが嫌いな君へ #m3dev

- gem install rspec-kickstarter

- rspec-kickstarter というスクリプトにパスが通ります

- rspec-kickstarter -h 参照

スクリプトつきの RubyGem です

Page 13: テストを書くのが嫌いな君へ #m3dev

実際に社内のプロジェクトに rspec-kickstarter を実行してみる・・・

Demo

Page 14: テストを書くのが嫌いな君へ #m3dev

- public なメソッドに対して一つ以上のテストを書かせる

- Rails モードで実行すると Rails の事情に合わせたテストコードが生成される(現状は controller、helper のみ)

- ERB のテンプレートを差し替え可能

良いところ

Page 15: テストを書くのが嫌いな君へ #m3dev

- ERB カスタマイズの仕方が微妙

→もう少しよい形を提供したいとは思っています、プラグイン機構とか

- Rails 連携が弱い

→プラグイン機構ができれば、もっとリッチな対応を 3rd party でつくれるはず

悪いところ

Page 16: テストを書くのが嫌いな君へ #m3dev

- 自動生成で労力が減らせます

- TODO つきのテストコードを目の前にするとちゃんと書き換えたい衝動が湧いてきて「テスト書くモード」に切り替えやすいです

- 使ってみてフィードバックがあればお気軽にどうぞ

Happy Testing!