原始碼如何在盤口模式飛鳥系統平臺從搭建第一行程式碼自動化端到端測試教程

TG_duotebb發表於2022-06-09

盤口在搭建時,尤其是飛鳥這類的原始碼【電報TG-duotebb】版權所有,禁止轉載。質量都是至關重要的,無論是為了確保你的產品的出色體驗和最少的錯誤,甚至是出於安全原因,而且眾所周知,好的程式碼伴隨著好的測試。與質量保證相關的測試層次結構是從單元測試到 E2E 測試,所以我們在同一頁面上——我將簡要介紹每一個,以及為什麼最終目標是實現對你的 E2E 測試產品。


單元測試位於金字塔的底部,因為它們聽起來就像是最小的獨立測試單元。這意味著你獲取你編寫的元件或程式碼片段,並將其作為獨立單元進行測試。該程式碼與軟體堆疊和系統中的任何其他內容完全斷開連線,並且測試將檢查它是否按預期執行,作為一個獨立的實體。

一旦我們完成了對程式碼的基本測試,我們需要更深入地研究程式碼,並使用更多上下文來測試程式碼,瞭解程式碼在堆疊中實際存在的位置,這就是整合測試的用武之地。整合測試是我們開始將我們的程式碼與其他模組和服務整合,以瞭解它在更現實的生態系統中如何執行和運作。雖然這些可以提供一些上下文,但它們仍然需要快速,因此它們實際上並沒有涵蓋所有場景,也根本沒有涵蓋使用者如何與你的產品互動。

雖然有些人會爭辯說單元測試是最簡單的測試單元,但有時你需要實際編寫模擬模組以確保程式碼實際工作,而使用整合測試你可以插入實際的現有模組。此時,你驗證在模擬和注入單元測試依賴項時的假設是否成立。所以這是一個折騰 - 但是這兩種測試型別通常會帶來與端到端(E2E)測試完全不同的挑戰。

E2E 測試可能是你需要對產品執行的最重要的測試。確保實現你試圖為終端使用者提供的核心業務和價值對公司而言至關重要。它涉及儘可能地模擬終端使用者,並確保產品按預期工作——考慮到許多因素:可用性、效能、使用者體驗等等。

E2E 測試通常涉及模擬終端使用者旅程,例如登入、將其與使用者現有環境整合、與之互動等等。由於要做到這一點並提取現實結果涉及很多事情,因此許多公司選擇手動執行此操作。

公司通常僱傭 QA 團隊,其唯一目的是在測試環境中啟動產品,並像普通使用者一樣使用產品。然而,公司很快就會發現,他們需要以更快的速度和更大的規模來完成這項工作,而 QA 和工程團隊之間需要反覆來回打票,這是一個乏味且令人厭煩的過程這在很大程度上只會讓工程師感到沮喪。

所以他們決定通過建立一個測試自動化團隊來自動化測試。

在 Diversion,作為一家早期創業公司,我們需要我們所有的工程師都專注於編寫出色的程式碼,以快速實現我們的產品釋出目標。然而,我們知道我們不能在質量上妥協,所以我們從第一天開始就著手設計一個自動化 E2E 測試的解決方案。我們將向你介紹我們如何使用 Docker Compose、RPyC 和 Puppeteer 構建和自動化 E2E 測試框架。

自動化所有測試

開發人員應該快樂並享受他們的日常工作是我們理念的核心。然而,作為工程經理,開發人員最常見的痛苦來源之一是我們無法妥協的測試。

自動化是消除所有流程中的人為錯誤、簡化可重複流程並消除手動測試痛苦的好方法。我們明白,如果我們投資於測試自動化的技術設計,我們將能夠從我們的工程師那裡卸下這個負擔。此外,通過自動化我們的 E2E,我們的工程師對我們的產品產生了更高的滿意度和所有權,他們專注於打造出色的產品,並在最大限度地減少摩擦的同時內建質量護欄。

然而,自動化你的產品的端到端使用者體驗是相當具有挑戰性的。我們需要確保測試涵蓋端到端使用者流鏈中的所有關鍵部分以及他們將執行的典型操作,例如:

登入並在網頁中輸入憑據,檢查檔案系統操作,例如建立檔案、寫入檔案然後將其移動到某處,使這在多臺機器上並行發生,並使這些機器能夠相互通訊。最重要的是,我們需要能夠相信結果的準確性。


堆疊

在對我們需要設計和構建的內容進行了一些研究和理解之後,我們選擇了Docker Compose、RPyC和Puppeteer作為我們的測試自動化套件。我們的 E2E 測試的技術棧完全獨立於我們為我們的產品選擇的棧(我們將在另一篇文章中深入探討),它可以與任何能夠執行 Docker 和 Docker Compose 的產品一起執行他們的環境。

我們選擇了 Docker Compose,因為該服務需要啟動多個主機並相互通訊。Docker Compose 為此提供了一個方便的解決方案,因為它預設為你的應用程式設定一個單一的平面網路。這意味著服務的每個容器都加入預設網路,並且該網路上的其他容器可以通過與容器名稱相同的主機名訪問。Docker Compose 也是生態系統中非常流行的工具,因此很容易與其他流行的 CI 工具(如 Github Actions)整合和執行它。使自動化真正易於設定。

RPyC 使我們能夠從單個指令碼執行測試場景,因為一臺主機可以控制參與測試指令碼的其他主機。我們的大部分後端程式碼都是 Python,所以這對我們來說是一個明智的選擇,因為整個團隊都對此感到滿意。RPyC 還使我們能夠在測試場景中執行我們需要的任何隨機操作,例如執行任何二進位制檔案。

Puppeteer 是 Chrome 的自動化工具,可讓你控制網頁,並能夠單擊按鈕、填寫表單和執行其他基於 Web 的操作。當你開始使用Diversion CLI時,登入過程會將你從終端帶到網頁進行身份驗證。然後,它使用程式碼交換流程 ( RFC7636 ) 的證明金鑰從伺服器獲取憑據。Puppeteer 使我們能夠模擬執行 Web 登入過程的使用者。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017861/viewspace-2899603/,如需轉載,請註明出處,否則將追究法律責任。

相關文章