35
CodeIgniter2.1.0 ではじめるテスト駆動開発 2011.1.1 NEKOGET

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

Embed Size (px)

DESCRIPTION

まだ作成途中ですが、意見をいただきながら作った方がよさげなので、作成途中の資料を晒してしまうことにします。

Citation preview

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

C o d e I g n i t e r 2 . 1 . 0 ではじめるテスト駆動開発

2011.1.1 NEKOGET

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

目次

1. CodeIgniterについて 2. テスト駆動開発 3. ツールあれこれ 4. 環境構築 5. 実際にテストを書く 6. Jenkinsとの連携 7.まとめ

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

1. CodeIgniterについて・ CodeIgniterはオープンソースのPHPフレームワークです。 ・ Elics Lob社が中心に開発をしています。 ・ CodeIgniter2.1.0まではCodeIgniter独自ライセンスで開発されています。 ・ CodeIgniter3よりライセンスがOSLランセインスに変更になる予定です。

☆ E l i c s L o b 社  http://ellislab.com/ ☆ C o d e Ig n i t e r 本 家  http://codeigniter.com/ ☆ C o d e Ig n i t e r日 本 ユ ー ザ 会  http://codeigniter.jp/ ☆ C o d e Ig n i t e r日 本 語 化 G i t h u b   https://github.com/codeigniter-jp/ci-ja

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

1. CodeIgniterについてアプリケーションフローチャート http://codeigniter.jp/user_guide_ja/overview/appflow.html

CodeIgniter は Model-View-Controller パターンに基づいて作られています。 Application Controllerを軸にして、様々な処理が実行されます。 所感:Application Controller部分が分厚くなりがちですが、そこをどのように最適化    していくのか?を意識してコードを書いていくと気持ちよく書けます。

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

2. テスト駆動開発の効果

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

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

機 能 テ ス ト( ” F u n c t i o n a l t e s t s ” ): (システムテスト(”System tests”)とも呼ばれる)

システムを全体と見た時の一部分、つまり機能要求を実行するテスト。このテストはシステムの状態を変更するかもしれません。 プロダクトオーナテスト(”Product Owner test”): 受入テスト(”Acceptance tests”) - 技術側の人間ではないプロダクトオーナによって入出力が検証される機能テスト。

テスト駆動開発のテストはデベロッパテスト

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

2. テスト駆動開発の効果

何 のために テストが必要なのか?

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

2. テスト駆動開発の効果

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

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

2. テスト駆動開発の効果

誰 のために テストが必要なのか?

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

2. テスト駆動開発の効果

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

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

3. ツールあれこれ

1 . C o d e I g n i t e r 本 体 の U n i t t e s t C l a s s の 利 用 http://codeigniter.jp/user_guide_ja/libraries/unit_testing.html

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

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

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

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

3. ツールあれこれ

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

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

4. 環境構築

1. PHPUnitのインストール

2.CodeIgniter2.1.0の設置

3.CIUnitの設置

4.ターミナルでの実行

5.Eclipse プラグインMakeGoodのインストールと設定

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

4. 環境構築

1. PHPUnitのインストール

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

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

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

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

$ pear config-set auto_discover 1 $ pear install pear.phpunit.de/PHPUnit

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

4. 環境構築

2.CodeIgniter2.1.0の設置

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

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

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

http://codeigniter.com/

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

4. 環境構築 2.CodeIgniter2.1.0の設置

環境 : OSX + MAMP PHP5.3環境 (1) CodeIgniter2.1.0を下記に設置 /Applications/MAMP/htdocs/phpstudy/unittest/ ※Github 日本語化プロジェクトのコードを設置しました。  Gitが動かない環境でもzipファイルをダウンロードできます。 https://github.com/codeigniter-jp/ci-ja/zipball/develop http://localhost/phpstudy/unittest/ にアクセスすると、上記画面が表示されます。

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

4. 環境構築

3.CIUnitの設置

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

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

(1)CIUnitのダウンロード https://bitbucket.org/kenjis/my-ciunit/get/CI%202.0.3.zip 2.0.3用ですが、2.1.0でも問題なく動きます。 (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

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

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を削除 ※実際にmodelのテストが書かれていて、とても参考になりますが、テスト実行時にテーブルがないので、エラーが発生します。そのため削除します。

設置完了です☆

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

4. 環境構築

4.ターミナルでの実行

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

タ ー ミナ ル で サ ン プ ル テ ストを 実 行 CIUnitを設置し、正常に動作していることを確認します。 $ cd {CodeIgniter2.1.0設置フォルダ}/tests/ $ phpunit

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

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

4. 環境構築

5.Eclipse プラグイン MakeGoodのインストールと設定

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

4. 環境構築 5.MakeGoodのインストールと設定(1)Eclipse を起動し、メニューから Help → Install New Software... を選択 (2) Addボタンをクリックし、更新サイトを追加します。 Name : piece-framework Location : http://eclipse.piece-framework.com/ MakeGoodにチェックをし,Nextボタンをクリックします。 Eclipseのインストーラの指示に沿って、インストールを完了してください。

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

4. 環境構築 5.MakeGoodのインストールと設定(3) PHPの設定を行います。 メニューから、[環境設定]を選択ください。

(4) Addをクリックしてください。

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

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

(5) 実行されるPHPのパスと,php.iniのパスを登録します。 [Finish]をクリックし、PHPの設定を終了します。

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

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

(6) PHP Debugger , PHP Executable を 先ほど設定したものに設定します。 [OK]をクリックし設定を有効にします。

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

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

(7) MakeGoodの設定をします。 ファイルを保存時に実行するテストを 選択します。

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

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

テストフォルダの[追加]ボタンをクリックし、 tests/フォルダを指定し、[Apply]ボタンをクリックし、 [OK]ボタンをクリックします。

(8) ワークスペースの設定をします。 ワークスペースのフォルダを右クリックし、 表示します。

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

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

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

(9) 動作確認をします。 フォルダを右クリックし、全てのテストを実行 をクリックし、テストを実行してください。

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

4. 環境構築 5.MakeGoodのインストールと設定(10) MakeGood上でテストが実行され、 結果が見えれば設置成功です。

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

5. 実際にテストを書く

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

1. News機能を作る

2.仕様変更1

3.仕様変更2

作成中

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

6. Jenkinsとの連携

作成中

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

7. まとめ

作成中

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

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