SlideShare a Scribd company logo
1 of 35
Download to read offline
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

What's hot

2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT
Takako Miyagawa
 
Php勉強会資料20090629
Php勉強会資料20090629Php勉強会資料20090629
Php勉強会資料20090629
Takako Miyagawa
 

What's hot (20)

OmegaTでドキュメント翻訳
OmegaTでドキュメント翻訳OmegaTでドキュメント翻訳
OmegaTでドキュメント翻訳
 
2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT
 
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイントCode igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイント
 
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみたCodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
 
Php勉強会資料20090629
Php勉強会資料20090629Php勉強会資料20090629
Php勉強会資料20090629
 
PHPにおけるRIA事情と開発
PHPにおけるRIA事情と開発PHPにおけるRIA事情と開発
PHPにおけるRIA事情と開発
 
React componentのコンストラクタを追いかけて
React componentのコンストラクタを追いかけてReact componentのコンストラクタを追いかけて
React componentのコンストラクタを追いかけて
 
怠惰な私がプログラミングするときに重要だと考えているたった1つのこと
怠惰な私がプログラミングするときに重要だと考えているたった1つのこと怠惰な私がプログラミングするときに重要だと考えているたった1つのこと
怠惰な私がプログラミングするときに重要だと考えているたった1つのこと
 
VSCodeへコントリビュート / Contribute to VSCode
VSCodeへコントリビュート / Contribute to VSCodeVSCodeへコントリビュート / Contribute to VSCode
VSCodeへコントリビュート / Contribute to VSCode
 
Swift : クラス継承とプロトコル拡張を比べてみる #yidev
Swift : クラス継承とプロトコル拡張を比べてみる #yidevSwift : クラス継承とプロトコル拡張を比べてみる #yidev
Swift : クラス継承とプロトコル拡張を比べてみる #yidev
 
20151029 ヒカラボ講演資料
20151029 ヒカラボ講演資料20151029 ヒカラボ講演資料
20151029 ヒカラボ講演資料
 
Zend framework 3 と zend expressive の話
Zend framework 3 と zend expressive の話Zend framework 3 と zend expressive の話
Zend framework 3 と zend expressive の話
 
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
 
Breakouts で Presentation API の 拡張提案したよ
Breakouts でPresentation API の拡張提案したよBreakouts でPresentation API の拡張提案したよ
Breakouts で Presentation API の 拡張提案したよ
 
Pythonでも型をつけたいだけの人生だった
Pythonでも型をつけたいだけの人生だったPythonでも型をつけたいだけの人生だった
Pythonでも型をつけたいだけの人生だった
 
Android,Brillo,ChromeOS
Android,Brillo,ChromeOSAndroid,Brillo,ChromeOS
Android,Brillo,ChromeOS
 
Refactoring
RefactoringRefactoring
Refactoring
 
Fuchsia概略その1
Fuchsia概略その1Fuchsia概略その1
Fuchsia概略その1
 
Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)
Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)
Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)
 
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
 

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

まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
Atsuhiro Kubo
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
Takayuki Kondou
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
Naruto TAKAHASHI
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
 

Similar to Code igniterでテスト駆動開発 資料作成中 (20)

まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
 
コンテナーによるIT基盤変革 - IT infrastructure transformation -
コンテナーによるIT基盤変革 - IT infrastructure transformation -コンテナーによるIT基盤変革 - IT infrastructure transformation -
コンテナーによるIT基盤変革 - IT infrastructure transformation -
 
Code ignitertalk 01
Code ignitertalk 01Code ignitertalk 01
Code ignitertalk 01
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
 
OpenCV2.2 Install Guide ver.0.5
OpenCV2.2 Install Guide ver.0.5OpenCV2.2 Install Guide ver.0.5
OpenCV2.2 Install Guide ver.0.5
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
Alfresco CI
Alfresco CIAlfresco CI
Alfresco CI
 
