按此:現代工具和自動化測試在 WordPress 開發中的重要性與 Josh Pollock

已發表: 2022-05-12

歡迎來到來自 WMR 的 WordPress 社區播客 Press This。 在這裡,主持人 David Vogelpohl 與來自社區的客人坐下來討論 WordPress 開發人員面臨的最大問題。 以下是原錄音的抄錄。

由 RedCircle 提供支持

David Vogelpohl:大家好,歡迎來到 WMR 上的 WordPress 社區播客 Press This。 這是您的主持人,David Vogelpohl,我通過我在 WP Engine 中的角色支持 WordPress 社區,我喜歡每週為您帶來社區中最好的消息,作為提醒,您可以在 Twitter @wpdavidv 上找到我,或者您可以在 iTunes、iHeartRadio、Spotify 上訂閱按此,或在 wmr.fm 下載最新劇集。 在這一集中,我們將討論現代工具和自動化測試的重要性,尤其是 WordPress 開發,當然,並加入我們的對話。 我想歡迎 Josh Pollock 先生向我提問。 喬希,歡迎。

喬什·波洛克:謝謝。 謝謝你有我。 你好嗎?

DV:好,好。 我很激動。 讓你上節目。 我們在錄音之前談論過你是最多的,我相信所有 Pollocks 中最著名的 WordPress Pollock,對吧?

JP:與傑克遜·波洛克相比不太出名,但是是的,所以不是

DV:不像你那麼有名。 所以我認為你有傑克遜在那裡。

JP:對吧? 是的。 不過我是他作品的粉絲。

DV:啊,這很好學。 不過,對於那些正在聽的人,喬希今天要談一談。 Josh 來自幾個不同的領域,但特別專注於插入式機器。 我們將對此進行一些討論,但也會圍繞他關於為什麼現代開發工具和自動化測試對 WordPress 開發非常重要的想法進行討論。 因此,如果您是一名牛仔或女牛仔編碼員,Josh 將稍微談談為什麼另一條路徑可能會更好。 他最喜歡的一些工具以及如何使用您自己的 WordPress 開發項目進行自動化測試。 在我們開始之前,我想提醒大家,我知道你們可能在之前的劇集中聽說過這個。 2022 年 4 月 25 日,WP Engine 將舉行我們的虛擬解碼會議。 喜歡去看看。 了解有關各種主題的 WordPress 開發的更多信息。 您可以訪問 WP engine.com 上的活動 forward slash decode dash 2022 好的,喬希,我要問你我問所有客人的第一個問題。 你能簡單地告訴我你的 WordPress 起源故事嗎? 您第一次使用 WordPress 是什麼時候?

JP:是的,我可能是第一次使用 WordPress。 假設 2011 年 2012 年寫博客,比如在 wordpress.com 上,然後我喜歡用 Google 搜索如何做某事,他們就像將一些東西粘貼到函數 dot php 中。 所以我不得不喜歡遷移到自託管的 WordPress,而且我認為我真的沒有在那個博客上做過很多工作。 我真的被代碼部分分心了。 這讓我進入了 WordPress 社區,並像主題審查團隊一樣志願服務,然後我將在 pods 工作,這是一個類似於自定義字段和自定義帖子類型的插件,並且有一個 UI,我得到了一個在那裡擔任支持人員。 Scott Kingsley 卡,那裡的主要開發人員和其他所有人都非常支持並幫助我學習開發,我從那裡真正進入了插件開發。 這很酷。

DV:你是什麼時候第一次被你所說的代碼分心的,2011 年或 12 年是你嘗試創建博客的時候? 是不久之後還是?

JP:是的,是的,所以我一直使用 WordPress 2.7,我認為這是我工作的第一個版本。 我的意思是,我認為我使用的第一個版本,我認為我貢獻的第一個版本就像三個點。

DV:所以是的,2011 年這將是在自定義帖子類型之後。 因此,在 WordPress 中將是一個激動人心的時刻。 我確實認為我已經完成了 237 個奇怪的劇集。 你是第一個 wordpress.com 起源故事。 所以我認為你可能會和我這些年來採訪過的所有人都有區別,但是你從那裡開始的感覺很酷。 在博客圈。 然後很快就進入了開發方面,這真的很有趣。 那年早些時候我提到了插件機,你能告訴我們插件機做什麼以及你在那裡做什麼嗎?

