< Return to Video

a13.video2.blip.tv/.../CakePHP-MarkStoryWinAtLifeWithUnitTesting768.m4v

  • 0:07 - 0:08
    ナニットテストで人生に勝利する by Mark Story
  • 0:08 - 0:13
    ナニットテストは開発の䞭で倧事なプロセスです
  • 0:13 - 0:21
    ナニットテストは手動でクリックするようなテストず違い
  • 0:21 - 0:24
    自動化されたテストです
  • 0:24 - 0:27
    今日は僕がどうしおナニットテストをしおいるか
  • 0:27 - 0:31
    たた実際のテストの方法に぀いおお話ししたす
  • 0:31 - 0:35
    テストしづらい郚分をテストする方法や
  • 0:35 - 0:48
    テストを最新の状態に保぀ Continuous Integration に぀いおもお話したす
  • 0:48 - 0:52
    倧孊を出おすぐにプログラミングを始めたした
  • 0:52 - 0:55
    お金が必芁だったので笑
  • 0:55 - 1:01
    CakePHPを䜿っお2幎半になりたす
  • 1:01 - 1:07
    DebugKit や ApiGenerator などのプラグむンを䜜りたした
  • 1:07 - 1:10
    普段は FreshBooks で働いおいたす
  • 1:10 - 1:14
    オンラむン䞊で請求曞を発行するようなサヌビスで
  • 1:14 - 1:17
    そこではリヌドデベロッパをしおいたす
  • 1:17 - 1:19
    ナニットテストは僕を玠晎らしくしおくれるのでしょうか
  • 1:19 - 1:22
    激しくその通りです
  • 1:22 - 1:24
    䜕故ナニットテストをするのでしょうか
  • 1:24 - 1:37
    䜙分な時間は掛かりたすが、その他のコヌドが正しく動いおいるのを確認する為です
  • 1:37 - 1:43
    特に埌になっおから起きた問題を修正する時間を削枛するのが䞻な理由ですね
  • 1:43 - 1:47
    䜕かを倉曎した埌にそれたで動いおいた郚分が動いおいる事を確認する
  • 1:47 - 1:50
    䜕かを倉曎しお動いおいた物を壊しおしたった事はある人はどれくらい居たすか
  • 1:50 - 1:54
    (挙手倚数)
  • 1:54 - 2:07
    テストを曞けばそういう事は起きたせん
  • 2:07 - 2:11
    バグを芋぀けたらその郚分のテストを曞けば
  • 2:11 - 2:14
    同じバグが発生する事はありたせん
  • 2:14 - 2:20
    たたナニットテストは耇雑なコヌドの蚭蚈の助けにもなりたす
  • 2:20 - 2:24
    プログラムをシンプルな郚品に分割する
  • 2:24 - 2:33
    䟋えば「CMSを䜜れ」ずいう玠晎らしいチケットがあった時
  • 2:33 - 2:37
    现かいテストにブレヌクダりンしお
  • 2:37 - 2:42
    テストを䞀぀づ぀パスさせれば、䜕かが動いた事になりたす
  • 2:42 - 2:46
    たたテストは生きたドキュメントにもなりたす
  • 2:46 - 2:52
    内容を忘れおもテストを芋ればわかりたす
  • 2:52 - 3:01
    たた問題を早めに芋぀ける事もできたす
  • 3:01 - 3:08
    䜕か倉なものをコヌドに入れおしたっおもすぐにわかりたす
  • 3:08 - 3:14
    コヌドの確実性を高める事もできたす
  • 3:14 - 3:22
    ずにかく知っおいる範囲で動くようにテストを曞きたす
  • 3:22 - 3:34
    クリックしながらテストをするず3時間かけおも 自分の所では動いたず思うずしか蚀えたせん
  • 3:34 - 3:37
    でも僕らには自動化された殺人兵噚がありたす
  • 3:37 - 3:45
    自動化されたテストの利点はたさに自動化されおいる事です
  • 3:45 - 3:49
    CIもできたすし、テストを玠早く実行できたす
  • 3:49 - 3:56
    倉曎をする床に5時間かけおクリックするのではなく
  • 3:56 - 4:14
    ボタンをクリックするだけで䜕か倱敗しおいないかやきちんず動いおいるかが確認できたすね
  • 4:14 - 4:18
    テストできるものは党おテストするべきです
  • 4:18 - 4:20
    倜䞭に問題を起こしそうなコヌド
  • 4:20 - 4:24
    問題が起きる恐怖を軜枛する為にテストを曞きたしょう
  • 4:24 - 4:37
    たた金銭に関わるようなコヌドにもテストを曞けばナヌザヌやあなたが金銭を倱わないようにできたす
  • 4:37 - 4:47
    たた以前にも問題が起きた壊れやすいコヌドにもテストを曞きたしょう
  • 4:47 - 4:51
    たた手動でテストしにくいものにもテストを曞きたす
  • 4:51 - 5:06
    PDFの生成のように時間がかかる郚分にテストを曞いた事がありたす
  • 5:06 - 5:09
    たたテストには異なる皮類がありたす
  • 5:09 - 5:15
    ナニットテストず機胜テスト、結合テストです
  • 5:15 - 5:22
    ナニットテストはアプリケヌションの现かい郚分のテスト
  • 5:22 - 5:36
    オブゞェクトやメ゜ッド、関数単䜍で正しい結果を返しおいるかなどをテストしたす
  • 5:36 - 5:44
    たた倚くの堎合モックを䜿いたす これはテストしづらい郚分をテストするのにずおも䟿利です
  • 5:44 - 5:51
    テスト駆動開発をする際にもナニットテストは䟿利です
  • 5:51 - 5:57
    テスト駆動開発ではコヌドを曞く前にテストを曞きたす
  • 5:57 - 6:08
    テストを曞いお コヌドを曞いお たたテストを曞いおコヌドを曞く その繰り返しですね
  • 6:08 - 6:13
    テストが倱敗するようなコヌドを本番環境向けに曞かない
  • 6:13 - 6:17
    僕は普段、コヌドを曞いおそれからテストを曞きたす
  • 6:17 - 6:22
    そしおテストが壊れないように䜙分なコヌドを消したす
  • 6:22 - 6:36
    機胜テストは郚品が䞀緒にうたく動䜜するかをテストしたす
  • 6:36 - 6:41
    䞊䜍のオブゞェクトから郚品が正しく動いおいるかをテストする
  • 6:41 - 6:54
    䟋えばCakePHPもModelが倉曎されたら結合テストを行う
  • 6:54 - 6:56
    あなたが曞いたコヌドだけなく デヌタベヌスず通信する郚分などが正しく動いおいる事をテストする
  • 6:56 - 6:59
    機胜テストは比范的時間がかかりたす
  • 6:59 - 7:03
    倚くのリ゜ヌスやデヌタベヌスを䜿うからです
  • 7:03 - 7:07
    さらにはリモヌトのサヌビスを実行したりもしたす
  • 7:07 - 7:11
    ナニットテストは基本的に1぀のクラスのテストです
  • 7:11 - 7:14
    现かい郚品ごずに正しい動䜜をテストする
  • 7:14 - 7:18
    それをたずめおに行うのが結合テストです
  • 7:18 - 7:22
    テストをする時にはいく぀かの課題がありたす
  • 7:22 - 7:25
    ちょっず氎を飲みたす
  • 7:25 - 7:29
    話すのが速すぎるかな 倧䞈倫
  • 7:29 - 7:33
    たずはテストを曞くのに時間がかかる事
  • 7:33 - 7:47
    しかし同じバグを䜕床も修正するのはもっず時間がかかりたす
  • 7:47 - 7:49
    正しいテストを曞けば同じバグはもう起こりたせん
  • 7:49 - 7:52
    テストは問題がある事しか蚌明したせん
  • 7:52 - 7:56
    問題が無い事は蚌明したせん
  • 7:56 - 7:58
    1぀テストがあるのはバグが無いずいう意味ではなく、1぀のバグがテストされたずいう事にしかなりたせん
  • 7:58 - 8:07
    たたナニットテストはテストがある郚分の゚ラヌしか芋぀けられたせん
  • 8:07 - 8:16
    コンピュヌタヌはテストがある郚分だけテストしたす
  • 8:16 - 8:24
    なのでありえるパラメヌタ範囲などもテストを曞かないずいけたせん
  • 8:24 - 8:28
    テストの利点はなんでしょうか
  • 8:28 - 8:33
    䜙分な手間が最初にかかりたすが、問題を早く芋぀ける事ができたす
  • 8:33 - 8:42
    QAテスタヌや䞊叞がクリックしお「どうしお壊れおるんだ」ず聞かれる前に問題を芋぀けられたす
  • 8:42 - 8:45
    たたテストのプロセスを自動化する事が出来たす
  • 8:45 - 8:57
    自動化はすばらしいです フレヌムワヌクも色々な事を自動化しおくれたすが テストはもっず自動化しおくれたす
  • 8:57 - 9:02
    たたナニットテストは結合テストに発展させる事もできたす
  • 9:02 - 9:10
    セレニりムのスクリプトを曞いおコン゜ヌルから
  • 9:10 - 9:14
    ブラりザでクリックするようなテストを実行できたす
  • 9:14 - 9:18
    これはほんずに玠晎らしいです
  • 9:18 - 9:23
    決められた仕様をテストにすれば
  • 9:23 - 9:32
    テストがパスすれば仕様を満たせおいる事が確認できたす
  • 9:32 - 9:39
    以䞊でテストの玠晎らしさの賞賛は終わりです
  • 9:39 - 9:44
    次にモックオブゞェクトの話題
  • 9:44 - 9:53
    モックオブゞェクトはテストしづらい郚分をテストする際にずおも䟿利です
  • 9:53 - 10:06
    個別のテストを曞きづらい時にモックオブゞェクトを䜿えば簡単になりたす
  • 10:06 - 10:11
    オブゞェクト同士を呌び合わないようにテストさせる事ができたす
  • 10:11 - 10:17
    オブゞェクトがそれぞれ間違った方法で呌び出し合っお
  • 10:17 - 10:23
    テストが倱敗するのを防げたす
  • 10:23 - 10:27
    たたモックは実装前にオブゞェクトの振る舞いを確認する助けにもなりたす
  • 10:27 - 10:37
    䟋えば䜕かのサヌビスにPOSTしお結果を配列で返すようなクラスの堎合
  • 10:37 - 10:42
    䟋えばそのサヌビスが友達のゞョヌが曞くずしたそれがどうなるのか予枬できたせん
  • 10:42 - 10:52
    必芁な配列を返すモックがあればゞョヌの方で問題があっおも関係ない
  • 10:52 - 10:59
    ゞョヌの郚分が終ったらゞョヌがその郚分に察しおテストを曞けばよい
  • 10:59 - 11:04
    そうすれば僕はゞョヌの所で䜕をやっおいるかは知らなくおも倧䞈倫
  • 11:04 - 11:10
    モックをグロヌバル関数やグロヌバルなスコヌプで読み蟌たれるファむルに䜿えるでしょうか
  • 11:10 - 11:14
    䜿えたせん
  • 11:14 - 11:22
    モックを䜿うにはクラスになっおいお、凊理がメ゜ッドの䞭にある必芁がありたす
  • 11:22 - 11:26
    モックはどういう時に䜿うべきでしょうか
  • 11:26 - 11:29
    モックは倖郚ず通信するようなコストが高かったり 危険の倧きい時に䜿うのがベストです
  • 11:29 - 11:40
    テストを実行する床に顧客にEメヌルを送信なんお事ありえないよね笑
  • 11:40 - 11:49
    メヌル送信凊理はサヌバヌずの通信などのコストも高い
  • 11:49 - 11:53
    そういった倖郚䟝存を少なくする
  • 11:53 - 11:59
    TwitterやPaypalなどず通信する郚分にモックを䜿うのもパヌフェクトな䟋
  • 11:59 - 12:14
    Twitterが萜ちおしたうずコヌドが壊れおいないのにテストが倱敗しおしたう
  • 12:14 - 12:20
    この郚分にモックを䜿っおおけばTwitterが萜ちおも開発を継続できる
  • 12:20 - 12:26
    たた萜ちた事が無いようなサヌビスにモックを䜿っおおけば
  • 12:26 - 12:35
    そのサヌビスが萜ちおしたった時に自分のコヌドに䜕が起きるのかを知る事ができる
  • 12:35 - 12:46
    䟋えばPaypalが萜ちた時にコヌドが爆発しおしたうのか そのたた動いおしたうかは知っおおくべきだ
  • 12:46 - 12:49
    ナニットテストずモックを䜿えばこういった事態を想定できる
  • 12:49 - 12:58
    たたナニットテスト䞭で䞍必芁に倧量にディスクに曞き蟌みをしおしたう堎合もモックにできる
  • 12:58 - 13:02
    デヌタベヌスもご存知の通り遅いのでモックにできる
  • 13:02 - 13:05
    デヌタベヌスに /dev/null でも䜿っおない限りはね (笑)
  • 13:05 - 13:12
    /dev/null はWEBスケヌラブルだ (有名なゞョヌク)
  • 13:12 - 13:20
    デヌタベヌスぞの曞き蟌みは遅くおコストかかるのでモックを䜿えばたくさんのテストを実行するのに䟿利だ
  • 13:20 - 13:25
    本圓にデヌタベヌスに通信しなければいけない堎合は別だけど 倧抵の堎合はそうじゃないね
  • 13:25 - 13:39
    クラスが぀ある堎合 それぞれが正しく呌び出し合っおいる事を確認するこずになる
  • 13:39 - 13:50
    その堎合にスタブずしおモックを䜿う事ができる それぞれが期埅する動䜜をモックに実装する
  • 13:50 - 13:54
    期埅しないパラメヌタが呌び出されたらテストが倱敗するようにしおおく
  • 13:54 - 13:57
    そうやっお問題の範囲を絞っお
  • 13:57 - 14:09
    個別のコヌドが動くために必芁な郚分をスタブ化しお扱いやすくする
  • 14:09 - 14:20
    そうすれば問題を分離できる
  • 14:20 - 14:24
    䟋えばこのメ゜ッドがNullを返すず゚ラヌが起きる時に
  • 14:24 - 14:28
    ファむルがおかしい時にNullになるなんお時にモックを䜿っおテストすれば問題を分離できる
  • 14:28 - 14:33
    どうやっおモックを䜜るか
  • 14:33 - 14:40
    モックにするには䟝存関係を実行時に倉曎できる必芁がある
  • 14:40 - 14:48
    僕が䜿っおいる3぀の方法はコンストラクタ枡しずファクトリヌメ゜ッドずセッタヌメ゜ッドだね
  • 14:48 - 14:51
    それぞれの䟋ではPHPUnitのモックを䜿っおいるけど質問があれば聞いおください
  • 14:51 - 15:07
    コンストラクタ枡しはJavaなんかで叀くから䜿われおいる䟝存関係の凊理で
  • 15:07 - 15:12
    䟝存するクラスのオブゞェクトをコンストラクタで受け取るようにする方法だ
  • 15:12 - 15:21
    このCarクラスの堎合ぱンゞンずドラむバヌのオブゞェクトをコンストラクタで受け取っおいる
  • 15:21 - 15:28
    モックを䜿いたい時ぱンゞンやドラむバヌのモックオブゞェクトを倉わりに枡せばいい
  • 15:28 - 15:32
    次はファクトリヌメ゜ッド
  • 15:32 - 15:37
    ファクトリヌメ゜ッドはサブクラスでモックを返すようにオヌバヌラむドすればいい
  • 15:37 - 15:40
    このRaceCarクラスぱンゞンのオブゞェクトをgetEngineメ゜ッドから取埗する
  • 15:40 - 15:51
    モックを䜿う堎合はgetEngineメ゜ッドを別のオブゞェクトを返すようにオヌバヌラむドすればいい
  • 15:51 - 16:02
    さらに別の方法がセッタヌメ゜ッド
  • 16:02 - 16:10
    フレヌムワヌクやツヌルでよくあるようにsetやgetでオブゞェクトを操䜜する方法だ
  • 16:10 - 16:15
    これなら簡単にオブゞェクトを入れ替える事ができる
  • 16:15 - 16:21
    GiantEngineを入れ替えたければsetEngineを䜿える
  • 16:21 - 16:27
    モックはテストの目的によっおは重芁になる
  • 16:27 - 16:31
    モックやスタブで危険なオブゞェクトやメ゜ッドをテストから陀く事ができる
  • 16:31 - 16:40
    モックを䜿っおオブゞェクトが他のオブゞェクトを正しく扱っおいるかを確かめられる
  • 16:40 - 16:46
    この䟋ではgetMockメ゜ッドでモックを取埗し
  • 16:46 - 16:50
    䜕かしら危険なtypeメ゜ッドをスタブ化しおいる
  • 16:50 - 17:12
    最初はjsonのパラメヌタが枡され 次の䟋ではxmlのパラメヌタが枡されおいる事をチェックしおいる
  • 17:12 - 17:32
    RequestHandlerオブゞェクトが正しく動いおいればテストはパスするはず
  • 17:32 - 17:46
    テストの䞭でオブゞェクトを䜜る時にモックを䜜り 期埅するパラメヌタごずの結果をスタブ化する
  • 17:46 - 18:10
    これはCake2の実際のテストの䟋だけど
  • 18:10 - 18:16
    危険な凊理のスタブ化
  • 18:16 - 18:19
    ヘッダヌの送信の凊理は危険な凊理だ
  • 18:19 - 18:27
    倖郚のサヌビスに通信する凊理もそうだし
  • 18:27 - 18:36
    呌び出しの床に課金が発生するようなサヌビスをテストの床に呌び出すのはよくないやりかただ
  • 18:36 - 18:40
    そういった堎合にスタブを䜿えばいい
  • 18:40 - 18:54
    さっきのやり方ず同じでヘッダを送るメ゜ッドをスタブ化しおいる
  • 18:54 - 19:01
    statusCodeメ゜ッドが呌び出された堎合は301
  • 19:01 - 19:13
    headerが呌び出された堎合はLocationずURLの぀のパラメヌタヌが枡る事を期埅しおいる
  • 19:13 - 19:33
    どうしおスタブ化するかずいうず オブゞェクトがheader関数を呌んでしたうからだ
  • 19:33 - 19:38
    スタブ化しないで実行しおしたうずテストの床にcakephpのサむトを芋る事になっおしたう
  • 19:38 - 19:47
    モックを䜿っおテスト時に起こる良くない珟象を解決しおいる
  • 19:47 - 19:51
    コストのかかる凊理のスタブ化
  • 19:51 - 19:56
    このCampainMontiorは遅いので隠しおしたおう
  • 19:56 - 20:11
    幟぀か連絡先の情報を䜜っおおいおモックを䜜り
  • 20:11 - 20:23
    このメ゜ッドが呌ばれた時はこのデヌタが返っおくるずみなす
  • 20:23 - 20:34
    DependencyInjectionでこのクラス党䜓を眮き換える事もできるけど
  • 20:34 - 20:44
    モックを䜿っお自動的にメ゜ッドが呌ばれた時の戻り倀を蚭定しおる
  • 20:44 - 20:49
    わかるかな
  • 20:49 - 21:02
    この堎合だずonceなので2回呌び出された堎合はテストが倱敗する
  • 21:02 - 21:14
    厳密に数倀ごずの結果を定矩しおテストを倱敗させるこずもできる
  • 21:14 - 21:18
    このセクションのたずめ
  • 21:18 - 21:32
    モックはテストを玠早く実行させたり、テストの事前事埌の凊理を少なくする事ができる
  • 21:32 - 21:41
    倖郚サヌビスを呌ぶような堎合もスタブ化しおしたえば
  • 21:41 - 21:45
    本圓の意味でのナニットテストが実行できる
  • 21:45 - 21:53
    重芁なずころをテストしお䜙分なものを分離する
  • 21:53 - 22:05
    以䞊でモックの話はおわり
  • 22:05 - 22:09
    もちろんSimpleTestにもモックオブゞェクトはある
  • 22:09 - 22:14
    コアクラスのテストケヌスを芋れば倧量にモックを䜿っおいるのがわかるず思う
  • 22:14 - 22:19
    自動殺人ロボット
  • 22:19 - 22:24
    人䜓暡型でも出来る自動テストだ
  • 22:24 - 22:38
    実行されおいないテストは消しおいい
  • 22:38 - 22:43
    こういう堎合ビルドサヌバヌを建およう
  • 22:43 - 22:48
    Hudsonはずおも䜿いやすいJava補のビルドサヌバヌだ
  • 22:48 - 22:57
    たくさんのプラグむンがあっおメヌルを送ったり、Jabberにメッセヌゞを送ったりできる
  • 22:57 - 23:04
    テストがコヌドをどれだけカバヌしおいるかのカバレッゞレポヌトを出すこずもできる
  • 23:04 - 23:18
    テストを毎晩ずか毎時ずか毎日にスケゞュヌルしたり、ポストコミットのフックを蚭定もできる
  • 23:18 - 23:21
    起動したHudsonはコヌドをチェックアりトしお
  • 23:21 - 23:27
    さらにスクリプトを実行しおテストを行う
  • 23:27 - 23:31
    SvnでもGitでも䜿える
  • 23:31 - 23:35
    MercurrealやBazarも倧䞈倫 䜿わない理由はないね
  • 23:35 - 23:44
    䞀般的なのはコミットやプッシュの床にテストを実行する
  • 23:44 - 23:53
    短い間隔でゞョブを埅機させおテストする
  • 23:53 - 24:09
    開発が進んでない堎合も倜間にテストを実行する
  • 24:09 - 24:19
    サヌバヌが空いおいる時にカバレッゞレポヌトを出力する
  • 24:19 - 24:25
    Hudsonのセットアップは今芋せようず思ったけどネットワヌクがおかしいみたいで
  • 24:25 - 24:29
    倕べやったや぀をお芋せしたす
  • 24:29 - 24:40
    wgetでダりンロヌドしおjavaコマンドで実行する
  • 24:40 - 24:47
    タヌミナルの倧きさお倉えお
  • 24:47 - 24:51
    Hudsonのディレクトリを開く
  • 24:51 - 25:08
    芋えるかな
  • 25:08 - 25:14
    Hudsonは他のJavaプログラムず違っおコンテナやTomcat無しで
  • 25:14 - 25:20
    5000の䟝存関係をコンパむルしたりしなくおも
  • 25:20 - 25:24
    1ファむルをダりンロヌドしお実行できる
  • 25:24 - 25:28
    むンストヌルに䜕時間もかかっおTomcatを入れおなんお
  • 25:28 - 25:38
    事も前にあったけど
  • 25:38 - 25:44
    これでロヌカルでHudsonが動いおいる
  • 25:44 - 25:49
    localhostの8080にアクセスしお
  • 25:49 - 26:02
    おっず
  • 26:02 - 26:10
    (.comを指摘されお)みなさんのほうが賢いみたいだ
  • 26:10 - 26:15
    これが僕のマシンの䞊のHudson
  • 26:15 - 26:29
    この画面でHudsonの管理ができる
  • 26:29 - 26:34
    ビルドの履歎をプロゞェクトリストから芋たり
  • 26:34 - 26:44
    最埌にテストが倱敗したか成功したかが芋れる
  • 26:44 - 26:53
    これはプロゞェクトの䟋
  • 26:53 - 27:04
    テストのプロゞェクトを䜜っおみよう
  • 27:04 - 27:16
    フリヌスタむルプロゞェクトを遞んで
  • 27:16 - 27:34
    gitリポゞトリを䜿う
  • 27:34 - 27:49
    このブランチを䜿っお
  • 27:49 - 27:54
    手動でビルドしたり定期的にビルドしたり SCMから呌ばれたりもできる
  • 27:54 - 27:57
    実行するシェルの蚭定
  • 27:57 - 28:05
    cakeのコン゜ヌルを䜿っおテストを実行
  • 28:05 - 28:18
    コアのヘルパヌのテストを実行するようにする
  • 28:18 - 28:26
    メヌルの送信を蚭定
  • 28:26 - 28:30
    誰かメヌルを受け取りたいかい
  • 28:30 - 28:53
    誰もいない じゃあグラハムだ
  • 28:53 - 29:02
    ビルドが倱敗する床に君にメヌルを送る
  • 29:02 - 29:06
    ビルドを壊した人にメヌルを送るなんおのもあるね
  • 29:06 - 29:14
    これでプロゞェクトは蚭定できた
  • 29:14 - 29:19
    これでビルドが倱敗するずすぐに「マヌクがビルドを倱敗させた」ず呚知する事ができる
  • 29:19 - 29:32
    これで壊した人が責任をもっお盎すようになるね
  • 29:32 - 29:44
    実にすばらしい
  • 29:44 - 29:47
    ビルド䞭だね
  • 29:47 - 29:50
    ♪
  • 29:50 - 29:53
    Hudsonには耇数のプロゞェクトを䜜成できる
  • 29:53 - 30:00
    Hudsonはリポゞトリからロヌカルにコヌドを持っおきお
  • 30:00 - 30:04
    指定されたコマンドを実行する
  • 30:04 - 30:10
    cakeコマンドずか必芁なら他のコマンドも先に実行できる
  • 30:10 - 30:18
    そしお最埌のコマンドのexitステヌタスが倱敗ならビルドは倱敗した事になる
  • 30:18 - 30:24
    exitステヌタスが成功ならビルドも成功
  • 30:24 - 30:30
    コン゜ヌルのアりトプットを芋おみよう
  • 30:30 - 30:35
    githubからクロヌン䞭だね
  • 30:35 - 30:38
    時間がかかりそうだ
  • 30:38 - 30:54
    (ネットワヌクが䞍調)倱敗しそうだ
  • 30:54 - 30:58
    ビルド倱敗だね
  • 30:58 - 31:05
    1分前に倱敗 グラハムにはメヌルが届くはずだ
  • 31:05 - 31:12
    蚭定を倉曎
  • 31:12 - 31:20
    (ロヌカルのリポゞトリに倉曎)
  • 31:20 - 31:33
    これで動くかな
  • 31:33 - 31:42
    ディレクトリ名で動くらしい グラハムによるず
  • 31:42 - 31:52
    実行䞭だ
  • 31:52 - 32:04
    ネット接続が面癜い事になっおるね
  • 32:04 - 32:16
    倱敗だ
  • 32:16 - 32:26
    ネットワヌク接続があればなヌ
  • 32:26 - 32:35
    遅いな
  • 32:35 - 32:47
    やっぱり繋がっおないな
  • 32:47 - 32:53
    本来ならここにビルド成功を瀺す青いラむンがでる
  • 32:53 - 33:01
    ちゃんず動いおいればね
  • 33:01 - 33:25
    コン゜ヌルにテストの内容ず結果が衚瀺される
  • 33:25 - 33:31
    グラハム メヌルは来た
  • 33:31 - 33:40
    これで発衚は終わりです
  • 33:40 - 33:50
    質問があればどうぞ 時間は倧䞈倫
  • 33:50 - 34:02
    HudsonでSereniumは䜿えるか 䜿えるよ
  • 34:02 - 34:12
    PHPUnitからSereniumを実行しおいるかSereniumRCを䜿っおブラりザを動かしおいれば
  • 34:12 - 34:16
    ちょっず蚭定は面倒だけど
  • 34:16 - 34:25
    PHPUnitからSereniumを実行しお結果をチェックする
  • 34:25 - 34:31
    HudsonがPHPUnitを実行しおPHPUnitがSereniumを実行しお Sereniumがブラりザを実行し
  • 34:31 - 34:36
    PHPUnitがテストが倱敗したかどうかを䌝える
  • 34:36 - 34:40
    これで回答になったかな OK
  • 34:40 - 34:49
    䜕が動かないか 蚭定が面倒だけど
  • 34:49 - 34:59
    䟝存関係も倚くないし
  • 34:59 - 35:22
    Hudsonはナニットテストフレヌムワヌクには関䞎しない
  • 35:22 - 35:30
    単にコン゜ヌルを芋るのでSimpleTestでも問題ない
  • 35:30 - 35:34
    Hudsonのコン゜ヌルを芋ればわかるけど
  • 35:34 - 35:42
    䜕が実行されおどうしお倱敗したのか
  • 35:42 - 35:45
    OK
  • 35:45 - 35:50
    埌ろの人
  • 35:50 - 36:14
    ただ無理だね
  • 36:14 - 36:19
    じゃあありがずうございたした
Title:
Video Language:
English

Japanese subtitles

Revisions