如何自動化測試 AI 開發的 WordPress 外掛

最近看到很多朋友都開始在用 AI 寫 WordPress 外掛,向他們請教在開發的過程中有沒有遇到什麼難題?大部分獲得的回應都是:AI 寫的東西不能百分之百信任,還是必須要人工手動測試,這就讓我想到似乎可以寫一篇文章來介紹導入自動化測試。

在還沒有 AI 開發的年代,已經有一套非常成熟的測試框架,可以做到將每段程式碼中的每個函式或是方法,驗證其輸出的結果是否符合預期,有了 AI 之後更能快速地撰寫測試腳本,並且透過 AI 自動執行測試,這樣就能很快地知道 AI 每次的產出結果是否正確。

尤其是當想要重新整理 AI 寫出超過 2,000 行的檔案時要進行檔案拆分,並確保拆分之後不會造成任何新的問題或錯誤,這時候自動化測試就可以幫上非常大的忙。我們可以在每個階段的任務拆分完成後,執行測試查看這次的拆分是否正確,這樣就不用再透過人力介入進行手動驗證。

如果是開發 WordPress 外掛的話,要執行 AI 自動化測試需要準備以下項目:

  • 需要在本機開發並確保本機環境已安裝 WP-CLI
  • 使用 Composer 管理檔案載入與安裝相關測試套件
  • 本機資料庫的存取權限,每次跑測試都會寫入測試資料在測試資料庫中

接下來我以測試資料庫的 CRUD 類別為範例,來說明如何使用一套整合測試配置的 Skills 來實際測試 AI 寫出來的程式碼。

一、安裝 Skills

Skills 是一套提供給 AI 的輔助工具,與以往的 Prompt(提示詞)不同,它可以指定在什麼情況下要讓 AI 使用這個技能,一個 Skill 裡面包含了:觸發時機、參考文件與程式碼範例,透過這種方式讓 AI 可以更明確地依照我們想要的結構來進行開發。

我設計了一個專為 WordPress 外掛開發測試用的 Skills。只要跟 AI 說:「請幫我初始化 WordPress 外掛開發配置」,系統就會自動安裝並設定撰寫測試所需的工具套件,並且整合 GitHub 的部署打包流程。

透過這個流程,每次進行版本發布時,系統都會自動執行測試腳本,確保測試通過後才能正確發布,簡單介紹該 Skills 在做的事:

  • 偵測並自動擷取待測試外掛的相關資訊
  • 使用 WP-CLI 來建立測試環境
  • 安裝測試套件
  • 建立並部署自動測試發布流程

Skill 下載網址:https://github.com/oberonlai/wp-plugin-dev-init

根據你使用的 AI 開發工具放在相對應的目錄即可。像是我用的是 Antigravity,我就以全域的方式放在使用者目錄底下,路徑為:/Users/youruseranme/.gemini/antigravity/skills/

接下來在開發工具之中直接跟 AI 說,我要初始化指定的外掛目錄,它就會開始自動執行安裝測試所需要的相關流程。

二、撰寫測試腳本

接下來在進行任何新功能的開發前,請 AI 先根據即將執行的功能來撰寫測試腳本,然後再開始實際進行開發,當功能開發完成後再請 AI 跑測試,看每一個測試是否順利通過。如果是針對已經既有的檔案進行測試,可以先評估要請 AI 測試的內容有哪些。

以操作資料庫的類別為例,通常會有寫入、讀取、修改、刪除的四個動作,這時候就可以透過自動化測試來驗證這四個動作,並驗證動作執行完成之後是否都有回傳預期的結果,像是:寫入、讀取修改完成後要回傳資料 ID,刪除成功後會回傳 true。

因此在請 AI 設計程式時,就要將每個函式執行完成後會回傳的結果明確地定義好,在測試時就能針對這些定義來進行驗證,另外將程式碼設計成方便測試的結構也很重要,基本原則是不要在一個函式之中放太多任務,而是秉持著一個函式只做一件事情的原則,在測試上也會比較方便。

其次是儘量請 AI 以物件導向的方式來進行設計,在預設情況下,AI 可能都會用函式來處理所有的功能,但這就會導致程式碼架構與檔案不好拆解,進而造成單一檔案內塞入太多的函式,增加維護上與測試的困難。

使用物件導向搭配命名空間,除了可以讓程式碼易於重複利用外,還可以避免命名衝突,更重要的是可以方便測試,以新增資料表以及操作該資料表的類別為例,就可以用兩個類別來設計,

類別 Database 裡面可以放建立資料表、檢查資料表是否存在、刪除資料表等功能,Data 類別裡面則可以放新增、刪除、更新資料,以及取得該資料表內資料的功能,做測試的時候就可以先檢查 Database 裡面的建立、檢查資料表方法是否正確,也可以檢查 Data 類別裡面各個方法是否有回傳預期的內容。

三、打包發佈

通常看到朋友開源的專案都是直接放在 Github 上面,有時候會上傳一些實際使用上不需要的程式碼,另外如果有更新版本的話,通常都是直接覆蓋主程式,萬一使用者想要找以前的舊版本時就無法取得了。

在實務上的建議做法是使用 Tag 增加版本號以及說明此次修改內容,再發布 Release 將外掛進行打包,這份 Skills 也包含這些流程,當在本機開發完成並 git push 上去後,就會自動觸發 GitHub Action 進行測試,測試完之後會自動打包 Release,確保每個發布的版本都有通過測試且只保留必要的程式碼。

使用方式如下:

  1. 在本機完成功能與測試
  2. git commit 與 git push
  3. 新增一個 tag(以版本號為標籤名稱),並輸入此次更新內容,像是 git tag -a v1.0.0 -m ‘功能更新’
  4. 最後 push 這個 tag 就會自動觸發 Github Action 的測試與打包流程:git push origin v1.0.0

小結

開始將 AI 寫的內容導入測試並以方便測試的方式進行開發,在開發初期就能有效的組織檔案結構,避免之後發生難以維護的狀況,同時導入測試後,未來要進行重構或是擴增新功能時,能夠避免「改東牆補西牆」的狀況。

AI 寫測試的速度非常驚人,基本上不用再另外花心思去處理,只要請 AI 遵循著方便測試的邏輯下去開發,就能大幅增加專案的穩定度,如果是想要長期維護的專案,請務必一定要導入自動化測試。

你現在寫外掛有導入測試的機制嗎?歡迎分享交流!

參考資料

目錄

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

Picture of 賴俊吾 / Oberon Lai
賴俊吾 / Oberon Lai

現為全職 WordPress 工程師,網站開發經歷 11 年,專攻前端工程與 WordPress 佈景主題、外掛客製化開發

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!

專注於分享 WordPress 開發、接案技巧、專案管理等自由工作者必備知識與心得

© 2025 想點創意科技有限公司

想點創意科技有限公司 | 統一編號 90516823
Designed by Hend Design | 隱私權政策

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!