42
Sue445 Style TD D @sue445 2012/09/08 Android テテテテテテ

Sue445 Style TDD #atest_hack

Embed Size (px)

DESCRIPTION

Androidテスト勉強会( http://www.zusaar.com/event/356157 )の資料です

Citation preview

Page 1: Sue445 Style TDD #atest_hack

Sue445 Style TDD

@sue445

2012/09/08 Androidテスト勉強会

Page 2: Sue445 Style TDD #atest_hack

Agenda

• 宣伝とか• 「テスト」について• TDDについて

• おまけ

Page 3: Sue445 Style TDD #atest_hack

お前誰よ?

末吉剛 (@sue445)

元 SI(Java), 今ドリコム (Rails)

クラスタ

• Google App Engine

• TDD

• Agile渋谷

• 渋谷 .rb

• ニチアサ・ニチヨル・オリーブ実況

Page 4: Sue445 Style TDD #atest_hack

あずにゃんペロペロ〜

http://azusaar.appspot.com/

Page 5: Sue445 Style TDD #atest_hack

第 2期開始!

http://azusaar.appspot.com/

Page 6: Sue445 Style TDD #atest_hack

黄色あざとい

Page 7: Sue445 Style TDD #atest_hack

あざといは正義

Page 8: Sue445 Style TDD #atest_hack

宣伝

Page 9: Sue445 Style TDD #atest_hack

TDD Advent Calendar jp: 2011

https://gihyo.jp/dp/sp/advent2011/G11C28

で epubが無料配信中!

Page 10: Sue445 Style TDD #atest_hack

TDD Advent Calendar jp: 2011

僕の TDD動画が収録されているため 145MBwww

Page 11: Sue445 Style TDD #atest_hack

Androidでのテストについて

Page 12: Sue445 Style TDD #atest_hack

Androidでのテストについて

@shuji_w6eさんが執筆中の「 JUnit実践入門(仮)」に全部書いてあるので割愛(今秋発売予定)

Page 13: Sue445 Style TDD #atest_hack

ここから本編

Page 14: Sue445 Style TDD #atest_hack

「テスト」について

「テスト」と一言で言っても意味が広いので整理してみる

Page 15: Sue445 Style TDD #atest_hack

「テスト」について

開発促進 (TDD)

開発者

Developer Tesing

品質

QA Tesingセキュリティ、バグとか

顧客

Customer Tesing

機能、進捗管理

Page 16: Sue445 Style TDD #atest_hack

「テスト」について

開発者

Developer Tesing

品質

QA Tesing

顧客

Customer Tesing全部大事!

Page 17: Sue445 Style TDD #atest_hack

TDDについて

Page 18: Sue445 Style TDD #atest_hack

TDDについて

Fateは文学CLANNADは人生Railsは哲学

TDDは設計

TDDは設計

Page 19: Sue445 Style TDD #atest_hack

TDDって何?

TDD = Test Driven Development

一言で言えば、テストコードとプロダクトコードをほぼ同時進行で書くこと

Page 20: Sue445 Style TDD #atest_hack

とある TDDプログラマの日常

1. これから実装しようとする機能のテストを書く

2. テストを動かして Redになるのを確認す3. プロダクトコードを書く4. テストを動かして Greenになるのを確認する

5. テストが動くままでコードをきれいにする(Refactoring)

6. 1に戻る

Page 21: Sue445 Style TDD #atest_hack

TDDと黄金の回転

Red Green

Reafactring

落ちているテストを通す

テストが通るままでコードをキレイにす

新しいテストを書く

Page 22: Sue445 Style TDD #atest_hack

Robert C. Martin 曰く (TDD三原則 )

• 失敗する単体テストのコードを書く前に、製品のコードを書いてはならない

• コンパイルが通り、適切に失敗する単体テストができるまでは、次の単体テストを書いてはならない

• 現在失敗している単体テストが通るまで、次の製品コードを書いてはならない

Page 23: Sue445 Style TDD #atest_hack

テストファーストの重要性

• テストを書くには何が必要?o 入力(引数)o 出力(戻り値、画面出力)o クラスやメソッドの役割、パターン分け

• これって設計じゃね?o 作りたいものが明確になっていないと何も作れないo 先にテストを書くことであやふやな仕様が浮き彫りになる

• Redになるテストが先にあることで、 Greenになった時に自分が考えた通り実装できたことが実感できる

Page 24: Sue445 Style TDD #atest_hack

TDDをする一般的な理由

• 健康のためo 変化に対応できるのは健康体のコードo 変化に対応できるのは健康体のチーム

• 素早くフィードバックを得るためo 自分が書いたコードが動くかどうかをすぐに確認できる

• 不安をテストにすることで精神的な安定を得る

• 工数は 2割増しの代わりにバグが半分になるというデータも出ているo t_wadaさんのスライド参照 http://www.slideshare.net/t_wada/t

ddbc-fukuoka-day1/64

Page 25: Sue445 Style TDD #atest_hack

僕が TDDをする理由

自分が楽をするため

Page 26: Sue445 Style TDD #atest_hack

働きたくないでござる

Page 27: Sue445 Style TDD #atest_hack

僕が TDDをする理由

• 自分が楽をするためo ブラウザリロードするよりコマンド叩く方が楽o テストしやすいコードは自然に DRYとか SRPもできてくるo テストがあると恐れずにリファクタリングができる

• とりあえず動かせるo コードは動かしてなんぼ

• 結局のところ先に苦労するか後に苦労するかの違いo ただ、バグは早い段階で見つけて修正した方が楽o 開発中<結合テスト中< QA<リリース後

Page 28: Sue445 Style TDD #atest_hack

僕が TDDをする理由

• テストは何かあった時の命綱o 何かあった時に命綱を編んでいては手遅れ

• 最初にテストを書くのは確かにきついo TDDはスキルなので必ず身につくo 2〜 3ヶ月もすれば慣れるo 量は質に転嫁する

Page 29: Sue445 Style TDD #atest_hack

とにかくやれ

Page 30: Sue445 Style TDD #atest_hack

TDDでよくある誤解

• TDDをやればバグがなくなる?o そんなわけない

• じゃあ TDDは意味が無い?o TDDでバグが完全になくなるわけじゃないけど、意図しないバグをほとんどつぶせる TDDをしない理由はない

• カバレッジは 100%じゃないとダメ?o あくまでテストが薄いところを見つける目安o どうして数値が低いかは確認しておくのは重要

Javaだと privateコンストラクタや catheスコープとかo 数字を上げることが目的になってはダメ

偉い人にはアピールしやすいけどネ!w

Page 31: Sue445 Style TDD #atest_hack

参考) AZusaar!(サーバ側 ) のレポート

