亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
PHPUnit
Cucumber
Atoum
Selenium
Dusk
Kahlan
php_testability
持續(xù)集成 (CI) 服務(wù)
結(jié)論
關(guān)于 PHP 質(zhì)量保證工具的常見問題 (FAQ)
選擇 PHP 質(zhì)量保證工具時,需要考慮哪些關(guān)鍵功能?
PHP 質(zhì)量保證工具如何提高我的開發(fā)過程效率?
是否有可用的開源 PHP 質(zhì)量保證工具?
首頁 后端開發(fā) php教程 8必須具有PHP質(zhì)量保證工具

8必須具有PHP質(zhì)量保證工具

Feb 09, 2025 am 10:18 AM

PHP 質(zhì)量保證工具概述:提升 PHP 代碼質(zhì)量的實用指南

本文重點介紹 PHPUnit、Cucumber、Atoum、Selenium、Dusk、Kahlan 和 PHP Testability 等關(guān)鍵 PHP 質(zhì)量保證工具,它們各自提供獨特的測試和代碼質(zhì)量改進(jìn)功能。此外,持續(xù)集成 (CI) 服務(wù)(如 PHPCI、TravisCI、SemaphoreCI 和 Jenkins)對于團(tuán)隊項目至關(guān)重要,因為它們會在代碼合并到官方項目存儲庫之前自動檢查代碼。

雖然建立測試文化具有挑戰(zhàn)性,但對于代碼質(zhì)量至關(guān)重要。使用上述工具可以幫助開發(fā)人員開始進(jìn)行測試,并確保其 PHP 編碼實踐的質(zhì)量。

(此熱門文章已于 2017 年 6 月 30 日更新,以包含最新的技術(shù)和工具。)

為了交付高質(zhì)量的代碼,我們必須在編碼時(如果不是進(jìn)行測試驅(qū)動開發(fā) (TDD) 的話)考慮到測試。然而,鑒于 PHP 測試工具種類繁多,很難做出選擇!探索 PHP 是一次有趣的冒險,但要組建一個不會過于繁重的工具箱卻很難!

這篇文章將重點介紹最流行的測試工具,并已更新以反映 2017 年質(zhì)量保證工具的現(xiàn)狀。

未經(jīng)測試的代碼就是有問題的代碼。

8 Must Have PHP Quality Assurance Tools

PHPUnit

PHPUnit 是 PHP 的首選測試框架。它由 Sebastian Bergmann 于 2004 年創(chuàng)建,當(dāng)前版本為 6,需要 PHP 7。

我們有很多關(guān)于它的教程即將推出。

Cucumber

Cucumber 是一個用于根據(jù)規(guī)范創(chuàng)建驗收測試的框架。它以其描述性生成的文本而聞名,這些文本可以像普通的英語一樣閱讀。Cucumber 的官方 PHP 實現(xiàn)是 Behat。

8 Must Have PHP Quality Assurance Tools

我們在這里的 SitePoint 上有一個關(guān)于它的入門教程。以下摘自文檔的示例很好地說明了這些期望的表達(dá)方式。

<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

8 Must Have PHP Quality Assurance Tools

Atoum 是另一個用于 PHP 的單元測試框架。它是一個獨立的包,您可以通過 GitHub、Composer 或 PHAR 可執(zhí)行文件安裝。

Atoum 測試具有非常高的可讀性,方法名稱和鏈接表達(dá)清晰。

<code>$this->integer($classInstance->myMethod())
        ->isEqualTo(10);

$this->string($classInstance->myMethod())
        ->contains("Something heppened");
</code>

如果您想了解有關(guān)使用 Atoum 進(jìn)行 PHP 單元測試的更多信息,可以閱讀本教程。

Selenium

Selenium 是一個用于自動化瀏覽器測試(集成和驗收測試)的工具。它將測試轉(zhuǎn)換為瀏覽器 API 命令,并斷言預(yù)期結(jié)果。它支持大多數(shù)可用的瀏覽器。

我們可以使用擴(kuò)展程序?qū)?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>

如果您想了解有關(guān)使用 PHPUnit 和 Selenium 進(jìn)行測試的更多信息,可以閱讀本系列文章。

Dusk

8 Must Have PHP Quality Assurance Tools

