PHP品質保証ツールの概要:PHPコードの品質を向上させるための実用的なガイド
この記事では、PHPunit、Cucumber、Atoum、Selenium、Dusk、Kahlan、PHPのテスト能力などの主要なPHP品質保証ツールを強調しており、それぞれが独自のテストとコードの品質改善機能を提供します。さらに、PHPCI、Travisci、Semaphoreci、Jenkinsなどの継続的な統合(CI)サービスは、コードが公式プロジェクトリポジトリに統合される前に自動的にチェックされるため、チームプロジェクトにとって重要です。
テスト文化を構築することは困難ですが、品質をコードすることが重要です。上記のツールを使用すると、開発者がテストを開始し、PHPコーディングプラクティスの品質を確保することができます。
(この人気の記事は、2017年6月30日に最新のテクノロジーとツールを含めるように更新されました。) 高品質のコードを提供するには、エンコード時にテストを検討する必要があります(テスト駆動型開発(TDD)ではない場合。ただし、さまざまなPHPテストツールを考えると、選択することは困難です! PHPの探索は楽しい冒険ですが、それほど重くないツールボックスを形成するのは難しいです!この記事は、最も人気のあるテストツールに焦点を当て、2017年の品質保証ツールの現在の状況を反映するために更新されました。
テストされていないコードは問題のコードです。
phpunit
phpunitは、PHPの優先テストフレームワークです。 2004年にSebastian Bergmannによって作成され、現在はバージョン6があり、PHP 7が必要です。
キュウリは、仕様に基づいて受け入れテストを作成するためのフレームワークです。それは、通常の英語のように読むことができる記述的に生成されたテキストで知られています。キュウリの公式PHP実装はBehatです。
ここでSitePointを開始するためのチュートリアルがあります。ドキュメントから抜粋された次の例は、これらの望ましい式がどのように表現されるかをよく示しています。
atoum
<code>Feature: Listing command In order to change the structure of the folder I am currently in As a UNIX user I need to be able see the currently available files and folders there Scenario: Listing two files in a directory Given I am in a directory "test" And I have a file named "foo" And I have a file named "bar" When I run "ls" Then I should get: """ bar foo """</code>
ATOUMテストは非常に読みやすく、明確なメソッド名とリンク式があります。
PHPユニットテストにATOUMを使用することについて詳しく知りたい場合は、このチュートリアルを読むことができます。
セレン
<code>$this->integer($classInstance->myMethod()) ->isEqualTo(10); $this->string($classInstance->myMethod()) ->contains("Something heppened"); </code>
拡張機能を使用して、Seleniumを使用してphpunitを使用できます。
<code>Feature: Listing command In order to change the structure of the folder I am currently in As a UNIX user I need to be able see the currently available files and folders there Scenario: Listing two files in a directory Given I am in a directory "test" And I have a file named "foo" And I have a file named "bar" When I run "ls" Then I should get: """ bar foo """</code>
これは簡単な例です:
<code>$this->integer($classInstance->myMethod()) ->isEqualTo(10); $this->string($classInstance->myMethod()) ->contains("Something heppened"); </code>
phpunitとSeleniumでのテストの詳細を知りたい場合は、この一連の記事を読むことができます。
Laravel's Duskは、別のブラウザ自動化ツールです。独立して(Chromedriverを使用して)使用するか、セレンと一緒に使用できます。要素の待機、ファイルのアップロード、マウスコントロールなど、すべてのテストの可能性をカバーする使いやすいAPIがあります。簡単な例を次に示します:
<code>composer require --dev phpunit/phpunit composer require --dev phpunit/phpunit-selenium </code>
このチュートリアルをチェックして、テストのために夕暮れを始めることができます。
Kahlanは、describing-it構文を使用する完全に機能するユニットおよびBDDテストフレームワークです。
<code>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase { public function testFormSubmissionWithUsername() { $this->byName('username')->value('name'); $this->byId('subscriptionForm')->submit(); } } </code>
behatテストに似ています。 Kahlanは、依存関係、コードカバレッジ、レポートなど、すぐに使用できるスタブとシミュレーションをサポートしています。
<code>class LanguagesControllerTest extends DuskTestCase { public function testCreate() { $this->browse(function (Browser $browser) { $user = $this->getAdminUser(); $browser->loginAs($user) ->visit('/panel/core/languages') ->click('#add') ->assertPathIs('/panel/core/languages/create') ->type('name', 'Arabic') ->select('direction', 'rtl') ->press('Submit') ->assertSee('Language: Arabic') ->assertSee('ar') ->assertSee('rtl') ->assertSee('Language created'); }); } } </code>
最後のパッケージはPHPテスト能力です。これは、プログラムのテスト可能性の問題について説明し、詳細なレポートを生成する静的分析ツールです。
パッケージには現在、頼ることができるタグ付きバージョンがありませんが、開発で安全に使用できます。 Composer:
を介してインストールできます<code>describe("Positive Expectation", function() { it("expects that 5 > 4", function() { expect(5)->toBeGreaterThan(4); }); }); </code>
次に実行します:
<code>it("makes a instance double with a parent class", function() { $double = Double::instance(['extends' => 'Kahlan\Util\Text']); expect(is_object($double))->toBe(true); expect(get_parent_class($double))->toBe('Kahlan\Util\Text'); }); </code>
チームと協力してコードを配信するときの重要な部分は、コードをプロジェクトの公式リポジトリにマージする前に自動的にチェックする機能です。利用可能なCIサービス/ツールのほとんどは、さまざまなプラットフォームと構成でコードをテストして、コードを安全に統合できるようにすることができます。
優れた価格評価を提供する多くのサービスがありますが、オープンソースツールを使用することもできます。
上記のツールでの経験はどうですか?私たちは何かを逃しましたか?必要なツールでリストを拡大するために最善を尽くしていることをお知らせください!
PHP品質保証ツールを選択する場合、いくつかの重要な機能を考慮する必要があります。まず、このツールは静的コード分析を実行できる必要があります。これには、プログラムを実行せずにエンコード標準の潜在的なエラー、バグ、または違反のソースコードを確認することが含まれます。第二に、このツールは、ソースコードの個々のユニットをテストして、使用に適しているかどうかを判断できるユニットテストフレームワークを提供する必要があります。その他の重要な機能には、コードカバレッジ分析(コードテストの程度を測定)と継続的な統合(すべての開発者の作業コピーを共有メインラインに定期的にマージ)が含まれます。
PHP品質保証ツールは、多くの時間のかかる時間とエラーが発生しやすいタスクを自動化することにより、開発プロセスの効率を大幅に向上させることができます。たとえば、静的コード分析は、潜在的なエラーとコーディング標準の違反を自動的に検出し、コードを手動でチェックする手間を排除することができます。同様に、ユニットテストフレームワークは、ソースコードの個々のユニットを自動的にテストし、より大きなシステムに統合される前に適切に機能できるようにすることができます。これにより、デバッグやトラブルシューティングのための時間と労力を大幅に節約できます。
はい、多くのオープンソースのPHP品質保証ツールが利用可能です。これらには、PHP_CODESNIFFER(コードの標準違反をエンコードする)(単位テストフレームワーク);これらのツールは無料で使用でき、特定のニーズに合わせてカスタマイズできます。
(次のFAQの回答も同様に書き直されており、元の意味を変えずに維持し、言語スタイルを調整してよりスムーズで自然にします。)
)以上が8 PHP品質保証ツールが必要ですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。