SlideShare a Scribd company logo
C o d e Ig n it e r 2 .1 .0
    ではじめるテスト駆動開発


                       2011.1.1 NEKOGET
目次

1. CodeIgniterについて
2. テス ト駆動開発
3. ツールあれこれ
4. 環境構築
5. 実際にテス    トを書く
6. Jenkinsとの連携
7.まとめ
1. CodeIgniterについて
・CodeIgniterはオープンソースのPHPフレームワークです。
・Elics Lob社が中心に開発をしています。
・CodeIgniter2.1.0まではCodeIgniter独自ライセンスで開発されています。
・CodeIgniter3よりライセンスがOSLランセインスに変更になる予定です。
                             ☆ E lics Lo b 社
                              http://ellislab.com/


                             ☆ C o d e Ig n it e r 本 家
                              http://codeigniter.com/


                             ☆ C o d e I g n i t e r日 本 ユ ー ザ 会
                              http://codeigniter.jp/


                             ☆ C o d e I g n i t e r日 本 語 化 G i t h u b
                               https://github.com/codeigniter-jp/ci-ja
1. CodeIgniterについて
 アプリケーションフローチャート
 http://codeigniter.jp/user_guide_ja/overview/appflow.html




CodeIgniter は Model-View-Controller パターンに基づいて作られています。


Application Controllerを軸にして、様々な処理が実行されます。


所感 Application Controller部分が分厚く
  :                            なりがちですが、そこをどのように最適化
   していくのか?を意識してコードを書いていく          と気持ちよく書けます。
2. テスト駆動開発の効果