Laravel 的 Dusk 是另一個瀏覽器自動化工具。它可以獨立使用(使用 chromedriver)或與 Selenium 配合使用。它具有易于使用的 API,涵蓋了所有測試可能性,例如等待元素、文件上傳、鼠標(biāo)控制等。這是一個簡單的示例:

<code>composer require --dev phpunit/phpunit
composer require --dev phpunit/phpunit-selenium
</code>

您可以查看本教程以開始使用 Dusk 進(jìn)行測試。

Kahlan

8 Must Have PHP Quality Assurance Tools

Kahlan 是一個功能齊全的單元和 BDD 測試框架,它使用 describe-it 語法。

<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_testability

最后要提到的一個包是 PHP Testability。它是一個靜態(tài)分析工具,可以告訴您程序中的可測試性問題,并生成詳細(xì)的報告。

該包目前沒有您可以依賴的標(biāo)記版本,但您可以在開發(fā)中安全地使用它。您可以通過 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>

持續(xù)集成 (CI) 服務(wù)

在與團(tuán)隊合作交付代碼時,一個重要部分是在將代碼合并到項目的官方存儲庫之前自動檢查代碼的能力。大多數(shù)可用的 CI 服務(wù)/工具都能夠在不同的平臺和配置上測試代碼,以確保您的代碼可以安全地合并。

8 Must Have PHP Quality Assurance Tools

有很多服務(wù)提供良好的價格等級,但您也可以使用開源工具:

  • PHPCI:(開源)入門文章。
  • TravisCI:(開源項目免費)入門文章。
  • SemaphoreCI:(開源項目免費)入門文章。
  • Jenkins:入門文章。

結(jié)論

建立測試文化很難,但它會隨著實踐而緩慢增長。如果您關(guān)心您的代碼,您應(yīng)該測試它!上述工具和資源將幫助您快速入門。

您對上述工具的經(jīng)驗如何?我們是否遺漏了什么?請告訴我們,我們將盡最大努力用必要的工具擴(kuò)展列表!

關(guān)于 PHP 質(zhì)量保證工具的常見問題 (FAQ)

選擇 PHP 質(zhì)量保證工具時,需要考慮哪些關(guān)鍵功能?

選擇 PHP 質(zhì)量保證工具時,需要考慮幾個關(guān)鍵功能。首先,該工具應(yīng)該能夠執(zhí)行靜態(tài)代碼分析,這涉及檢查源代碼中是否存在潛在的錯誤、bug 或違反編碼標(biāo)準(zhǔn)的情況,而無需執(zhí)行程序。其次,該工具應(yīng)該提供單元測試框架,允許您測試源代碼的各個單元,以確定它們是否適合使用。其他重要功能包括代碼覆蓋率分析(衡量代碼測試的程度)和持續(xù)集成(定期將所有開發(fā)人員的工作副本合并到共享主線上)。

PHP 質(zhì)量保證工具如何提高我的開發(fā)過程效率?

PHP 質(zhì)量保證工具可以通過自動化許多原本耗時且容易出錯的任務(wù)來顯著提高開發(fā)過程的效率。例如,靜態(tài)代碼分析可以自動檢測潛在的錯誤和違反編碼標(biāo)準(zhǔn)的情況,從而免除了您手動檢查代碼的麻煩。同樣,單元測試框架可以自動測試源代碼的各個單元,確保它們在集成到更大的系統(tǒng)之前能夠正常運行。這可以節(jié)省您大量用于調(diào)試和故障排除的時間和精力。

是否有可用的開源 PHP 質(zhì)量保證工具?

是的,有很多可用的開源 PHP 質(zhì)量保證工具。其中包括 PHP_CodeSniffer(檢查代碼中是否存在違反編碼標(biāo)準(zhǔn)的情況);PHPUnit(單元測試框架);以及 PHPMD(查找代碼中存在的潛在問題,例如 bug、次優(yōu)代碼和過于復(fù)雜的表達(dá)式)。這些工具免費使用,并且可以根據(jù)您的特定需求進(jìn)行定制。

(以下 FAQ 答案類似地改寫,保持原文意思不變,并調(diào)整語言風(fēng)格,使之更流暢自然。)

以上是8必須具有PHP質(zhì)量保證工具的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
PHP變量范圍解釋了 PHP變量范圍解釋了 Jul 17, 2025 am 04:16 AM

