10個用於WordPress外掛的PHP測試工具

10個用於WordPress外掛的PHP測試工具

沒有軟體是沒有錯誤的。這是適用於每種程式語言和每種應用程式的公理。

當這些錯誤在您的網站中部署在生產環境中時,您可能會遭受不同嚴重程度的不利後果。這些是一些例子,從煩人到經濟破壞:

  • 輕度:使用者無法點選斷開的連結。
  • 中等:聯絡表單的“提交”按鈕不起作用,使用者只有在撰寫完他們的訊息後才會發現。
  • 嚴重:支付閘道器配置不正確,導致使用者無法在您的電子商務商店購買產品,從而放棄該網站。

沒有任何一種工具足以處理從所有不同可能角度測試應用程式的所有方面。事實上,除了發現錯誤之外,執行額外的測試來驗證應用程式的其他功能也很重要,例如:

在本文中,我們將回顧開源社羣建立的10個工具,這些工具可以幫助構建用於測試WordPress外掛中的PHP程式碼的堆疊。其中一些工具是專門為測試PHP程式碼而設計的;其他用於測試WordPress程式碼;並建立了一些其他工具來處理一些對測試有用的通用功能。

  1. PHPUnit
  2. Brain Monkey
  3. Brain Faker
  4. Mockery
  5. WordPress Native Export Tool
  6. Guzzle
  7. WP-CLI
  8. XDebug
  9. PHPStan
  10. DevKinsta

1.PHPUnit

PHPUnit標誌

PHPUnit標誌

PHPUnit是一個面向程式設計師的PHP測試框架。它是在PHP程式碼中執行單元測試的最流行的框架,目的是驗證原始碼的各個單元。

PHPUnit測試允許開發人員在開發週期內儘早發現問題,有助於確保沒有引入程式碼迴歸(即對某些程式碼的更改不會在其他地方引起問題)。

PHPUnit的主要功能是:

  • 新功能測試
  • 新重構的程式碼驗證
  • 可以在選擇的持續整合過程中完全自動化和執行
  • 除錯
  • 通過功能呼叫和約束自動記錄預期用途
  • 允許測試驅動開發(TDD) 方法,其中開發人員首先建立第一個測試,然後是功能

2.Brain Monkey

Brain Monkey標誌

Brain Monkey標誌

Brain Monkey是PHP和WordPress的測試工具。它提供了與框架無關的工具,允許您重新定義PHP方法並測試任何PHP應用程式的行為。它還提供了專門用於測試WordPress程式碼的工具。

Brain Monkey的主要特點是:

  • 允許單元測試與外部的、未載入的庫進行互動
  • 允許呼叫WordPress函式而無需載入WordPress環境
  • 可以斷言WordPress函式(例如add_filterdo_action)按預期呼叫功能

3. Brain Faker

GitHub上的Brain Faker

GitHub上的Brain Faker

Brain Faker使用Faker(一個流行的用於生成假資料的PHP庫)和Brain Monkey來提供輕鬆生成假WordPress物件和相關功能供您測試,包括:

  • WP_Post例項,以及模擬相關函式,如get_postget_post_field
  • WP_User例項和模擬相關函式,如get_userdataget_user_byuser_can
  • WP_Term例項,以及模擬相關函式,如get_termget_term_by
  • WP_Comment例項
  • WP_Site例項和模擬相關功能,如get_site
  • WP_Post_Type例項,以及模擬相關函式,如get_post_type_objectpost_type_exists
  • WP_Taxonomy例項,以及模擬相關函式,如get_taxonomytaxonomy_exists
  • WP_Error例項

Brain Faker的主要特點是:

  • 將虛假但真實的WordPress資料注入到單元測試中——訪問虛假文章的修改日期將表現為日期(例如2022-04-17T13:06:58+00:00),使用者名稱將是合適的(例如"John Smith"),虛假文章例項是由虛假使用者例項創作的,等等上
  • 假資料可以預先提供或隨機生成
  • 可擴充套件——開發人員可以從他們自己的WordPress外掛中模擬類和函式

