WordPress プラグイン用の 10 の PHP テスト ツール
公開: 2022-08-05バグのないソフトウェアはありません。 これは、すべてのプログラミング言語とすべてのアプリケーションに適用される公理です。
これらのバグが本番環境の Web サイト内に展開されると、さまざまな重大度の悪影響を受ける可能性があります。 これらは、煩わしいものから経済的に損害を与えるものまで、いくつかの例です。
- 軽度: ユーザーが壊れたリンクをクリックできない。
- 重大: 連絡フォームの [送信] ボタンが機能していません。これは、ユーザーがメッセージを作成した後にのみ発見されます。
- 重大: 支払いゲートウェイが適切に構成されていないため、ユーザーは e コマース ストアで商品を購入できず、サイトを放棄します。
考えられるあらゆる角度からアプリケーションをテストするすべての側面を処理するには、単一のツールでは十分ではありません。 実際、バグを見つけることに加えて、次のようなアプリケーションの他の機能を検証するために追加のテストを実行することが不可欠です。
- アクセシビリティと使いやすさ
- 許容できるパフォーマンス
- トラフィックとロード処理
この記事では、WordPress プラグインで PHP コードをテストするためのスタックを作成するのに役立つ、オープン ソース コミュニティによって作成された 10 個のツールを確認します。 これらのツールの一部は、PHP コードのテスト用に特別に設計されています。 その他は WordPress コードのテスト用です。 また、テストに役立ついくつかの一般的な機能を処理するために、他のいくつかのツールが作成されました。
1.DevKinsta
DevKinsta は、WordPress サイトのローカル開発スイートです。 いくつかの基本的な詳細を提供するだけで、WordPress サイトのローカル インスタンスがすぐにインストールされ、メールの受信トレイ、データベース マネージャー、トラブルシューティングを容易にするためのログなど、いくつかの便利な開発ツールがバンドルされています。
DevKinsta は通常、開発者やデザイナーが WordPress のテーマやプラグインを作成するときに使用します。 ただし、統合および機能テストを実行するためのローカル Web サーバーとしても使用できます。 これは、応答のコンテンツとヘッダーが正しいことを確認するのに役立つ HTTP ツールと連携して実行されます。
DevKinsta の主な機能は次のとおりです。
- 新しい WordPress 環境を作成し、必要がなくなったら削除するのが簡単
- サポートされている任意のバージョンの PHP と WordPress、およびそれらの任意の組み合わせに対してテストできます
- ユーザーがサイトとデータの外部バックアップを作成できるMyKinstaとシームレスに統合
2.PHPユニット
PHPUnit は、プログラマー向けの PHP 用テスト フレームワークです。 これは、ソース コードの個々のユニットを検証する目的で、PHP コードでユニット テストを実行するための最も一般的なフレームワークです。
PHPUnit テストを使用すると、開発者は開発サイクルのできるだけ早い段階で問題を見つけることができ、コードのリグレッションが発生していないことを確認できます (つまり、コードの一部を変更しても他の場所で問題が発生していない)。
PHPUnit の主な機能は次のとおりです。
- 新機能のテスト
- 新しくリファクタリングされたコード検証
- 選択した継続的インテグレーション プロセス内で完全に自動化および実行可能
- デバッグ
- 機能の呼び出しと制約による予想される使用に関する自動文書化
- 開発者が最初にテストを作成し、次に機能を作成するテスト駆動開発 (TDD) アプローチを可能にします。
3.ブレインモンキー
Brain Monkey は、PHP と WordPress のテスト ユーティリティです。 PHP メソッドを再定義し、任意の PHP アプリケーションの動作をテストできる、フレームワークに依存しないツールを提供します。 また、WordPress コードのテストに固有のツールも提供します。
Brain Monkey の主な機能は次のとおりです。
- 単体テストが外部のアンロードされたライブラリと対話できるようにします
- WordPress 環境をロードする必要なく、WordPress 関数の呼び出しを許可します
- WordPress の関数 (
add_filter
やdo_action
など) が期待どおりに機能を呼び出すと断言できる
4. ブレイン・フェイカー
Brain Faker は、Faker (偽のデータを生成するための一般的な PHP ライブラリ) と Brain Monkey を使用して、偽の WordPress オブジェクトと関連する機能を簡単に生成し、テストすることができます。
-
WP_Post
インスタンス、およびget_post
やget_post_field
などの関連関数のモック WP_User
インスタンス、およびget_userdata
、get_user_by
、user_can
などの関連関数のモックWP_Term
インスタンス、およびget_term
やget_term_by
などの関連関数のモックWP_Comment
インスタンスWP_Site
インスタンス、およびget_site
などの関連関数のモックWP_Post_Type
インスタンス、およびget_post_type_object
やpost_type_exists
などの関連関数のモックWP_Taxonomy
インスタンス、およびget_taxonomy
やtaxonomy_exists
などの関連関数のモックWP_Error
インスタンス
Brain Faker の主な機能は次のとおりです。
- 偽の現実的な WordPress データを単体テストに挿入します — 偽の投稿の更新日へのアクセスは日付として動作し (例:
2022-04-17T13:06:58+00:00
)、ユーザー名は適切です (例:"John Smith"
)、偽の投稿インスタンスは偽のユーザー インスタンスによって作成されます。 - 偽のデータは事前に提供されるか、ランダムに生成される可能性があります
- 拡張可能 — 開発者は、独自の WordPress プラグインからクラスと関数をモックできます
5. あざけり
Mockery は、シンプルかつ柔軟な PHP モック オブジェクト フレームワークであり、PHPUnit、PHPSpec、またはその他のユニット テスト フレームワークと一緒に使用することを目的としています。 人間が読めるドメイン固有言語 (DSL) を使用して、可能なすべてのオブジェクト操作と相互作用を定義できるテスト ダブル フレームワークを提供します。
Mockery の主な機能は次のとおりです。
- モック オブジェクトとスタブの柔軟な生成を有効にします (テスト中に行われた特定の呼び出しに対する定義済みの定型回答を提供します)。
- PHPUnit のテスト分離機能を強化します
- 自然言語の記述を可能な限り模倣して、嘲笑された期待を表現するための柔軟な API (例:
$mock->shouldReceive('myMethod')->once()->andReturn('Hello world!');
) - 低速のシステム (データベース、ファイル システム、外部サービスなど) にアクセスする必要をなくすために、インメモリ モック オブジェクトを使用した単体テスト
- 決定論的および非決定論的な動作の両方をモックできます
6. WordPress ネイティブ エクスポート ツール
WordPress のネイティブ エクスポート ツールは、投稿、ページ、カスタム投稿タイプ、コメント、カスタム フィールド、カテゴリ、タグ、カスタム分類法、ユーザー、メディアなど、サイトの WordPress データを XML ファイルとしてデバイスにダウンロードします。 XML ファイルは、任意の WordPress サイトにインポートできるカスタム形式 (WordPress eXtended RSS または WXR ファイルと呼ばれる) を備えています。
このツールは、テスト用に特別に設計されたものではありません。 ただし、その有用性は、テストに使用できる適切なデータセットを含む WordPress データベースのスナップショットを作成できることにあります。 これは、実際のデータを含む本番環境の WordPress サイトをエクスポートして、開発インスタンスまたはステージング インスタンスにインポートして、新しい機能をテストできることを意味します。
WordPress エクスポート ツールの主な機能は次のとおりです。
- 実際のWordPressサイトを利用したテスト用データの作成
- データベース全体の共有可能なエクスポート ファイル
- 統合と単体テストの両方に役立ちます
7.ガズル
Guzzle は、HTTP 要求の送信と Web サービスとの統合を容易にする PHP HTTP クライアントです。
Guzzle は一般的なツールであるため、テストは可能なユースケースの 1 つにすぎません。 DevKinsta などのローカル Web サーバーと組み合わせることで、Guzzle を使用して統合テストを実行できます。Guzzle を使用して、開発 Web サーバーに対して HTTP 要求を送信し、コンテンツとヘッダーを検証する PHPUnit の単体テストに応答を渡すことができます。期待通りに設定されています。
Guzzle の主な機能は次のとおりです。
- PHP 標準勧告「PSR-7」(HTTP メッセージ インターフェイス用)を満たし、ベンダー ロックインを排除
- シンプルで高速
- テストは実際の WordPress サイトに対して実行され、信頼性が向上します
- 簡単かつ迅速に PHPUnit 内から実行可能
- 統合テストを自動化し、継続的統合プロセスに追加できます
8.WP-CLI
WP-CLI は WordPress のコマンドライン インターフェイスです。 これを使用すると、Web ブラウザーを使用せずに、プラグインの更新、マルチサイト インストールの構成などを行うことができます。
WP-CLI は特にテスト ツールではありませんが、テストはその多くのユース ケースの 1 つです。 たとえば、新しい開発 Web サーバーをスピンアップした後、WP-CLI コマンドを含む bash スクリプトを実行して、テスト データを WordPress サイトにインポートし、適切な役割と機能を持つユーザーを作成し、必要なサードパーティ プラグインをインストールし、他のそのようなタスク。
WP-CLI コマンドを含むスクリプトを Git リポジトリに保存できるため、統合テストを実行するプロセスを自動化し、継続的統合プロセスに統合できます。
- WordPress エクスポート ツールを使用して実際のテスト データを生成し、Git リポジトリに保存します。
- DevKinsta を使用して、新しい WordPress インスタンスで Web サーバーを起動します。
- WP-CLI を使用してテスト データを WordPress サイトにインポートします (DevKinsta は WP-CLI 経由で操作できます)。
- PHPUnit で単体テストを作成し、Guzzle で Web サーバーに対して HTTP 要求を実行して、応答の内容とヘッダーを検証します。
WP-CLI の主な機能は次のとおりです。
- コマンドライン インターフェイスを介して、WordPress インスタンスに対するコマンドのリモート実行を許可します
- 他のツールで拡張可能
- テストスタックの機能を強化
- プロセスの完全自動化を可能にします
9.Xデバッグ
XDebug は PHP の拡張機能であり、デバッグ、PHP のエラー レポートの改善、トレース、プロファイリング、コード カバレッジ分析など、PHP 開発エクスペリエンスを向上させるさまざまな機能を提供します。
XDebug はコードのテストには役立ちませんが、バグの場所を見つけるのに役立ちます。 XDebug を PHPUnit と組み合わせると、特に効果的です。テストが失敗し、問題の原因が見つからない場合は、XDebug を使用して単体テスト コードにブレークポイントを追加できます。 単体テストを再度実行すると、PHP スクリプトはこれらの各ブレークポイントで一時停止されるため、実行の現在の状態 (コール スタック、プロパティ、オブジェクトの値など) を調べて、問題の発見を試みることができます。
XDebug の主な機能は次のとおりです。
- VS Code、PHPStorm、Sublime などの一般的な PHP エディターの機能統合
- すべての関数呼び出しに費やされた時間と、それが消費するメモリの量をプロファイリングします
- 単純に
var_dump
を使用してコードをデバッグするよりもはるかに強力 - ブレークポイントで一時停止するときに、その場で変数値を変更できます
10.PHPスタン
PHPStan は PHP の静的解析ツールで、テストを書く前にコードのバグを見つけるように設計されています。
PHPStan の目標は、開発者が作成しなければならないテストの数を減らすことです。 このツールは、テスト スタックで最初に実行されるツールであり、できるだけ多くのバグを事前にキャッチします。 静的分析から推測できないバグ (たとえば、ロジックに欠陥があるもの) のみを単体テストで検証する必要があります。
PHPStan は、コードベース全体をスキャンして不一致を探すことで機能します。 たとえば、float を返す関数からの応答値を整数型の関数パラメーターに割り当てることはできません。 コードにそのような事象が含まれている場合は、潜在的なバグであり、PHPStan は、アプリケーション コードを記述している開発段階で警告を発します。
PHPStan の主な機能は次のとおりです。
- 既存の継続的インテグレーション プロセス内での自動化と統合
- 型の不一致など、多くのトリッキーなバグを見つけます
- コードベース全体をスキャンし、ほとんど実行されないコード部分のバグを見つけます
- 段階的な統合を可能にするために、複雑さが増すレベルで編成されています
- Symfony、Laravel、Doctrine、Nette、WordPress など、最も一般的な PHP フレームワークと CMS の機能拡張
概要
本番環境でバグが気付かれずにアプリケーションに紛れ込むと、評判や収入に損害を与える可能性があるため、ユーザーに影響が及ぶ前にバグを根絶するように努める必要があります。
複雑なアプリケーションでは、バグが含まれていないという 100% の信頼を得ることはほぼ不可能です。 このため、最初の開発サイクル中にできるだけ多くのバグを見つけて削除するプロセスを設定する必要があります。
適切に設計されたテスト ツールキットを使用すると、アプリケーションが予期しない動作をする可能性を大幅に最小限に抑えることができます。 オープン ソース コミュニティは、アプリケーションのさまざまな側面をテストするための多くのツールを作成して利用できるようにしました。 — を利用して、包括的なテスト スタックを作成します。
この記事では、WordPress プラグインで PHP コードをテストするという目標を達成するのに役立つ 10 個のツールを確認しました。
最新のプロジェクトで使用したツールはどれですか? 以下のコメントセクションで、あなたがそれを使って何を構築したかをお知らせください!