Line(行の網羅率) : 85%Branch(分岐の網羅率) : 91%

Page 32: Sue445 Style TDD #atest_hack

TDDを始めたことによる弊害

• TDD≠サービスの品質だと分かってはいても、テストがたくさんあると安心するo 安心が過信にならないように気をつけよう

• TDDを始めて 2年近くなので、呼吸をするのと同じ感覚でテストを書いているo あまり開発期間がないとは分かっていつつもテストをたくさん書いてしまう

o 全てのコードにテストを書かないと不安で仕方がないo 既に病気w

Page 33: Sue445 Style TDD #atest_hack

テストを書くことを強いられているんだ!

Page 34: Sue445 Style TDD #atest_hack

グリーンバンド

• テストを書くのが辛くなった時にこれを見 て自分を戒めているらしい (by Robert C. M

artin)

• TDD BootCampの受講証・卒業証として配られることもある

Page 35: Sue445 Style TDD #atest_hack

act_as_professional

プロとして自分のコードに責任を持つためにテストを書くテストを書くのはプロとしての嗜み!

Page 36: Sue445 Style TDD #atest_hack

TDDをやりたくなったら

TDD本の定番。「ほんたった」でレッツ写経!

Page 37: Sue445 Style TDD #atest_hack

TDDをやりたくなったら

jsならこっちで始めるのもあり。モックの使い方が詳しい

Page 38: Sue445 Style TDD #atest_hack

TDDをやりたくなったら

• TDD BootCampo 終日ワークショップ(だいたい講演 +ペアプロ)o #tddbc を定点観測しておく

• TDDBC wikio http://devtesting.jp/tddbc/

• メーリングリストo http://groups.google.com/group/tddbc

• 手っ取り早く調べるなら AZusaar!がいいよ(ステマ)o http://azusaar.appspot.com/?q=tdd

Page 39: Sue445 Style TDD #atest_hack

おまけ

Page 40: Sue445 Style TDD #atest_hack

おまけ

Page 41: Sue445 Style TDD #atest_hack

おまけ

覚えてないんで作ったhttps://github.com/sue445/dio_tests

Page 42: Sue445 Style TDD #atest_hack

Have a nice Test !