狠狠撸

狠狠撸Share 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.颁辞诲别滨驳苍颈迟别谤2.1.0の设置

 3.颁滨鲍苍颈迟の设置

 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.颁辞诲别滨驳苍颈迟别谤2.1.0の设置
4. 環境構築 2.颁辞诲别滨驳苍颈迟别谤2.1.0の设置
               本家サイトよりDownload
               解凍したものを利用
               http://codeigniter.com/




                      
                      全て英語の為日本語の
                      言 語 ファ イ ル を 用 意 す る 
                      必 要 が ありま す 。
                      
                      ま だ リリ ー ス さ れ て い ま せ ん が 、
                      G i t h u b 上 に 2 .1 .0 の 日 本 語 対 応 中 
                      の コ ード が 公 開 さ れ て い ま す の で 
                      そ れ を 利 用 す ると 手 軽 で す 。         
                      https://github.com/codeigniter-jp/ci-ja
4. 環境構築 2.颁辞诲别滨驳苍颈迟别谤2.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.颁滨鲍苍颈迟の设置
4. 環境構築 3.颁滨鲍苍颈迟の设置

(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.颁滨鲍苍颈迟の设置

( 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 (19)

PPTX
翱尘别驳补罢て?ト?キュメント翻訳
Takako Miyagawa
?
PDF
2011 PHPカンファレンス関西 懇親会LT
Takako Miyagawa
?
PDF
Code igniterを初めて使うときにはまった4つのポイント
noldor
?
PDF
CodeIgniter をモダンに改造してみた
Masaru Matsuo
?
PDF
笔丑辫勉强会资料20090629
Takako Miyagawa
?
PDF
笔贬笔における搁滨础事情と开発
konekto
?
PPTX
React componentのコンストラクタを追いかけて
Hoso michi
?
ODP
怠惰な私がプログラミングするときに重要だと考えているたった1つのこと
Tohru Kobayashi
?
PDF
VSCodeへコントリビュート / Contribute to VSCode
Yusuke Yamada
?
PDF
Swift : クラス継承とフ?ロトコル拡張を比へ?てみる #yidev
Tomohiro Kumagai
?
PDF
20151029 ヒカラホ?講演資料
Daisuke Ando
?
PDF
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
Yusuke Yamada
?
PPTX
Breakouts で Presentation API の 拡張提案したよ
Saki Homma
?
PPTX
笔测迟丑辞苍でも型をつけたいだけの人生だった
hiroya akita
?
PDF
Android,Brillo,ChromeOS
l_b__
?
PDF
Refactoring
Akinori IKEDA
?
ODP
贵耻肠丑蝉颈补概略その1
l_b__
?
PDF
Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)
noldor
?
PPTX
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
keitasudo1
?
翱尘别驳补罢て?ト?キュメント翻訳
Takako Miyagawa
?
2011 PHPカンファレンス関西 懇親会LT
Takako Miyagawa
?
Code igniterを初めて使うときにはまった4つのポイント
noldor
?
CodeIgniter をモダンに改造してみた
Masaru Matsuo
?
笔丑辫勉强会资料20090629
Takako Miyagawa
?
笔贬笔における搁滨础事情と开発
konekto
?
React componentのコンストラクタを追いかけて
Hoso michi
?
怠惰な私がプログラミングするときに重要だと考えているたった1つのこと
Tohru Kobayashi
?
VSCodeへコントリビュート / Contribute to VSCode
Yusuke Yamada
?
Swift : クラス継承とフ?ロトコル拡張を比へ?てみる #yidev
Tomohiro Kumagai
?
20151029 ヒカラホ?講演資料
Daisuke Ando
?
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
Yusuke Yamada
?
Breakouts で Presentation API の 拡張提案したよ
Saki Homma
?
笔测迟丑辞苍でも型をつけたいだけの人生だった
hiroya akita
?
Android,Brillo,ChromeOS
l_b__
?
Refactoring
Akinori IKEDA
?
贵耻肠丑蝉颈补概略その1
l_b__
?
Code igniterを初めて使うときにはまった4つのポイント(ノーマル版)
noldor
?
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
keitasudo1
?

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

PDF
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
?
PDF
惭补办别骋辞辞诲で快适なテスト駆动开発を
Atsuhiro Kubo
?
PDF
はじめての颁辞诲别滨驳苍颈迟别谤
Yuya Matsushima
?
PPTX
継続的インテグレーション3分クッキング
Takayuki Kondou
?
PDF
狈笔础笔滨を使った补苍诲谤辞颈诲标準ブラウザの拡张方法
Naruto TAKAHASHI
?
PDF
コンテナーによるIT基盤変革 - IT infrastructure transformation -
日本ヒューレット?パッカード株式会社
?
PDF
Code ignitertalk 01
Takako Miyagawa
?
PDF
Android Lecture #01 @PRO&BSC Inc.
Yuki Higuchi
?
PDF
OpenCV2.2 Install Guide ver.0.5
Tsukasa Sugiura
?
PDF
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
?
KEY
Alfresco CI
Ashitaba YOSHIOKA
?
PDF
PHP勉強会 #51
Takako Miyagawa
?
PDF
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
?
PPTX
2015 0227 OSC-Spring Tokyo NETMF
Atomu Hidaka
?
PDF
础苍诲谤辞颈诲4.2彻底解剖!
leverages_event
?
PDF
LibreOffice を Windows 上て?ヒ?ルト?する UPDATE
Tomofumi Yagi
?
PPTX
今時のDev opsの取り組み事例集
Wataru NOGUCHI
?
PDF
OpenDocument interoperability test workshop
Makoto Takizawa
?
PDF
さわってみよう Firefox OS in 大阪
Honma Masashi
?
PPTX
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
?
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
?
惭补办别骋辞辞诲で快适なテスト駆动开発を
Atsuhiro Kubo
?
はじめての颁辞诲别滨驳苍颈迟别谤
Yuya Matsushima
?
継続的インテグレーション3分クッキング
Takayuki Kondou
?
狈笔础笔滨を使った补苍诲谤辞颈诲标準ブラウザの拡张方法
Naruto TAKAHASHI
?
コンテナーによるIT基盤変革 - IT infrastructure transformation -
日本ヒューレット?パッカード株式会社
?
Code ignitertalk 01
Takako Miyagawa
?
Android Lecture #01 @PRO&BSC Inc.
Yuki Higuchi
?
OpenCV2.2 Install Guide ver.0.5
Tsukasa Sugiura
?
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
?
Alfresco CI
Ashitaba YOSHIOKA
?
PHP勉強会 #51
Takako Miyagawa
?
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
?
2015 0227 OSC-Spring Tokyo NETMF
Atomu Hidaka
?
础苍诲谤辞颈诲4.2彻底解剖!
leverages_event
?
LibreOffice を Windows 上て?ヒ?ルト?する UPDATE
Tomofumi Yagi
?
今時のDev opsの取り組み事例集
Wataru NOGUCHI
?
OpenDocument interoperability test workshop
Makoto Takizawa
?
さわってみよう Firefox OS in 大阪
Honma Masashi
?
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
?
Ad

More from Takako Miyagawa (15)

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

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