Chrome for Testing 是專為網頁應用程式測試和自動化用途設計的 Chrome 版本。本文將說明 Chrome 團隊認為有此需求的理由,並透過具體範例,說明 Chrome for Testing 如何協助開發人員。
背景
無論是手動或自動進行,瀏覽器測試都是打造優質網路體驗的重要環節。但同時,設定適當的瀏覽器測試環境非常困難,因此經常 回報為網頁開發人員最痛苦的痛點。
自動更新:對使用者來說很方便,但對開發人員來說很麻煩
Chrome 最顯著的功能之一就是自動更新。使用者很樂意知道自己使用的瀏覽器版本是最新且安全無虞,而且隨時都能享有新版網頁平台功能、瀏覽器功能和錯誤修正。
不過,如果您是執行一連串端對端測試的開發人員,可能會有完全不同的看法:
- 您希望重複執行測試時,都能獲得一致且可重現的結果,但如果瀏覽器可執行檔或二進位檔在兩次執行之間決定自行更新,可能就無法達成這個目標。
- 您想固定特定瀏覽器版本,並將該版本號碼簽入程式碼存放區,以便簽出舊版提交和分支版本,並根據當時的瀏覽器二進位檔重新執行測試。
如果瀏覽器二進位檔會自動更新,就無法進行上述操作。因此,您可能不想使用一般 Chrome 安裝版本進行自動化測試。這就是一般瀏覽器使用者與執行自動化測試的開發人員之間,最根本的差異。
版本化瀏覽器二進位檔
除了自動更新外,您可能也發現很難找到特定版本的 Chrome 二進位檔。Google 刻意不提供特定版本的 Chrome 下載,因為使用者不應在意版本號碼,而是應盡快更新至最新版本。這對使用者來說很方便,但開發人員必須在舊版 Chrome 中重現錯誤報告,因此會很困擾。
舉例來說,如果您想使用 ChromeDriver 進行瀏覽器自動化作業,就會遇到這個問題。您不僅必須以某種方式下載 Chrome 二進位檔,還需要相應版本的 ChromeDriver 二進位檔,確保這兩個二進位檔相容。
由於沒有好的解決方法,許多開發人員會改為下載 Chromium (而非 Chrome) 二進位檔,但這種做法有幾項缺點。首先,這些 Chromium 二進位檔無法在所有平台上穩定使用。其次,這些擴充功能是獨立於 Chrome 發布程序建構及發布,因此無法將其版本對應回實際面向使用者的 Chrome 版本。第三,Chromium 與 Chrome 不同。
解決方案:Chrome for Testing
為解決上述問題,我們設計了 Chrome for Testing,這是專為測試用途打造的 Chrome 版本,不會自動更新,並整合至 Chrome 發布程序,適用於每個 Chrome 版本。盡可能接近一般 Chrome 的版本化二進位檔,且不會對測試用途造成負面影響。
為建立 Chrome for Testing,我們對 Chromium 和 Chrome 程式碼庫進行了變更,並設定基礎架構,以便在所有管道 (穩定版、Beta 版、開發人員版和 Canary 版) 的 Chrome 發布程序中,建構這些二進位檔並上傳至公開可用的儲存空間。
Chrome for Testing 周邊的基礎架構,可望在 Chrome 以外的領域帶來有趣商機。舉例來說,只要將 ChromeDriver 發布程序整合到 Chrome for Testing 基礎架構,即可完全解決先前提到,難以找到相符的 Chrome 和 ChromeDriver 二進位檔的問題。除瞭解決使用者面臨的問題,這項做法也能讓 ChromeDriver 的發布時間與 Chrome 一致,並免除手動發布 ChromeDriver 的程序。