JP:是的,所以這是我正在開發的新產品,你知道,我的意思是,這是我的,你知道,這是我的獨奏。 我現在正在構建的東西就像我現在是一名自由開發者一樣,故事的中間部分是我遇到了一些人,他們在一家圍繞它的公司工作了一段時間,他們正在通過豆莢開發一個稱為切割表單的插件。 然後我在 WordPress 領域做了幾份工作,現在我是一名自由開發者。 很多時候我都在為 WordPress 網站構建 WordPress 插件。 就像我不是你會去和喜歡的人一樣,我需要為我的業務建立一個網站。 就像我會為它構建很酷的功能一樣。 其他人會為我們建立一個主題或其他任何東西,並為我自己的項目,我一直掛斷我如何啟動這個插件? 就像我想擁有塊並且我想確保我正在使用 WordPress 腳本,例如用於編譯 JavaScript 代碼的新工具,包括 React 代碼和工作方式與 WordPress 兼容。 馬上。 這是 WordPress 的標準。 這就是他喜歡分叉我一遍又一遍地工作的最後一個項目的地方。

DV:這是所有偉大軟件的開始,不是嗎?

JP:是的。 所以這導致了我現在所說的插件機,它是一種可以做一些事情的工具。 首先,它有助於啟動插件,就像它使用依賴項中的所有正確命名約定創建您需要的所有代碼一樣,以執行諸如在依賴項中使用 Composer for PHP 自動加載器或為您的塊使用 WordPress 腳本之類的事情。 所有這些不同類型的東西。 這讓我有點痴迷於開發中錯誤的移動部分,自動化測試,創建正確的 zip 文件,其中包含您想要的所有正確文件,但不是您不想要的文件不想。 就像您想要安裝的測試一樣。 所以我正在記錄機器,這是一種用於啟動插件、向插件添加功能的完整工具,我需要添加一個塊和數據菜單頁面,然後創建可以進入 WordPress 站點的最終包版本。

DV:並提交插件開發框架。 我想如果我必須的話,就像只用幾個詞來形容它。 這公平嗎?

JP:那太好了。 我要把它寫下來。 不,不,這就是我喜歡播客的部分原因,就像你一樣你曾經有一個用戶界面,你可以點擊像我想使用自定義帖子類型,我想使用塊,然後當你在你的插件中時,你可以知道,輸入快速命令,如插件機,插件, zip grants,你口袋裡的一個 zip 文件。

DV:諸如此類的事情。 所以我喜歡它,當然,軟件起源於需要和習慣的方式,聽到插件機的起源故事很有趣,感謝你仍然堅持它,但有點出來,你重新採用本土方法,就像您從 wordpress.com 開始的旅程一樣,對,就像字面上沒有代碼類型的網站會很快進入更高級的開發。 因此,請幫助我了解我們的聽眾,甚至了解當您談論時,引用 WordPress 開發的現代工具這對您意味著什麼以及為什麼這很重要?

JP:是的。 因此,就我如何批准我正在接近的人而言,我是一個 WordPress 插件開發人員,你將成為 Web 應用程序開發人員,我說的是構建 WordPress 插件、自定義插件為您的網站。 這可能是一個獨特的插件,它做了一些不存在的事情,你知道,它以一些獨特而有趣的方式為你的業務擴展了 WooCommerce,或者人們正在開發的用於分發開源或銷售的插件。 所以當你這樣做時,你不知道,就像我開始構建插件時一樣,你好,懷疑,它只是一個文件。 你真的不需要任何特別的東西。 但是隨著它們的複雜性增加,您開始擁有自動依賴關係,您想要使用 WordPress 腳本打包器,您想要使用 WordPress 組件包,您將使用相同的輸入並選擇 Gutenberg 所知道的表單控件類型。 當你這樣做時,你開始需要一些可以自動安裝它的東西,比如 NPM 或 yarn,然後你需要一個可以自動運行構建過程的工具,以創建瀏覽器安全的 JavaScript、Web 腳本。 然後你開始進入我們所謂的自動化測試,我們正在編寫額外的代碼來運行我們的代碼,以確保它以正確的方式運行。 那裡有很多複雜性,我認為這很困難,因為您正在學習這些工具,並且您正在學習如何同時使用它們並同時學習兩件事

DV:這很有趣,因為聽到你描述它,在你談到現代到喜歡從,安裝包和處理依賴關係,然後運行你的測試套件時,對每一個項目符號都使用自動化這個詞。 似乎你知道,如果你還沒有完成這些工作,你必須同時了解自動化以及對你正在創建的軟件所做的事情。 我可以看到這對很多人來說是一個巨大的挑戰。 不過,我很好奇,比如那段旅程,也許人們如何能克服它。 我們要開始第一次休息。 我們馬上回來。 是時候插播廣告了。 敬請關注。 如需更多信息,請稍後按此。 大家好,歡迎回來在 W EMR 上按此 WordPress 社區播客。 我們正在與 Josh Pollack 討論現代工具和自動化測試以及 WordPress 開發的重要性。 Josh,就在休息前,你在解釋現代工具。 你有點瀏覽了它的關鍵組件列表。 在我們開始之前,您一直在強調自動化,並指出人們必須既要學習自動化方法,又要了解工具在做什麼。 那對你來說是個挑戰嗎? 當你開始採用這種類型的開發?

