狠狠撸
Search
Submit Search
罢诲诲ワークショップ
?
2 likes
?
762 views
Yoshihiro Furukawa
社内で开いた罢顿顿ワークショップで使用した资料です。
Read less
Read more
1 of 23
Download now
Download to read offline
More Related Content
罢诲诲ワークショップ
1.
TDDワークショップ 古川 剛啓 http://www.flickr.com/photos/utest/5609991407
2.
デバックってどうやってますか? http://www.flickr.com/photos/porsupah/2577287047
3.
バグ混入 バグ顕在化 バグ発見
バグFix Td Tfind Tfix 時間 今までのプログラミング (Debug Later Programming) バグが混入してから顕在化するまでに時間が掛かると、バグ がある場所を探すまでに時間が掛かる
4.
バグ混入 バグ顕在化 バグ発見
バグFix Td Tfind Tfix 時間 テスト駆動開発 (Test Driven Development) バグ混入から顕在化するまでの時間を短くし、 バグがある場所を探すまでの時間を短縮する
5.
プロジェクト終盤でありがちな状況 ?単体テストを省略した ?いつの間にかテストが壊れている ?テストが直ぐ壊れるのでテストする のをやめた ?テストに時間が掛かるのでテストし てない http://www.flickr.com/photos/bagger2009/3630270346
6.
テキスト
10.
http://www.flickr.com/photos/kazk/198640938 ユニットテストフレームワークを使う JUnit, Google Test,
CppUTest??? Mockフレームワークを使う jMock, GMock???
11.
と言うことで???
12.
Google Testをインストールしてみよう http://code.google.com/p/googlemock/ ? 以下のサイトからGoogle
Mockのソースを ダウンロードする(Google Testのソースも 含まれている) ? zipファイルを適当な場所に解凍する ? READMEに従って、ビルド&インストール
14.
テストメソッドを書く テストをPassする最低限 のコードを実装する リファクタリング Red ー
Green ー リファクタリング サイクル
15.
例:FizzBuzz問題を考える FizzBuzzクラスのfizzBuzzメソッド ? 引数が3の倍数の時、”Fizz”を返す ? 引数が5の倍数の時、”Buzz”を返す ?
引数が3と5の公倍数の時、”FizzBuzz”を返す ? それ以外の時、引数の整数を文字列にして返す
16.
例:FizzBuzz問題を考える Step 1 テストメソッド 3の時、”Fizz”が返される事を確認する std::string judgeFizzBuzz(
int i ) { return “Fizz”; } TEST_F(fizzBuzzTest, returnFizzWhenNumberIsThree_3) { EXPECT_EQ("Fizz", sut_->judgeFizzBuzz(3)); }
17.
例:FizzBuzz問題を考える Step 2 テストメソッド 5の時、”Buzz”が返される事を確認する std::string judgeFizzBuzz(
int i ) { if( i == 3 ) return “Fizz”; if( i == 5 ) return “Buzz”; } TEST_F(fizzBuzzTest, returnBuzzWhenNumberIsFive_5) { EXPECT_EQ("Buzz", sut_->judgeFizzBuzz(5)); }
18.
例:FizzBuzz問題を考える Step 3 テストメソッド 3の倍数の時、”Fizz”が返される事を確認する std::string judgeFizzBuzz(
int i ) { if( i % 3 == 0 ) return “Fizz”; if( i == 5 ) return “Buzz”; } TEST_F(fizzBuzzTest, returnFuzzWhenNumberIsSix_6) { EXPECT_EQ("Fizz", sut_->judgeFizzBuzz(6)); }
19.
例:FizzBuzz問題を考える Step 4 リファクタリング(引数名の変更) std::string judgeFizzBuzz(
int number ) { if( number % 3 == 0) return “Fizz”; if( number == 5 ) return “Buzz”; }
20.
例:FizzBuzz問題を考える Step n (完成) std::string
judgeFizzBuzz( int number ) { std::stringstream returningString( "" ); if( number < 0 ) { std::string exceptionMessage( "Number is minus." ); throw exceptionMessage; } else if( number == 0 ) return ""; else if( number % 15 == 0 ) return "FizzBuzz"; else if( number % 3 == 0 ) return "Fizz"; else if( number % 5 == 0 ) return "Buzz"; else { returningString << number; return returningString.str(); } }
21.
TDDの利点 ? テストカバレッジが向上する ? テスタビリティが向上する ?
メソッドや構造をシンプルに保つことが出来る ? 書いたコードに自信が持てる ? テストメソッドを読めばメソッドの使い方が分かる ? その他 Titter #TDDやっててよかったのまとめ http://togetter.com/li/258537 等
22.
継続的にTDDをやるための材料 ? 単体テストは設計(実装)の一部だと理解する ? 単体テストフレームワークを使用する ?
テストコードも構成管理する ? テストカバレッジを「Doneの定義」に含める ? CI (Continuous Integration)サーバを導入する http://www.flickr.com/photos/roboppy/312248677
23.
最後に ? TDD は簡単なプラクティスではありません。 ?
しかし、コード品質は確実に向上します。 ? 一度や二度の失敗で諦めずに取り組みましょう。 継続は、力なり http://www.flickr.com/photos/picsbyperi/7457301384
Download