36
Copyright 2010 Piece Project, All rights reserved. © - 1 - Piece Project 久保敦啓 http://twitter.com/iteman 松藤秀治 http://twitter.com/matsu_hide Eclipse PDT + MakeGood によるPHPコードのテスト OSC 2010 Kansai@Kyoto (2010/7/10)

Eclipse PDT + MakeGoodによるPHPコードのテスト

Embed Size (px)

Citation preview

Page 1: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 1 -

Piece Project

久保敦啓 http://twitter.com/iteman 松藤秀治 http://twitter.com/matsu_hide

Eclipse PDT + MakeGoodによるPHPコードのテスト

OSC 2010 Kansai@Kyoto (2010/7/10)

Page 2: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 2 -

自己紹介

まっつん

松藤 秀治 (まつふじ ひではる)

Piece Project

Eclipseプラグイン

まっつんチャレンジ (ITEMAN Blog)

Page 3: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 3 -

アジェンダ

1. Piece Frameworkの活動

2. テスト駆動開発

3. MakeGoodのご紹介

4. IDEを使ったテスト

5. MakeGoodのデモ

Page 4: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 4 -

Piece Framework とは?

PHPのアプリケーションフレームワーク

PHPの世界にジェネレーティブプログラミング、DSL, 言語ワークベンチ、言語指向プログラミングを導入することを目的としている

Page 5: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 5 -

Piece Frameworkの主なプロダクト

Piece_Unity

Webアプリケーションフレームワーク

Piece_ORM

オブジェクトリレーショナルマッピングフレームワーク

Piece_Right

バリデーションフレームワーク

Piece_Flow

Webフローエンジン

Piece_IDE

Eclipse上に構築されたPiece Frameworkの統合開発環境

Page 6: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 6 -

Piece_IDE

Page 7: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 7 -

Piece Framework の主なプロダクト

Stagehand_TestRunner

テスト駆動開発のためのテストランナー

MakeGood

Eclipse PDTでテスト駆動開発を行うためのテストランナー

Page 8: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 8 -

Stagehand_TestRunner

Page 9: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 9 -

今後の計画

「与えられた特定の要求仕様を元に、構成の知識を生かし、再利用可能な基本部分を使って、カスタム化かつ最適化された中間または最終製品を自動的に生成します。」-- 「ジェネレーティブプログラミング」

Page 10: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 10 -

今後の計画

ジェネレーティブプログラミング

ドメイン駆動設計 プロダクトライン モデル駆動開発 …DSL, DI, AOP, …

Page 11: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 11 -

今後の計画

MakeGood

コンフィギュレーションエンジン

ワークフローエンジン

Eclipseプラグイン

既存のプロダクトのリニューアル

Page 12: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 12 -

開発に参加するには?(GitHub)

1. パッチ、拡張を適用したいプロダクトをforkする。

2. パッチ、拡張を適用する。

3. pieceアカウントにpull requestを送信する。

Page 13: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 13 -

テスト駆動開発 (TDD)

「動作するきれいなコード」-- Ron Jeffries

TDDにおけるテスト≠QAのテスト

Page 14: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 14 -

何をテストするのか?

例えば、入力された基本給から社会保険料を計算し表示する Web アプリケーションの場合。

もっとも重要な社会保険料を計算する部分をテストする。

Page 15: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 15 -

テストしやすいアーキテクチャ

表示したり、バリデーションを行ったり、計算したりするコードが一ヶ所に固まっているとテストできない!

Web アプリケーションフレームワークを使って役割を分離する。

Page 16: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 16 -

TDDの重要な要素

テストの自動実行

素早いフィードバック

Page 17: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 17 -

MakeGood

MakeGoodは、Eclipse PDT上でユニットテストを実行するためのテストランナーを提供します。

MakeGoodは、様々な特徴により テスト駆動開発(TDD: Test Driven Development)を強力にサポートします。

Page 18: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 18 -

特徴

パッケージエクスプローラ、PHPエディタからのテストの実行 テストコード プロダクトコードすべてのテストの実行ファイル保存時のテストの実行

Page 19: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 19 -

特徴

テストの停止最初の失敗またはエラーの際の停止デバッグ

Page 20: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 20 -

特徴