PHP勉強会 #51
PHP勉強会 #51PHP勉強会 #51
PHP勉強会 #51
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
Android4.2徹底解剖!
Android4.2徹底解剖!Android4.2徹底解剖!
Android4.2徹底解剖!
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
 
OpenDocument interoperability test workshop
OpenDocument interoperability test workshopOpenDocument interoperability test workshop
OpenDocument interoperability test workshop
 
さわってみよう Firefox OS in 大阪
さわってみよう Firefox OS in 大阪さわってみよう Firefox OS in 大阪
さわってみよう Firefox OS in 大阪
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
 

More from Takako Miyagawa

Net commons3 開発環境
Net commons3 開発環境Net commons3 開発環境
Net commons3 開発環境
Takako Miyagawa
 
Bear.sunday meetup #2 自己紹介LT
Bear.sunday meetup #2 自己紹介LTBear.sunday meetup #2 自己紹介LT
Bear.sunday meetup #2 自己紹介LT
Takako Miyagawa
 
CodeIgniter東京勉強会 2011.05.14
CodeIgniter東京勉強会 2011.05.14CodeIgniter東京勉強会 2011.05.14
CodeIgniter東京勉強会 2011.05.14
Takako Miyagawa
 

More from Takako Miyagawa (15)

CodeIgniter4 PHPCon 2016
CodeIgniter4  PHPCon 2016CodeIgniter4  PHPCon 2016
CodeIgniter4 PHPCon 2016
 
Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料Idcfクラウド 初心者の事始め(2)資料
Idcfクラウド 初心者の事始め(2)資料
 
CodeIgniter4 (PHPカンファレンス関西2016 懇親会LT)
CodeIgniter4 (PHPカンファレンス関西2016 懇親会LT)CodeIgniter4 (PHPカンファレンス関西2016 懇親会LT)
CodeIgniter4 (PHPカンファレンス関西2016 懇親会LT)
 
Idcfクラウド 初心者の事始め
Idcfクラウド 初心者の事始めIdcfクラウド 初心者の事始め
Idcfクラウド 初心者の事始め
 
もっとドキュメントが日本語になりますように
もっとドキュメントが日本語になりますようにもっとドキュメントが日本語になりますように
もっとドキュメントが日本語になりますように
 
Fuelphp & codeigniterユーザの集い
Fuelphp & codeigniterユーザの集いFuelphp & codeigniterユーザの集い
Fuelphp & codeigniterユーザの集い
 
Net commons3 開発環境
Net commons3 開発環境Net commons3 開発環境
Net commons3 開発環境
 
最近のCodeIgniter 2014.06.19
最近のCodeIgniter 2014.06.19最近のCodeIgniter 2014.06.19
最近のCodeIgniter 2014.06.19
 
Net commons3 研究会 2014 0616
Net commons3 研究会 2014 0616Net commons3 研究会 2014 0616
Net commons3 研究会 2014 0616
 
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみましたgitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
 
Bear.sunday meetup #2 自己紹介LT
Bear.sunday meetup #2 自己紹介LTBear.sunday meetup #2 自己紹介LT
Bear.sunday meetup #2 自己紹介LT
 
phpmatsuri2013 LT大会 資料
phpmatsuri2013 LT大会 資料phpmatsuri2013 LT大会 資料
phpmatsuri2013 LT大会 資料
 
PHPMATSURI2011 LT大会
PHPMATSURI2011 LT大会PHPMATSURI2011 LT大会
PHPMATSURI2011 LT大会
 
CodeIgniter東京勉強会 2011.05.14
CodeIgniter東京勉強会 2011.05.14CodeIgniter東京勉強会 2011.05.14
CodeIgniter東京勉強会 2011.05.14
 
CodeIgniter Con Tokyo 2011 資料
CodeIgniter Con Tokyo 2011 資料CodeIgniter Con Tokyo 2011 資料
CodeIgniter Con Tokyo 2011 資料
 

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