PROVEとは

PROVE(プルーブ)とは名前のとおり「PHPが正しく動作しているか”証明”するツール」です。PROVEはPHPの動作を詳細に記録します。以前の動作が「正しい動作」とすると、PROVEによりPHPとアプリケーションが正しく動作している事が“証明”できます。




This ScreenFlow video requires a more recent version of the Adobe Flash Player to display\ . Please update your version of the Adobe Flash Player.




動画を大きな画面で見る場合はYouTubeのHD画質でご覧ください。

PROVEの利用例

PHPアプリが以前と同じように動作しているか”証明”したいケースは多くあります。

  • PHP本体のバージョンアップ
  • OS・ライブラリのバージョンアップ
  • PHPアプリのバージョンアップ
  • PHPフレームワークのバージョンアップ
  • PHPアプリの開発 PHPアプリのデバッグ

Webアプリの開発・運用でリグレッションテスト、BDDのように振る舞い動作駆動の開発をサポートするテストツールが必要となる場合は多くあります。動作を記録し、以前の動作と比較できるPROVEはPHPアプリを運用・開発されている全ての方に有用です。

PROVEの利用方法

PROVEの利用方法は非常に簡単です。

  1. アプリケーションの動作ログを取得する
  2. 動作ログからリクエストを再生し、差分ログを作成する
  3. 差分ログを参照しアプリケーションが期待通りの動作しているか確認する

たったこれだけ?と思われたかも知れません。PROVEを利用するとたったこれだけで十分なテストが可能となります。

PROVEの特徴

このような動作をするテストツールは多く存在します。しかし、PROVEはこれまでもログ型テストツールと全く異なります。今までの自動ログ型テストツールは、時間、データベース、Webサービスなど、アクセスした時点でデータが変わってしまい動作ログとは異なる動作をしてしまいます。しかも、アプリケーションの出力結果を比較しているのでどこに問題があったのか判別できません。

  1. データベース、Webサービス、ファイルなどの外部リソースに依存しない
  2. PROVEは関数レベルで実行結果を比較します
  3. 動作がプログラムの何処で変わったのか、変わった関数名が分かる
  4. テストケースの作成とテストの実行はブラウザをクリックするだけ

PROVEは以前と同じように動作するか?以前とどこが異なる動作しているか? 簡単に確認できる画期的なツールです。

PROVEはすべての関数の入出力を記録し、time関数やデータベース関数などのアクセス結果を「設定」に応じて「自由にオーバーライド」できます。このためPROVEを利用したテスト結果はログを取得した際と同じ結果にすることが可能となります。さらにPROVEを利用した場合、アプリケーション内部のどの部分に差異が生じたのかピンポイントで判別できます。

詳しいPROVEの解説はabout_prove.pdfをご覧ください。

PROVE導入の効果

PROVEを利用すると以下の効果が期待できます。

  • 開発・運用コストの削減
  • セキュリティの向上
  • コンプライアンスの向上

例えば、PCIDSSでは重要なシステム要素のセキュリティパッチの全てを1ヶ月以内に適用する事を求めています。セキュリティパッチリリースから1ヶ月以内にシステムが以前と同様に動作するか検証するには多大なコストが必要です。PROVEなら以前に取得していたログを再生し、差分をチェックするだけで検証が完了します。

何十日も必要なアップグレードのテストを1日で終える事も可能です。

PROVEの機能

PROVEの動作モード

  • トレースモード:PHPとアプリケーションの動作ログを記録するモード
  • バリデーションモード:記録した動作ログからリスクエストを再生し、検証するモード

PROVEの機能

  • リクエスト情報の記録・再生・比較
  • セッション情報の記録・置き換え
  • リソースを利用する関数の自動置き換え
  • 関数呼び出しの記録・置き換え
  • 関数戻り値の記録・置き換え
  • 出力結果の記録・比較
  • 重複排除によるデータ圧縮・アクセス高速化
  • PROVEコマンドツール
  • PROVE Webコンソール
  • ソースコードカバレッジ(☆)
  • データベースサポート(☆)

☆ 現在、未対応ですが近い将来対応を予定しています。

PROVEの動作環境

  • RHEL6/RHEL5および類似の環境
  • Apache Web Server(Prefork MPM)+PHP5.4/PHP5.3/PHP5.2/PHP5.1

PROVEは大量のログを出力するため高速なディスク、高速なCPUおよび大容量のメモリを搭載したハードウェアで実行することをお薦めします。ログ保存先は専用パーテション、可能であればSSDをご利用ください。大量のログファイルの削除は数GBでも数日必要な場合があります。データファイルの削除にはファイルシステムの再作成をお薦めします。

PROVEコンソールはPHP5.3以降でのみ動作します。レガシー版PHPを利用される場合はPHP5.3の環境も用意してください。

推奨スペック
  • CPU: 2コア以上
  • メモリ: 4GB以上
  • ログパーテション: 10GB以上 (専用パーテション・専用ディスク推奨。可能であればSSD)
  • ファイルシステム: Btrfs/Reiser4 (ext3/ext4など他のファイルシステムでも利用可能)☆

☆ Btrfs/Reiser4ファイルシステムはブロックサブアロケーション、小さいファイルへのアクセスの最適化、大量ファイルへのアクセス最適化、無制限のファイル数、モジュールによる圧縮などPROVEのログファイルシステムとして最適な仕様となっています。

PROVEの構成

PROVEはPHPモジュール(PROVE Zendエンジンモジュール)、コマンドスクリプト(PROVEコマンドツール)、Webコンソール(PROVE Webコンソール)の三つから成り立っています。基本的な操作はすべてWebから行えます。

PROVEを利用するにはphp.iniとディレクトリ構成を正しく設定する必要があります。RPMでインストールした場合、自動的にファイルやディレクトリ、設定ファイルが配置されます。

· 最終更新: 2012/11/29 15:15

個人情報保護 | PROVE開発ブログ(Coming Soon) | GITレポジトリ(Coming Soon) | オンラインフォーラム(Coming Soon)

PROVE for PHP, produced by Electronic Service Initiative, Ltd.