問題描述

大家好,

我想聽聽有什麼其他人向客戶提供複雜的 non-blog 解決方案作為平臺,用於自動迴歸測試?

對於不熟悉”regression testing” 這一術語的人來說,維基百科定義為:

Regression testing is any type of software testing that seeks to uncover software errors after changes to the program (e.g. bugfixes or new functionality) have been made, by retesting the program. The intent of regression testing is to assure that a change, such as a bugfix, did not introduce new bugs.

更有說服力的維基百科說現在正是我在一個專案上遇到的以下內容:

Experience has shown that as software is fixed, emergence of new and/or reemergence of old faults is quite common. Sometimes reemergence occurs because a fix gets lost through poor revision control practices (or simple human error in revision control). Often, a fix for a problem will be “fragile” in that it fixes the problem in the narrow case where it was first observed but not in more general cases which may arise over the lifetime of the software. Frequently, a fix for a problem in one area inadvertently causes a software bug in another area. Finally, it is often the case that when some feature is redesigned, some of the same mistakes that were made in the original implementation of the feature were made in the redesign.

隨著行動和過濾器的全球性質,我發現複雜性開始緩慢增加,因為我新增了更多的 client-requested 功能,並且變得很難得到一個複雜的外掛穩定,特別是如果它使用大量的呼叫 WP_Query 並更新資料庫很多。

我心中的解決方案是使用一系列”test cases” 來建立迴歸測試,以組成一個 「測試套件」 。在概念上,當您測試 HTTP GET 請求的 HTML 輸出時,並不困難。但是當您必須透過管理控制檯登入並/或測試 jQuery 互動來測試時,會變得更復雜一點。

我把這個設定為一個社群 wiki,希望我們能夠在這裡收集最佳實踐,但是如果任何其他 WordPress 專業人士使用,我真的很想聽到程式。

最佳解決方案

如果 WP 測試套件沒有被破壞,並且如果 WP 被設計和寫入,實際上可以被正確測試,那麼 PHPUnit 將會被考慮。 😉

更嚴重的是,您可以使用單元測試等從功能角度測試您想要的外掛。問題是,這些測試不能保證他們會抓住由 WP 升級引入的微妙機會,更別說一旦插入到定製的 WP 安裝中,它們將繼續工作。

我見過的豐富多彩的事情發生了:

  • WP API 的微妙變化會影響外掛的功能,例如你用來獲取術語 ID 的鉤子,現在正在獲得一個術語分類標識。 (很有可能您的測試條件方便地具有相同的 ID) 。

  • WP API 的微妙變化導致您收到 WP_Error 物件,而不是以前預期的 false 值作為輸入。

  • 您的外掛是從 mu-plugins 資料夾中新增的,導致一個微妙的程式碼流。

  • 您的外掛工作正常,直到 memcached 或其他一些永續性儲存已啟用。

  • 你的外掛工作正常,直到被鄙視的 switch_to_blog() 被呼叫。

  • 一個外掛在被呼叫時改變它駐留的鉤子,並且不知不覺中斷它作為副作用。

  • 一個外掛 (un?) 明白地將您的輸入或輸出資料混合在一起,即使您沒有出現故障,事情看起來也會破裂。

我可以擴充套件列表,但這些將是破壞我自己的外掛的關鍵專案。這兩個專案可以說是單元測試可以收穫的。接下來的兩個,如果你足夠耐心,但我認為 WP 不應該改變事情發生時的工作方式。沒有數量的測試可以解決 switch_to_blog() 的錯誤實施。而最後兩個是無可置疑的。

哦,還有… 甚至沒有讓我開始對附件,自動草稿,修訂,選單項的衝擊,以及什麼不是最後儲存在帖子表中。

祝你好運… :-)

次佳解決方案

你應該強烈地考慮 Selenium

它允許您記錄操作 (例如,將資料輸入表單,單擊連結),然後可以執行斷言。它還與 PHPUnit 整合。我強烈建議您檢視兩分鐘演示。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。