JP:嗯,是的,完全是。 在我是一個書呆子喜歡的人。 我討厭它的那一部分。 我很喜歡。 但是當我試圖寫一個功能時,當我的大腦處於這個空間時,我已經和一個客戶談過了,他們需要這個東西看起來像這樣然後去這裡。 我想喜歡編寫 PHP 和 JavaScript 代碼。 我不想編寫自動化測試設置或配置 NPM,即使我是那些東西的書呆子。 當我在做實際工作的大腦空間時,我不想處理它。 我參與其中,所以這對我來說一直是挑戰,因為我對兩者都感興趣,但就像每個人一樣,很難同時做到。 所以插件機對我和我以及像我這樣的其他人所做的,是我點擊幾個按鈕,然後我把所有的零件設置都設置為自動化。 當我說自動化時,我的意思是我可以擁有一個命令和設置本地開發環境的自述文件,並允許我在瀏覽器中查看它並運行測試我有 GitHub 操作,每次進行更改時運行不同環境下的測試,使用不同版本的 WordPress,不同的 PHP 版本。 自動檢查我的代碼是否與所有這些不同的東西交叉兼容。 因為這對 WordPress 來說是一個挑戰。 而我,作為一名開發人員,不必考慮那麼多,因為只需單擊幾下按鈕即可進行設置,然後您查看自述文件剪切並粘貼此命令即可完成大量工作。 這個人做了很多事情,讓你明白為什麼

DV:就像有很多額外的步驟,很多額外的東西讓你頭腦清醒。 使用一種現成的框架來拉近你的距離真是太好了。 但是,就像什麼為什麼一樣,為什麼要經歷所有這些麻煩來將引用現代工具集成到您的開發過程中。

JP:所以對於某些事情,這基本上是一個要求。 就像如果你想在 WordPress 中使用 React 來實現塊之類的東西,為你的插件構建一個很酷的管理頁面,擁有一個前端交互元素,你將需要使用正確的 WordPress 工具以一種方式編譯不會導致與 WordPress 站點中其他基於反應的組件的兼容性問題。 所以你越來越像你可能想要的那樣有效的需求,你可能有一個已經存在一段時間的插件,你需要做一些改變,但你不想打破已經存在的功能。 處理這個問題的最好方法是編寫自動化測試來描述它現在的工作方式,如果你做出的改變導致其中一個測試失敗,停止備份,你知道,修復那個錯誤而不是將它發送到你的用戶。 這是另一種情況,就像您一樣,您需要讓客戶滿意並擁有穩定的產品。

DV:好的,所以這並不是很有趣,因為最近在 WordPress 中對此進行了很多討論,正如我在 WP Engine 的一位同事 Rob Stinson 指出的那樣,WordPress 中的簡單事情變得越來越容易,就像塊編輯器和困難的事情變得越來越難,比如製作一個插件,你在那裡有一種觀察,你知道,一種比過去更先進的開發方法,甚至將反應很少融入使用它作為框架。 所以這確實是真的。 聽起來雖然好處是你的時間,特別是像自動化測試這樣的事情,因為你不得不重新編碼你運送的壞了的東西,我猜你也喜歡保留你的工作,如果你是運送,或者你的客戶,如果你運送,許多重大變化,並猜測這也是一種好處,就像有金錢上的好處一樣。

JP:是的,就像我是那台機器上的人一樣。 或者這是插件機背後的笑話。 就像我是瞬間的名字。 我不擅長一遍又一遍地做同樣的事情。 完全相同的方式。 對。 這就是我們使用計算機的原因。 就像我們就像,嘿,我會告訴你如何處理他。 我們稱之為代碼。 然後我們只是一遍又一遍地運行它,相信計算機會做同樣的事情。 一遍又一遍,以同樣的方式,所以這對我來說是我不想擔心如果我所做的改變發生了,所以我可以每次都以完全相同的方式手動測試它,正如我所說的那樣那是人為錯誤,或者我只有一個運行 48 的程序 而且我認為我們使 WordPress 插件和主題開發人員更容易進行自動化測試,而無需像,哦,我很樂意,但我沒有時間弄清楚如何設置它。 我越是那些對最終用戶來說容易的事情越穩定,對吧? 因為我們不僅希望 UI 更易於使用或更易於學習。 我們不希望這樣的人抱怨 WordPress。 你讓你的網站運行,然後你更新你的插件。 對。 就像這是每個人作為用戶級別都有問題的事情。 這不是我們可以直接為用戶解決的問題。 這是我們必須從我們測試的方式構建 WordPress 插件的方式來解決的問題