結果ビューからのPHPファイルのオープンキーバインディングテスト実行時にシステムインクルードパスが使用可能PHPUnit, SimpleTestのサポート

Page 21: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 21 -

PHPをサポートしているIDE

Zend Studio 7.1.2 (有償)

NetBeans 6.9 (無償)

PhpStorm 1.0 (有償)

Eclipse PDT 2.2 (無償)

他にも、Delphi for PHP, VS.Phpなどがある。

Page 22: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 22 -

Zend Studio 7.1.2

【テストの実行・停止】 △△ エクスプローラ △△ PHPエディタ (テストコード) ×× PHPエディタ (プロダクトコード) ○○ すべてのテストの実行 ×× ファイル保存時のテストの実行 ○○ 停止 ×× 最初の失敗またはエラーの際の停止 ○○ デバッグ

【素早いフィードバック】 ○○ 結果ビューからPHPファイルを開く △△ キーバインディング

【テスティングフレームワーク】 ○○ PHPUnit ×× SimpleTest

Page 23: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 23 -

NetBeans 6.9

【テストの実行・停止】 △△ エクスプローラ △△ PHPエディタ (テストコード) ×× PHPエディタ (プロダクトコード) ×× すべてのテストの実行 ×× ファイル保存時のテストの実行 ×× 停止 ×× 最初の失敗またはエラーの際の停止 ○○ デバッグ

【素早いフィードバック】 ○○ 結果ビューからPHPファイルを開く △△ キーバインディング

【テスティングフレームワーク】 ○○ PHPUnit ×× SimpleTest

Page 24: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 24 -

PhpStorm 1.0

【テストの実行・停止】 △△ エクスプローラ △△ PHPエディタ (テストコード) ×× PHPエディタ (プロダクトコード) ×× すべてのテストの実行 ×× ファイル保存時のテストの実行 ○○ 停止 ×× 最初の失敗またはエラーの際の停止 ○○ デバッグ

【素早いフィードバック】 ○○ 結果ビューからPHPファイルを開く △△ キーバインディング

【テスティングフレームワーク】 ○○ PHPUnit ×× SimpleTest

Page 25: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 25 -

メニューからのテストの実行

Page 26: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 26 -

テスト成功時のMakeGoodビュー

Page 27: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 27 -

テスト失敗時のMakeGoodビュー

Page 28: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 28 -

プロジェクトのプロパティー

Page 29: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 29 -

必要なソフトウェア

PHPZend Debugger または XdebugEclipse 3.5, PDT 2.1Eclipse 3.6, PDT 2.2(0.7.0 でサポート予定)

(オプション)Stagehand_TestRunner 2.11.2 以降PHPUnit 3.4.1 以降SimpleTest 1.0.1 以降

Page 30: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 30 -

提供を予定している主なフィーチャ

Eclipse 3.6(PDT2.2)のサポート

 システムインクルードパス

 プロダクトコードからの実行 スタックトレースからのファ イルオープン

Page 31: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 31 -

今後の目標

継続的テスティング(Continuous Testing)環境への進化

素早いフィードバック

リファクタリングサポート

クイックフィックス

Page 32: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 32 -

リリースのお知らせ

Twitterやオフィシャルサイト、ITEMAN Blogなどでお知らせします。

是非ご購読をお願いします。

Page 33: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 33 -

ご意見、ご要望、パッチ求む

まずは使ってみてください。

ご意見、ご要望、パッチなど、お待ちしております。

Page 34: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 34 -

Twitter

http://twitter.com/piece_framework

Piece Frameworkのニュース

http://twitter.com/iteman

iteman

http://twitter.com/matsu_hide

まっつん

http://twitter.com/kumatch

kumatch

Page 35: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 35 -

メーリングリスト、フォーラム

メーリングリスト: Googleグループ Piece Framework Users (ja)

フォーラム: http://redmine.piece-framework.com プロダクトごとに準備中です

Page 36: Eclipse PDT + MakeGoodによるPHPコードのテスト

Copyright 2010 Piece Project, All rights reserved.©- 36 -

関連サイト

Piece Frameworkオフィシャルサイト http://piece-framework.com/

GitHub http://github.com/piecePiece Frameworkプロダクトページ http://redmine.piece-framework.com/

ITEMAN Blog http://iteman.jp/blog/