CakeにTestがやってきた

5,492 views
5,357 views

Published on

第3回CakePHP勉強会 ライトニングトークス資料

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,492
On SlideShare
0
From Embeds
0
Number of Embeds
57
Actions
Shares
0
Downloads
25
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

CakeにTestがやってきた

  1. 1. Cake に Test がやってきた ~  Test でみんな Happy になろう ~ CakePHP 勉強会 Ⅲ 
  2. 2. <ul><li>岸田 健一郎 </li></ul><ul><li>永和システムマネジメント所属、オブジェクト倶楽部 </li></ul><ul><li>自称デザエンジニア Des ign + E ngi neer = Desingineer </li></ul><ul><li>PHP/JavaScript/ActionScript/HTML/CSS などなど </li></ul>CakePHP 勉強会 Ⅲ 
  3. 3. マイコミから絶賛発売中。 よろしくお願いします。 CakePHP 勉強会 Ⅲ 
  4. 4. <ul><li>突然ですが </li></ul><ul><li>何色が好きですか? </li></ul>CakePHP 勉強会 Ⅲ 
  5. 5. <ul><li>個人的には </li></ul><ul><li>赤 が好き </li></ul>CakePHP 勉強会 Ⅲ 
  6. 6. <ul><li>携帯電話も 赤 </li></ul>CakePHP 勉強会 Ⅲ 
  7. 7. <ul><li>財布も 赤 </li></ul>CakePHP 勉強会 Ⅲ 
  8. 8. <ul><li>車も 赤 </li></ul>CakePHP 勉強会 Ⅲ 
  9. 9. <ul><li>イチゴ が好き </li></ul>CakePHP 勉強会 Ⅲ 
  10. 10. <ul><li>サクランボ が好き </li></ul>CakePHP 勉強会 Ⅲ 
  11. 11. <ul><li>ブラウザも 赤 </li></ul>CakePHP 勉強会 Ⅲ 
  12. 12. <ul><li>テスト結果は ? </li></ul>CakePHP 勉強会 Ⅲ 
  13. 13. <ul><li>緑 に限る </li></ul>CakePHP 勉強会 Ⅲ 
  14. 14. <ul><li>Test </li></ul><ul><li>書いてますか !? </li></ul>CakePHP 勉強会 Ⅲ 
  15. 15. <ul><li>Test があれば </li></ul><ul><li>何でもできる </li></ul>CakePHP 勉強会 Ⅲ 
  16. 16. <ul><li>とまでは </li></ul><ul><li>言いません </li></ul>CakePHP 勉強会 Ⅲ 
  17. 17. <ul><li>書くと </li></ul><ul><li>幸せになれる </li></ul>CakePHP 勉強会 Ⅲ 
  18. 18. <ul><li>自分以外も </li></ul><ul><li>幸せ </li></ul>CakePHP 勉強会 Ⅲ 
  19. 19. <ul><li>Agile </li></ul><ul><li>繰り返し </li></ul><ul><li>プロトタイピング </li></ul>CakePHP 勉強会 Ⅲ 
  20. 20. CakePHP 勉強会 Ⅲ 
  21. 21. <ul><li>詳しくは </li></ul>CakePHP 勉強会 Ⅲ  和田卓人のテスト駆動開発講座
  22. 22. <ul><li>CakePHP で Test </li></ul>CakePHP 勉強会 Ⅲ 
  23. 23. <ul><li>1.1 でも </li></ul><ul><li>できたよね? </li></ul>CakePHP 勉強会 Ⅲ 
  24. 24. <ul><li>正解 </li></ul>CakePHP 勉強会 Ⅲ 
  25. 25. <ul><li>でも正直 </li></ul>CakePHP 勉強会 Ⅲ 
  26. 26. <ul><li>書き方 </li></ul><ul><li>わからず </li></ul><ul><li>orz </li></ul>CakePHP 勉強会 Ⅲ 
  27. 27. <ul><li>なんとなく </li></ul><ul><li>Simple Test </li></ul>CakePHP 勉強会 Ⅲ 
  28. 28. <ul><li>1.2 になって </li></ul>CakePHP 勉強会 Ⅲ 
  29. 29. <ul><li>cake/tests </li></ul><ul><li>同梱 </li></ul>CakePHP 勉強会 Ⅲ 
  30. 30. <ul><li>cake 本体の </li></ul><ul><li>テストコードで </li></ul>CakePHP 勉強会 Ⅲ 
  31. 31. <ul><li>理解度 </li></ul><ul><li>急上昇 </li></ul>CakePHP 勉強会 Ⅲ 
  32. 32. <ul><li>CakePHP で Test するには </li></ul>CakePHP 勉強会 Ⅲ 
  33. 33. <ul><li>Simple Test インストール </li></ul><ul><li>TestCase の記述 </li></ul><ul><li>テスト実行 </li></ul>CakePHP 勉強会 Ⅲ 
  34. 34. <ul><li>Simple Test のインストール </li></ul>CakePHP 勉強会 Ⅲ  http://simpletest.org/ ← ダウンロード
  35. 35. CakePHP 勉強会 Ⅲ  大事なこと その2 夏~秋ごろテストまとめ本が マイコミから出ます。 ?
  36. 36. <ul><li>Simple Test のインストール </li></ul>CakePHP 勉強会 Ⅲ  <ul><li>app </li></ul><ul><li>cake </li></ul><ul><li>vendors </li></ul><ul><ul><li>simpletest ここが オススメ </li></ul></ul><ul><ul><ul><li>docs </li></ul></ul></ul><ul><ul><ul><li>extensions </li></ul></ul></ul><ul><ul><ul><li>test </li></ul></ul></ul>
  37. 37. <ul><li>Test Case を書く場所 </li></ul>CakePHP 勉強会 Ⅲ  <ul><li>app </li></ul><ul><ul><li>tests </li></ul></ul><ul><ul><ul><li>behaviors </li></ul></ul></ul><ul><ul><ul><li>components </li></ul></ul></ul><ul><ul><ul><li> … .. など </li></ul></ul></ul><ul><li>cake </li></ul><ul><li>vendors </li></ul>
  38. 38. <ul><li>Test Case の記述 </li></ul>CakePHP 勉強会 Ⅲ  http://book.cakephp.org/view/160/testing  詳しくは時間がないのでコチラで・・・ 
  39. 39. <ul><li>テストデータ入れるのに </li></ul><ul><li>テスト前に </li></ul><ul><li>SQL 流してました </li></ul><ul><li>・・・ </li></ul><ul><li>そんなあなた! </li></ul>CakePHP 勉強会 Ⅲ 
  40. 40. <ul><li>Cake1.2 では </li></ul><ul><li>fixture </li></ul><ul><li>を使うと </li></ul>CakePHP 勉強会 Ⅲ 
  41. 41. <ul><li>勝手に </li></ul><ul><li>テストデータを </li></ul><ul><li>準備してくれる </li></ul>CakePHP 勉強会 Ⅲ 
  42. 42. <ul><li>test_suite_ </li></ul><ul><li>テーブル使うので </li></ul><ul><li>元データに影響なし </li></ul>CakePHP 勉強会 Ⅲ 
  43. 43. <ul><li>test_suite_ テーブルの準備 </li></ul>CakePHP 勉強会 Ⅲ  CREATE TABLE ` test_suite_posts ` ( `id` int NOT NULL auto_increment, `title` varchar(50) NOT NULL , `body` text NOT NULL , `created` datetime default NULL , `updated` datetime default NULL , PRIMARY KEY (`id`) );
  44. 44. <ul><li>fixture クラスの作成 </li></ul>CakePHP 勉強会 Ⅲ  class PostTestFixture extends CakeTestFixture { // [ 注意 ] クラスでなくモデル var $name = ‘Post’; var $import = array('model'=>‘Post'); var $records = array(array( 'id' => 1, ‘ title’ => ‘CakePHP 勉強会3に参加’ , ‘ body' => ‘’ ), );
  45. 45. <ul><li>現時点では、忘れずに・・・ </li></ul>CakePHP 勉強会 Ⅲ  class PostTestFixture extends CakeTestFixture { … .. function create() { return false; } function drop() { return false; } } Ticket があったので、修正中のようです。
  46. 46. <ul><li>その他もありましたが、 </li></ul><ul><li>rev. 7195 </li></ul><ul><li>で直ってます </li></ul>CakePHP 勉強会 Ⅲ 
  47. 47. <ul><li>fixture の使い方 </li></ul>CakePHP 勉強会 Ⅲ  class PostTest extends Post { var $useDbConfig = 'test_suite'; } class PostTestCase extends CakeTestCase { var $fixtures = array(‘post_test'); var $TestObject = null; function setUp() { $this->TestObject = new PostTest(); } function testValidate エラーなし () {
  48. 48. <ul><li>fixture の insert/truncate </li></ul>CakePHP 勉強会 Ⅲ  class PostTestCase extends CakeTestCase { function test 非公開にする () { ………… } function test 公開されている記事だけ () { ………… } テストデータ INSERT テストデータ TRUNCATE テストデータ INSERT テストデータ TRUNCATE
  49. 49. <ul><li>固定データの fixture クラス </li></ul><ul><li>これで、 roles テーブルから、 test_suite_roles テーブルにデータが全てコピーされます。 </li></ul>CakePHP 勉強会 Ⅲ  class RoleFixture extends CakeTestFixture { var $name = 'Role'; var $import = array('table'=>'roles', 'records' => true ); }
  50. 50. <ul><li>Model </li></ul><ul><li>Component </li></ul><ul><li>Helper </li></ul>CakePHP 勉強会 Ⅲ  テストしやすいところ Validation の確認 _beforeXX などオーバライドの挙動確認 独自ロジックの確認 ビジネスロジックの確認 出力されるタグの確認
  51. 51. <ul><li>Controller </li></ul>CakePHP 勉強会 Ⅲ  テストしにくいところ 何を評価しますか? set した値とか、 render した HTML とか確認 できますが。。
  52. 52. <ul><li>acl とか </li></ul><ul><li>ログインとか </li></ul><ul><li>セッションとか </li></ul>CakePHP 勉強会 Ⅲ 
  53. 53. <ul><li>依存関係が </li></ul><ul><li>多すぎて </li></ul><ul><li>大変 </li></ul>CakePHP 勉強会 Ⅲ 
  54. 54. <ul><li>action には </li></ul><ul><li>ロジックを </li></ul><ul><li>書かないのが吉 </li></ul>CakePHP 勉強会 Ⅲ 
  55. 55. <ul><li>再利用可能で </li></ul><ul><li>重要なロジックは </li></ul><ul><li>Component </li></ul>CakePHP 勉強会 Ⅲ 
  56. 56. <ul><li>ただし </li></ul><ul><li>$this->Controller </li></ul><ul><li>への依存関係は </li></ul><ul><li>極力書かない </li></ul>CakePHP 勉強会 Ⅲ 
  57. 57. <ul><li>でもやっぱり </li></ul><ul><li>Test 書きたい </li></ul>CakePHP 勉強会 Ⅲ 
  58. 58. <ul><li>Ajax </li></ul><ul><li>WebAPI </li></ul><ul><li>テストしたい </li></ul>CakePHP 勉強会 Ⅲ 
  59. 59. <ul><li>それなら </li></ul><ul><li>MockObject </li></ul><ul><li>使いましょう </li></ul>CakePHP 勉強会 Ⅲ 
  60. 60. <ul><li>MockObject の使い方 </li></ul>CakePHP 勉強会 Ⅲ  class UsersControllerTestCase extends CakeTestCase { function setUp() { Mock::generate ('LoginComponent'); $this->Login = &new MockLoginComponent(); } function startController (&$controller, $params) { $controller->Login = $this->Login; }
  61. 61. <ul><li>MockObject の使い方 </li></ul>CakePHP 勉強会 Ⅲ  class UsersControllerTestCase extends CakeTestCase { function test ログインしているユーザ名を取得 () { $this->Login->setReturnValue ( ‘ getLoginName', ‘ 岸田健一郎’ ); $result = $this->testAction( '/api/users/1/name', array('return'=>'render')); $this->assertEqual( ‘ 岸田健一郎’ , $result );
  62. 62. <ul><li>デモ </li></ul>CakePHP 勉強会 Ⅲ 
  63. 63. <ul><li>応用事例: </li></ul><ul><li>Ticket で活用 </li></ul>CakePHP 勉強会 Ⅲ 
  64. 64. <ul><li>某月某日 </li></ul><ul><li>Cake の bug を </li></ul><ul><li>発見! </li></ul>CakePHP 勉強会 Ⅲ 
  65. 65. <ul><li>英語 </li></ul><ul><li>自信なし </li></ul><ul><li>・・・ </li></ul>CakePHP 勉強会 Ⅲ 
  66. 66. <ul><li>そんな時は </li></ul><ul><li>失敗する </li></ul><ul><li>テストコード添付 </li></ul>CakePHP 勉強会 Ⅲ 
  67. 67. <ul><li>タイトル </li></ul><ul><li>「このテストが失敗するよ」 </li></ul><ul><li>※ 英語にしましょう </li></ul>CakePHP 勉強会 Ⅲ 
  68. 68. <ul><li>再現 </li></ul><ul><li>重要 </li></ul>CakePHP 勉強会 Ⅲ 
  69. 69. <ul><li>貢献できたら </li></ul><ul><li>嬉しい </li></ul>CakePHP 勉強会 Ⅲ 
  70. 70. <ul><li>自分以外も </li></ul><ul><li>幸せ </li></ul>CakePHP 勉強会 Ⅲ 
  71. 71. <ul><li>Test で </li></ul><ul><li>みんな Happy に </li></ul>CakePHP 勉強会 Ⅲ 
  72. 72. CakePHP 勉強会 Ⅲ  大事なこと その3 CakePHP 1.2 書籍の「 企画 」あり。 興味ある方、ご協力いただける方 連絡ください。 ?
  73. 73. <ul><li>ご清聴ありがとうございました </li></ul>CakePHP 勉強会 Ⅲ 

×