28
MakeGood 快適な テスト駆動開発を Piece Project 久保敦啓 [email protected] オープンソースカンファレンス 2011 Tokyo/Spring

MakeGoodで快適なテスト駆動開発を

Embed Size (px)

Citation preview

Page 1: MakeGoodで快適なテスト駆動開発を

MakeGoodで快適なテスト駆動開発を

Piece Project久保敦啓[email protected]

オープンソースカンファレンス2011 Tokyo/Spring

Page 2: MakeGoodで快適なテスト駆動開発を

iteman Piece Framework開発者

Piece Projectプロジェクトリード

Twitter @iteman

Page 3: MakeGoodで快適なテスト駆動開発を

Piece Framework

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

オープンソースソフトウェア

New BSD License Eclipse Public License

Page 4: MakeGoodで快適なテスト駆動開発を

歴史

2005 Stagehand_TestRunner 2006 Piece_Unity, Piece_Flow 2009 MakeGood 2011 ???

Page 5: MakeGoodで快適なテスト駆動開発を

テスト駆動開発Test-Driven Development

(TDD)

Page 6: MakeGoodで快適なテスト駆動開発を

Red - テストコードを書く

Green - プロダクションコードを書く

Refactor -リファクタリングを行う

Red/Green/Refactor

Page 7: MakeGoodで快適なテスト駆動開発を

PHPUnit Symfony2, CakePHP 2.0, Zend

Framework CIUnit (CodeIgniter) Behat (BDDフレームワーク )

SimpleTest CakePHP

テスティングフレームワーク

Page 8: MakeGoodで快適なテスト駆動開発を

テストランナー

Page 9: MakeGoodで快適なテスト駆動開発を

コマンドラインインターフェイス

Webインターフェイス

統合開発環境 (IDE)

ユーザーインターフェイス

Page 10: MakeGoodで快適なテスト駆動開発を

エディタ+コマンドライン

エディタ+ Web IDE+コマンドライン

IDE+ Web IDEのみ

開発環境

Page 11: MakeGoodで快適なテスト駆動開発を

Subversionと git

Page 12: MakeGoodで快適なテスト駆動開発を

1.該当のバグが存在しない直近のリビジョンを特定する

2.現在のリビジョンとの中間のリビジョンをチェックする

3.バグが再現するかどうかをチェックする

4.2に戻る

バグが混入したリビジョンの特定

Page 13: MakeGoodで快適なテスト駆動開発を

$ git bisect start$ git bisect bad$ git bisect good v1.0$ git bisect bad...$ git bisect goodb047b02ea83310a70fd603dc8cd7a6cd13d15c04 is first bad commit...

git bisect

Page 14: MakeGoodで快適なテスト駆動開発を

ワークフローを機能として実装する

人間の判断が必要な箇所以外を徹底して自動化する

「使い方を機能として実装する」

Page 15: MakeGoodで快適なテスト駆動開発を

テストの実行

失敗したアサーション行への移動

エラーの原因の特定

致命的なエラーの発生行への移動

テスト実行関連ワークフロー

Page 16: MakeGoodで快適なテスト駆動開発を

テストを特定する

テストを実行する

結果を確認する

テストの実行

Page 17: MakeGoodで快適なテスト駆動開発を

1.失敗したアサーションを特定する

2.ファイルを開く

3.失敗したアサーションの行に移動する

失敗したアサーション行への移動

Page 18: MakeGoodで快適なテスト駆動開発を

1.スタックトレースからエラーになったファイルと行を特定する

2.対象ファイルを開く

3.対象行に移動する

4.1に戻る

エラー原因の特定

Page 19: MakeGoodで快適なテスト駆動開発を

1.エラーが発生したファイルと行を特定する

2.対象ファイルを開く

3.対象行に移動する

致命的なエラーの発生行への移動

Page 20: MakeGoodで快適なテスト駆動開発を

継続的テストランナー

Eclipse PDT 素早いフィードバック

MakeGoodとは?

Page 21: MakeGoodで快適なテスト駆動開発を

PHPUnit CIUnit (CodeIgniter) SimpleTest CakePHP

各種フレームワークのサポート状況

Page 22: MakeGoodで快適なテスト駆動開発を

ファイル保存時のすべてのテストの実行

失敗・エラー・致命的なエラーの自動的な追跡

テストの実行・デバッグ

マルチバイト文字のサポート

主な特徴

Page 23: MakeGoodで快適なテスト駆動開発を

Eclipse for PHP Developers Helios SR2

http://www.eclipse.org/downloads/

Tools for PDT http://sourceforge.jp/projects/pdt-tools/releases/51060

パッチ済みプラグイン 致命的な不具合を解決するために必要

推奨環境

Page 24: MakeGoodで快適なテスト駆動開発を

Eclipseに更新サイトeclipse.piece-framework.comを設定し、そこからインストールできる

インストール

Page 25: MakeGoodで快適なテスト駆動開発を

テスト実行の並列化 すべてのテストの実行を高速化する

Aptana Studio 3のサポート

モッキングフレームワークサポート

明示的な依存関係の定義 テストとクラスを結びつける

Test Outlineビュー

今後の予定

Page 26: MakeGoodで快適なテスト駆動開発を

@piece_framework Piece Frameworkのニュース

@iteman iteman

@matsu_hide まっつん

Twitter

Page 27: MakeGoodで快適なテスト駆動開発を

GitHub http://github.com/piece

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

MakeGoodプロダウトページ http://redmine.piece-

framework.com/projects/makegood

関連サイト

Page 28: MakeGoodで快適なテスト駆動開発を

Pro Git http://progit.org/book/ja/ 江渡 浩一郎、『パターン、 Wiki、 XP ~時

を超えた創造の原則 (WEB+DB PRESS plusシリーズ ) 』、技術評論社、 2009年 , ISBN 978-4774138978

参考