4. Mockery

GitHub上的Mockery

GitHub上的Mockery

Mockery是一個簡單而靈活的PHP模擬物件框架,旨在與PHPUnit、PHPSpec或任何其他單元測試框架一起使用。它提供了一個測試雙重框架,能夠使用人類可讀的領域特定語言(DSL) 定義所有可能的物件操作和互動。

Mockery的主要功能是:

  • 支援靈活生成模擬物件和存根(為測試期間的特定呼叫提供預定義的預設答案)
  • 增強PHPUnit的測試隔離能力
  • 靈活的API來表達模擬的期望,儘可能地模仿自然語言描述(例如$mock->shouldReceive('myMethod')->once()->andReturn('Hello world!');
  • 使用記憶體中的模擬物件進行單元測試,以避免需要訪問較慢的系統(例如資料庫、檔案系統或外部服務)
  • 可以模擬確定性和非確定性行為

5. WordPress原生匯出工具

WordPress匯出工具

WordPress匯出工具

WordPress的原生匯出工具將網站的WordPress資料作為XML檔案下載到您的裝置,包括文章、頁面、自定義文章型別、評論、自定義欄位、類別、標籤、自定義分類、使用者和媒體。XML檔案具有可匯入任何WordPress站點的自定義格式(稱為WordPress eXtended RSS或WXR檔案)。此工具不是專門為測試而設計的。但是,它的用處在於能夠建立包含合適資料集的WordPress資料庫的快照,然後可以將其用於測試。這意味著可以將包含真實資料的生產中的WordPress站點匯出並匯入到開發或暫存例項中以測試新功能。

WordPress匯出工具的主要功能是:

  • 使用實際的WordPress站點建立測試資料
  • 整個資料庫的可共享匯出檔案
  • 對整合和單元測試都很有用

6. Guzzle

Guzzle標誌

Guzzle標誌

Guzzle是一個PHP HTTP客戶端,可以輕鬆傳送HTTP請求並與Web服務整合。

Guzzle是一種通用工具,因此測試只是其可能的用例之一。與DevKinsta等本地Web伺服器一起,Guzzle可以執行整合測試:您可以使用Guzzle向開發Web伺服器傳送HTTP請求,然後將響應傳遞給PHPUnit中的單元測試,以驗證內容和標頭按預期設定。

Guzzle的主要功能是:

  • 滿足PHP標準建議“PSR-7”(用於HTTP訊息介面),排除供應商鎖定
  • 簡單快速
  • 針對實際WordPress站點執行測試,提高可靠性
  • 可以在PHPUnit中執行,方便快捷
  • 整合測試可以自動化並新增到持續整合過程中

7. WP-CLI

WP-CLI標誌

WP-CLI標誌

WP-CLI是WordPress的命令列介面。有了它,您無需使用網路瀏覽器即可更新外掛、配置多站點安裝等等。

WP-CLI並不是專門的測試工具,但測試是其眾多用例之一。例如,在啟動新的開發Web伺服器後,您可以執行包含WP-CLI命令的bash指令碼,將測試資料匯入WordPress站點,建立具有適當角色和功能的使用者,安裝所需的第三方外掛,以及其他此類任務。

由於帶有WP-CLI命令的指令碼可以儲存在您的Git儲存庫中,因此執行整合測試的過程可以自動化並整合到您的持續整合過程中:

  1. 使用WordPress匯出工具生成真實的測試資料,並將其儲存在Git儲存庫中。
  2. 使用DevKinsta啟動具有新WordPress例項的Web伺服器。
  3. 使用WP-CLI將測試資料匯入WordPress站點。
  4. 在PHPUnit中建立一個單元測試,讓Guzzle對Web伺服器執行HTTP請求,以驗證您的響應內容和標頭。

WP-CLI的主要功能是:

  • 允許通過命令列介面對WordPress例項遠端執行命令
  • 可使用其他工具進行擴充套件
  • 增強測試堆疊的功能
  • 允許過程完全自動化

8. XDebug

XDebug Logo

XDebug Logo

XDebug是PHP的一個擴充套件,它提供了一系列功能來改善PHP開發體驗,包括除錯、改進PHP的錯誤報告、跟蹤、分析和程式碼覆蓋率分析。

XDebug不會幫助您測試您的程式碼,但會幫助您找出錯誤所在。將XDebug與PHPUnit結合起來特別有效:如果某個測試失敗並且找不到問題的根源,則可以使用XDebug在單元測試程式碼中新增斷點。再次執行單元測試時,PHP指令碼將在每個斷點處暫停,允許您檢查當前執行狀態(呼叫堆疊、屬性和物件值等)並嘗試發現問題所在。

XDebug的主要功能是:

  • 與流行的PHP編輯器的功能整合,包括VS Code、PHPStorm和Sublime
  • 分析每個函式呼叫花費了多少時間以及消耗了多少記憶體
  • 比簡單地var_dump用於除錯程式碼更強大
  • 允許在斷點暫停時動態修改變數值

9. PHPStan

PHPStan Logo

PHPStan Logo

PHPStan是PHP的靜態分析工具,旨在在編寫測試之前發現程式碼中的錯誤。

PHPStan的目標是減少開發人員必須編寫的測試數量。該工具是測試堆疊中第一個執行的工具,可以搶先捕獲儘可能多的錯誤。只有那些無法從靜態分析中推斷出來的錯誤(例如那些有缺陷的邏輯)必須通過單元測試進行驗證。

PHPStan通過掃描整個程式碼庫並尋找不匹配來工作。例如,返回浮點數的函式的響應值不能分配給整數型別的函式引數。每當程式碼包含這樣的事件時,這就是一個潛在的錯誤,PHPStan會在開發階段提醒您,就在您編寫應用程式程式碼時。

PHPStan的主要功能是:

  • 現有持續整合過程中的自動化和整合
  • 定位許多棘手的錯誤,例如型別不匹配
  • 掃描整個程式碼庫,在很少執行的程式碼部分中發現錯誤
  • 以越來越複雜的層次組織,以允許逐漸整合
  • 為最流行的PHP框架和CMS提供擴充套件功能,包括Symfony、Laravel、Doctrine、Nette和WordPress

10.DevKinsta

DevKinsta中本地WordPress站點的詳細資訊

DevKinsta中本地WordPress站點的詳細資訊

DevKinsta是WordPress網站的本地開發套件。只需提供一些基本詳細資訊,即可立即安裝WordPress站點的本地例項,並且它捆綁了幾個有用的開發工具,如電子郵件收件箱、資料庫管理器和日誌記錄,以便於排除故障。

DevKinsta通常由開發人員和設計人員在建立他們的 WordPress 主題和外掛時使用。但它也可以用作執行整合和功能測試的本地Web伺服器。這是與HTTP工具一起完成的,該工具可幫助您驗證響應內容和標頭是否正確。

DevKinsta的主要功能是:

  • 輕鬆啟動新的WordPress環境並在不再需要時將其刪除
  • 允許針對任何受支援的PHP和 WordPress 版本以及它們的任意組合進行測試
  • 與MyKinsta無縫整合,使用者可以在其中建立其站點和資料的外部備份

小結

在生產環境中讓錯誤潛入您的應用程式的成本可能會損害您的聲譽和收入,因此您必須在它們影響您的使用者之前嘗試將其根除。

在複雜的應用程式中,幾乎不可能100%確信它不會包含錯誤。因此,您必須設定一個流程,以便在初始開發週期中找到並刪除儘可能多的錯誤。

使用精心設計的測試工具包,您可以極大地減少應用程式出現意外行為的可能性。開源社羣已經建立並提供了大量工具來測試應用程式的不同方面,您可以而且應該這樣做!— 利用來產生一個全面的測試堆疊。在本文中,我們回顧了10個工具來幫助您實現在WordPress外掛中測試PHP程式碼的目標。

評論留言