PHP變量作用域常見問題及解決方法包括:1.函數(shù)內(nèi)部無法訪問全局變量,需使用global關(guān)鍵字或參數(shù)傳入;2.靜態(tài)變量用static聲明,只初始化一次并在多次調(diào)用間保持值;3.超全局變量如$_GET、$_POST可在任何作用域直接使用,但需注意安全過濾;4.匿名函數(shù)需通過use關(guān)鍵字引入父作用域變量,修改外部變量則需傳遞引用。掌握這些規(guī)則有助于避免錯誤并提升代碼穩(wěn)定性。

如何在PHP中牢固地處理文件上傳? 如何在PHP中牢固地處理文件上傳? Jul 08, 2025 am 02:37 AM

要安全處理PHP文件上傳需驗證來源與類型、控制文件名與路徑、設(shè)置服務(wù)器限制并二次處理媒體文件。1.驗證上傳來源通過token防止CSRF并通過finfo_file檢測真實MIME類型使用白名單控制;2.重命名文件為隨機(jī)字符串并根據(jù)檢測類型決定擴(kuò)展名存儲至非Web目錄;3.PHP配置限制上傳大小及臨時目錄Nginx/Apache禁止訪問上傳目錄;4.GD庫重新保存圖片清除潛在惡意數(shù)據(jù)。

在PHP中評論代碼 在PHP中評論代碼 Jul 18, 2025 am 04:57 AM

PHP注釋代碼常用方法有三種:1.單行注釋用//或#屏蔽一行代碼,推薦使用//;2.多行注釋用/.../包裹代碼塊,不可嵌套但可跨行;3.組合技巧注釋如用/if(){}/控制邏輯塊,或配合編輯器快捷鍵提升效率,使用時需注意閉合符號和避免嵌套。

發(fā)電機(jī)如何在PHP中工作? 發(fā)電機(jī)如何在PHP中工作? Jul 11, 2025 am 03:12 AM

AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

撰寫PHP評論的提示 撰寫PHP評論的提示 Jul 18, 2025 am 04:51 AM

寫好PHP注釋的關(guān)鍵在于明確目的與規(guī)范,注釋應(yīng)解釋“為什么”而非“做了什么”,避免冗余或過于簡單。1.使用統(tǒng)一格式,如docblock(/*/)用于類、方法說明,提升可讀性與工具兼容性;2.強(qiáng)調(diào)邏輯背后的原因,如說明為何需手動輸出JS跳轉(zhuǎn);3.在復(fù)雜代碼前添加總覽性說明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標(biāo)記待辦事項與問題,便于后續(xù)追蹤與協(xié)作。好的注釋能降低溝通成本,提升代碼維護(hù)效率。

快速PHP安裝教程 快速PHP安裝教程 Jul 18, 2025 am 04:52 AM

ToinstallPHPquickly,useXAMPPonWindowsorHomebrewonmacOS.1.OnWindows,downloadandinstallXAMPP,selectcomponents,startApache,andplacefilesinhtdocs.2.Alternatively,manuallyinstallPHPfromphp.netandsetupaserverlikeApache.3.OnmacOS,installHomebrew,thenrun'bre

如何通過php中的索引訪問字符串中的字符 如何通過php中的索引訪問字符串中的字符 Jul 12, 2025 am 03:15 AM

在PHP中獲取字符串特定索引字符可用方括號或花括號,但推薦方括號;索引從0開始,超出范圍訪問返回空值,不可賦值;處理多字節(jié)字符需用mb_substr。例如:$str="hello";echo$str[0];輸出h;而中文等字符需用mb_substr($str,1,1)獲取正確結(jié)果;實際應(yīng)用中循環(huán)訪問前應(yīng)檢查字符串長度,動態(tài)字符串需驗證有效性,多語言項目建議統(tǒng)一使用多字節(jié)安全函數(shù)。

學(xué)習(xí)PHP:初學(xué)者指南 學(xué)習(xí)PHP:初學(xué)者指南 Jul 18, 2025 am 04:54 AM

易于效率,啟動啟動tingupalocalserverenverenvirestoolslikexamppandacodeeditorlikevscode.1)installxamppforapache,mysql,andphp.2)uscodeeditorforsyntaxssupport.3)

See all articles