DV:所以最後期限總是像你的期望一樣。 比如你明天什麼時候想要這個? 對? 我認為沒有人不曾對我說過,哦,我們在六個月內需要它。 沒問題,對。 每個人都想要第二天的一切。 因此,團隊承受著這種壓力。 我只是好奇你如何看待編寫測試或測試套件,你知道,在給人們一種爬行,步行跑步,是否有一些關鍵領域或者你喜歡開始和喜歡,試著寫你喜歡的東西感覺是一個完整的測試套件,或者您嘗試在某些部分中挑選它,因為人們正在學習喜歡,您如何推薦? 像去完整的測試套件一樣解決它? 摘下一大塊然後這樣學習? 或者你如何看待那部分?

JP:這是一個很好的問題。 我有時會與人們進行這種諮詢,我喜歡查看他們的代碼,而不僅僅是設置自動化測試,還喜歡與他們一起指導他們應該測試什麼。 很多時候,這是阻礙人們前進的原因之一,他們對自己沒有任何測試感到內疚,然後他們就無法擁有完整的測試覆蓋率。 對。 我認為這是一種奇怪的處理方式,因為它就像,你還沒有做任何事情。 當然,你沒有事情的結果。 而且您還沒有編寫測試,您知道,測試但是測試很有用,即使它們沒有涵蓋所有內容。 我認為人們真正的焦慮是我無法獲得完整的測試覆蓋率。 如果我只是寫幾個測試。 就像,是的,但你已經離那更近了一步。 你已經開始了。 您有機會了解 Tesco 的運作方式,例如,我有一個為客戶編寫的插件,它添加了快捷方式。 就像這就是它所做的一切。 所以我寫信給它,它有你知道的,如果你沒有登錄,它會向你顯示關於登錄的消息。所以我寫了兩個測試,它們都只是調用在 make 中呈現短代碼的函數確保它不會引發錯誤。 這些是世界上最詳細的測試。 但是當我在那之後第一次提交它們時,我第一次編寫測試插件時,我遇到了一大堆錯誤,只是從運行這些測試開始,就像在生成短代碼的過程中一樣,我產生了大量的 PHP 錯誤我能夠解決這些問題並讓它們消失。 然後這給了我對未來的信心,如果某個短代碼的三個或四個不同部分中的一個會中斷。 你知道,那會通過測試。

DV:聽起來你是在考慮你創建的軟件的關鍵功能,識別這些關鍵功能,然後編寫測試。 圍繞這些開始,以隔離您的軟件問題可能出現的位置。 這是帶來他們的公平方式嗎?

JP:我會說是因為,是的,因為那是從兩個測試開始說有問題,比如非常好的測試覆蓋率。 您希望對每個單獨的部分進行一次測試。 的程序。 所以就像一個測試失敗了,你就像,好吧,這告訴我我需要在我的代碼庫中去哪裡解決。 也許您會到達那裡,也許這是開發新產品插件的一種方式。 但是,如果您有一項測試,您知道,您的簡碼可以確保您的博客能夠將其添加到帖子編輯器中。 確保您的表單可以提交並且沒有任何錯誤。 將來,當它們破裂時,它們涵蓋了很多內容,您知道,它們因特定原因而失敗。 然後是我喜歡的第二種類型,就像第一階段一樣。 第二階段是下一次有一個錯誤正確測試因為那個錯誤而失敗,然後一旦你修復了這個錯誤就可以通過,因為現在你在測試中有了更多的細節,你有證據證明你修復了這個錯誤並且你有防止將來再次發生的保護。