テスト駆動開発のテストはデベロッパテスト
 デ ベ ロ ッ パ テ ス ト ” D e v e lo p e r t e s t s ” )
                (                               :
 ユニットテスト
       (”Unit tests”) 分離され、
                     -    アトミックで、無害なもの。
                                      これはxUnitによって実行されます。

 結 合 テ ス ト ” In t e g r a t io n t e s t s ” )
          (                                  :
 システムの状態を変更する可能性がある分離されたテスト。すなわちデータベースに保存したり、  ファイル
 に出力したりするもの。結合テストは機能要件をそのまま表すものではありません。
                                      これはxUnitで書く と
                                                  こ
 もできます。検証するのは対象となるコードと、サードパーティーのツールや自分たちが書いたコードの別
 レイヤとの結合です。別のレイヤというのはつまり、ビジネスロジックレイヤがデータアクセスレイヤを要求
 するといったものです。

 機 能 テ ス ト ” F u n c t io n a l t e s t s ” )
          (                                 :
(システムテスト
       (”System tests”)
                      とも呼ばれる)
システムを全体と見た時の一部分、       つまり機能要求を実行するテスト。
                                      このテストはシステムの状態を変更す
 るかもしれません。
 プロダクトオーナテスト
           (”Product Owner test”)
                                :
 受入テスト
     (”Acceptance tests”) 技術側の人間ではないプロダクトオーナによって入出力が検証され
                         -
 る機能テスト。
2. テスト駆動開発の効果




何のために
テストが必要なのか?
2. テスト駆動開発の効果




仕様       変 更に
心 が折 な 為 必要
    れいに
TDDを身につける上で、目指すべきゴールは命綱としてテストコードを育てるという事
2. テスト駆動開発の効果




誰のために
テストが必要なのか?
2. テスト駆動開発の効果




コードを 書く
自分自身の為に必要
納期直前の仕様変更/変更した一部のコードの為に全ての機能を手作業で確認するの?
3. ツールあれこれ


     Unit Testを実行する為のツール。

 1 . C o d e Ig n it e r 本 体 の U n it t e s t C la s s の 利 用
 http://codeigniter.jp/user_guide_ja/libraries/unit_testing.html


 2 . S im p le T e s t の 利 用
 http://www.simpletest.org/
 http://mistymagich.wordpress.com/2011/10/24/codeigniter-simpletest/


 3 . P H P U n it の 利 用
 http://www.phpunit.de/manual/current/ja/
 http://www.knollet.com/foostack/
 CodeIgniterは疎結合ではないため、       CIUnitというライブラリを利用してPHPUnitが実行
 できる環境を整えます。
3. ツールあれこれ




 3   .   P   H   P   U   n   i t    の    利   用
                                   を中心にこの後の話を続けます。
4. 環境構築


 1. PHPUnitのインストール

 2.CodeIgniter2.1.0の設置

 3.CIUnitの設置

 4.ターミナルでの実行

 5.Eclipse プラグインMakeGoodのインストールと設定
4. 環境構築




  1. PHPUnitのインストール
4. 環境構築 1. PHPUnitのインストール

 P H P u n itを                 イ ン ス ト ー                    ル し ま            す 。

 

 h t t p : / / w w w . p h p u n i t . d e / m a n u a l / 3 . 6 / ja / i n s t a l l a t i o n . h t m l 
 ※環境に合わせてインス                トールを実行する必要があ                    ります。      
 
 




 $ pear config-set auto_discover 1
 $ pear install pear.phpunit.de/PHPUnit
4. 環境構築




  2.CodeIgniter2.1.0の設置
4. 環境構築 2.CodeIgniter2.1.0の設置
               本家サイトよりDownload
               解凍したものを利用
               http://codeigniter.com/




                      
                      全て英語の為日本語の
                      言 語 ファ イ ル を 用 意 す る 
                      必 要 が ありま す 。
                      
                      ま だ リリ ー ス さ れ て い ま せ ん が 、
                      G i t h u b 上 に 2 .1 .0 の 日 本 語 対 応 中 
                      の コ ード が 公 開 さ れ て い ま す の で 
                      そ れ を 利 用 す ると 手 軽 で す 。         
                      https://github.com/codeigniter-jp/ci-ja
4. 環境構築 2.CodeIgniter2.1.0の設置




 環境 : OSX + MAMP PHP5.3環境

 (1) CodeIgniter2.1.0を下記に設置
 /Applications/MAMP/htdocs/phpstudy/unittest/

 ※Github 日本語化プロジェ トのコードを設置しました。
                    ク
  G 動 な 環 で zip ァ ル ダ ン ー で ま 。ttp ith b m d n
   itが か い 境 も フ イ を ウ ロ ド き す h s://g u .co /co eig iter-jp/ci-ja/zip all/d elo
                                                                      b ev p

 http://localhost/phpstudy/unittest/
 にアクセスすると、       上記画面が表示されます。
4. 環境構築




          3.CIUnitの設置
4. 環境構築 3.CIUnitの設置

(1)CIUnitのダウンロード
h s://b u
   ttp itb cket.org jis/m n et/CI% 0 .0 .zip
                   /ken y-ciu it/g 2 2 .3 
2 .3 でが .1 で問な動ま。
  .0 用す、.0 も題くきす
         2               

(2)Downdoadしたファイルを解凍

(3)
解凍したフォルダに移動
    $cd cd { 解凍してできたフ        ォルダ名}/tools/
    $sh install.sh /Applications/MAMP/htdocs/phpstudy/unittest/ root root localhost
    /Applications/MAMP/htdocs/phpstudy/unittest/application/config/testing/databas
    e.php created
4. 環境構築 3.CIUnitの設置

( 4 ) ( 3 ) の i n s t a l l . s h で 設 置 、作 成 さ れ た フ ァ イ ル を 確 認

{CodeIgniter2.1.0設置フォルダ}/application/config/testing/database.php
{CodeIgniter2.1.0設置フォルダ}/application/third_party/CIUnit
{CodeIgniter2.1.0設置フォルダ}/tests

{CodeIgniter2.1.0設置フォルダ}/tests/models/PhoneCarrierModelTest.phpを削除
※ 際 md lの ス が か て て て 参 に りす 、ス 実 時 テ ブ が い でエ ー 発 し すそ た 削 し す
 実 に o e テ ト 書 れ い 、 も 考 なま がテ ト 行 に ー ル な の 、ラ が 生 ま 。の め 除 ま 。
                    と




                                                   設置完了です☆
4. 環境構築




    4.ターミナルでの実行
4. 環境構築 4.ターミナルでの実行

タ ー ミ ナ ル で サ ン プ ル テ スト を 実 行 
CIUnitを設置し、    正常に動作していることを確認します。     

$
cd
{CodeIgniter2.1.0設置フォルダ}/tests/
$
phpunit
4. 環境構築




5.Eclipse プラグイン
MakeGoodのインストールと設定
4. 環境構築 5.MakeGoodのインストールと設定
(1)Eclipse を起動し、
               メニューから Help → Install New Software... を選択
(2) Addボタンをクリック 更新サイトを追加します。
                 し、

Name : piece-framework
Location : http://eclipse.piece-framework.com/

MakeGoodにチェックをし,Nextボタンをクリックします。
Eclipseのインストーラの指示に沿って、 インス トールを完了してください。
4. 環境構築 5.MakeGoodのインストールと設定
(3) PHPの設定を行います。
メニューから、   [環境設定]を選択ください。




                           (4) Addをクリックしてください。
4. 環境構築 5.MakeGoodのインストールと設定




        (5) 実行されるPHPのパスと,php.iniのパスを登録します。
        [Finish]をクリックし、PHPの設定を終了します。
4. 環境構築 5.MakeGoodのインストールと設定




               (6) PHP Debugger , PHP Executable を
               先ほど設定したものに設定します。
               [OK]をクリックし設定を有効にします。
4. 環境構築 5.MakeGoodのインストールと設定



               (7) MakeGoodの設定をします。
               ファイルを保存時に実行するテストを
               選択します。
4. 環境構築 5.MakeGoodのインストールと設定
                  (8) ワークスペースの設定をします。
                  ワークスペースのフォルダを右ク  リックし、
                  表示します。




                    設定する箇所は2カ所です。       
                    PHPUnitを選択し、 [検索]ボタンを
                    クリック tests/phpunit.xmlを選
                         し、
                    択します。  




          テス  トフォルダの[追加]ボタンをクリックし、   
          tests/フォルダを指定し、[Apply]ボタンをクリックし、
          [OK]ボタンをクリック します。
4. 環境構築 5.MakeGoodのインストールと設定




              (9) 動作確認をします。
              フォルダを右クリック 全てのテストを実行
                          し、
              をクリックし、 テストを実行してください。
4. 環境構築 5.MakeGoodのインストールと設定
               (10) MakeGood上でテストが実行され、
               結果が見えれば設置成功です。
5. 実際にテストを書く

 チュートリアルを元にテストを書いていきます。

 1.
News機能を作る

 2.仕様変更1


 3.仕様変更2


                 作成中
6. Jenkinsとの連携




             作成中
7. まとめ




         作成中
0. 参考資料
 makegood
 http://redmine.piece-framework.com/projects/makegood/wiki/A_continuous_test_runner_for_Eclipse_PDT

More Related Content

Code igniterでテスト駆動開発 資料作成中