DV:我喜歡看到你在使用未來的袋子,因為它們會作為一種方式來增加更多的測試覆蓋率,當然還有最需要正確的領域正在打破的東西。 這是一個聰明的方法來產生一個很好的建議。 我想在這裡更深入地探討一下狂野西部編碼和 WordPress 的文化。 我們將進行最後一次休息,我們會馬上回來的。 是時候插播廣告了。 請繼續關注更多緊迫的問題。 歡迎大家回來在 WMR 上按此 WordPress 社區播客。 我們正在與 Josh Pollock 討論為 WordPress 開發人員提供的現代工具。 就在休息之前,我們談到了 Josh 是如何看待接近你的,這有點像編寫你的測試套件,首先關注最關鍵的功能。 我真的很喜歡你的建議 Josh 關於現在使用某種錯誤來增強你的測試套件。 我認為這真的很聰明。 你知道,WordPress 有一種牛仔女牛仔編碼的文化,如果你願意狂野西部得到你的雞巴也叫你看到自動化測試的文化開始紮根是不是像引用這樣的概念,事情變得越來越難,比如製作現代工具. 您還說了一個要求,但也提到了自動化測試的概念。 您是否覺得它在 WordPress 中紮根,或者您仍然覺得它就像您知道的那樣,五分鐘安裝和 10 分鐘網站?

JP:嗯,這取決於項目,對吧? 就像有問題一樣,當您可以插入 machine.com 時,它很棒 就像使用 WordPress 的一個網站現在真的在建立自己。 我沒有任何版本控制。 沒有客戶喜歡這樣的自定義代碼。 我喜歡修改成Hello Dolly。 對。 這就像現成的東西。 但是想想我以前在一家機構工作過。 他們所有的部署都是自動化的,對吧? 使用拉取請求工作流程將所有內容都檢查到版本控制中。 然後當您合併到一個分支時會自動部署該站點。 這變得更容易了,有更多的工具可以做到這一點。 如果您正在構建一個完整的站點,那麼您知道,還有更多的主機支持它,並且您知道,有記錄的方法可以做到這一點並獲得類似的自動化部署。 我認為這是很好的第一步,因為這是標準化該部分的機會。 然後在你知道的那個管道中,開始添加測試。 我認為越來越多的人正在這樣做。 而且,你知道,我今天早上早些時候使用 FTP 客戶端將文件拖到服務器上,因為有時這是唯一的方法。 嗯,我認為,是的,我認為它正在變得更好,但是,你知道,這對人們來說還不夠容易。 我認為不是,因為作曲家不是一個原生概念,也不是新聞集團,這使得它變得更加困難或 NPM。 我認為在這個領域還有很多工作要做。 就像我真的對這種方式非常感興趣。 如果我有更多的時間,我會認為鎮靜的問題不是。 適用於 WordPress。 鉛不是一個很好的工具。 它適用於整個項目,但就像它不能遞歸地安裝依賴項那樣的問題

DV:但是你的測試怎麼樣? 您是否像這裡的 IT 人員一樣使用您的測試,因為我覺得這對於許多嘗試採用現代開發的人來說是一個很大的障礙,就像,你知道,我可以使用什麼測試套件? 我可以使用哪些測試工具? 我只是好奇,例如,如果您對那些聽聽自動化測試和工具或 WordPress 測試套件或框架的人有任何建議,他們可以考慮

JP:嗯,所以對於 WordPress 開發人員來說,你所做的就像插件一樣。 您不只是使用 PHP 單元,它是 WordPress 插件的標準,用於 PHP 測試。 還有一些由 Yoast 開發的工具是開源的,作為其中的一部分,可以更輕鬆地使用 PHP 單元進行測試,並且這些工具都會在您的機器上自動設置。 然後是 JavaScript 玩笑,就像 React。 我的意思是,這是 WP 腳本的一部分。 這些是我使用的東西,但我也適用於可能進行站點開發的人,您可以使用 go students spectre 或 Checkley 等工具進行自動化測試,您可以通過瀏覽器擴展程序對測試進行編程。 然後你進入瀏覽器,你點擊記錄,然後你做一些事情,比如登錄你的網站並添加一個帖子或添加一個塊或類似的東西,然後他們可以在你的網站上運行,你知道的,每天一次或每週一次。 這是一種不進行代碼自動化測試的方法,你知道,擁有網站的人,他們是你知道的,當你的客戶向你發送消息並說,嘿,這個頁面壞了時,這真的很重要。 這不是開始與客戶互動的好方法。 最好說嘿,我們的自動檢查通知最後一次更新破壞了該部分,我們已經修復了它。

DV:我想到了這些年來我所做的所有現代工作流程劇集。 我不認為有人曾經介紹過這個概念。 這真的很聰明。 這太棒了。 喬希,非常感謝你今天加入我們。

JP:不客氣。 感謝您的款待。

DV:如果您想了解更多關於 Josh 的工作,也許可以擴展您自己的現代 WordPress 開發者之旅,請查看 pluginmachine.com 感謝大家收聽這個 WordPress 社區播客和 WMR。 這位是您的主持人 David Vogelpohl。 我通過我在 WP Engine 的角色來支持 WordPress 社區。 我喜歡每週在 Press This 上為您帶來最好的社區。