在軟體開發生命週期中,持續整合和持續交付(CI/CD)管道中整合的自動化測試對於確保軟體品質至關重要。自動化測試有助於快速發現錯誤,減少手動工作量,並提高測試的準確性和覆蓋範圍。在CI/CD管道中,自動化測試通常在建置完成後、部署程式碼之前進行,包括單元測試、UI測試和整合測試,可以並行運行以加快執行速度。整合測試在CI/CD管道中尤其重要,因為它可以測試應用程式元件之間的交互作用並驗證系統的整體功能。
在上一篇文章中,我們討論了敏捷團隊自動化測試案例的各種用例。其中一種情況是,團隊希望將測試與每個建置集成,並將持續整合作為建置流程的一部分。
在本文中,我們將討論持續整合/持續交付平台中的整合測試。
讓我們先從基礎知識開始。
什麼是自動化測試?
軟體測試是指根據一組測試案例執行測試,並將實際結果與預測結果進行比較。在此過程中遵循幾個步驟和測試技術。測試對於確保產品品質至關重要。此過程通常由測試人員團隊手動完成。然而,在自動化測試中,該流程是使用軟體工具和技術實現自動化的。在這裡,不再需要手動操作,而是自動建立腳本並執行測試案例。自動化測試消除了人為錯誤、覆蓋範圍等許多問題。它還節省了時間,提高了進行測試的便利性,並提高了效率和效果。
CI/CD 管道中的自動化測試
自動化測試是CI/CD 管道的核心部分,因為快速運行的測試可以為開發人員提供早期回饋。及早發現的問題或錯誤有可能及早修正。因此,發布的產品將更加準確且無錯誤。這提高了產品的整體質量,從而贏得了客戶的滿意度。簡而言之,CI/CD管道中自動化測試的優點如下:
符合「快速構建,快速失敗」的CI/CD 理念
減少手動工作量,從而節省時間並減少出錯的可能性。
隨著測試案例數量的增加,測試結果更加準確,並且可以覆蓋更廣泛的區域。
立即獲得任何問題的回饋
可以產生並比較多個測試結果,以確保品質和一致性
#CI/CD 管線中使用的自動化測試類型
#單元測試:這是在模組編碼和審查後進行的低階測試。測試用例旨在測試各個組件。目的是確保每個組件在任何情況下都能按預期工作。
整合測試:整合是指測試應用程式內元件的交互作用。該測試是在所有模組都經過單元測試後進行的。主要目標是測試模組介面並檢查當一個模組調用另一個模組的功能時參數傳遞是否有錯誤。
系統測試:測試旨在驗證完全開發的系統並確保其符合需求規格文件。通常,在此階段,軟體已準備好供潛在用戶使用。這些類型的系統測試稱為 alpha(由組織內的開發團隊執行)、beta(由選定的一組使用者/客戶執行)或驗收測試(由使用者/客戶執行以確定交付的接受情況)系統)。
什麼是持續整合和持續交付?
簡而言之,持續整合允許開發團隊將他們的程式碼整合到共享儲存庫中。這有助於維護程式碼品質並儘早識別本地版本代碼的潛在問題。
持續交付通常也稱為「持續部署」。開發團隊不斷合併的所有內容都會不斷部署到實際環境中。
由於大多數開發人員都是並行工作的,因此不斷地將他們的程式碼整合到一個儲存庫中意味著主分支會不斷更新新功能。為了確保程式碼品質不會因如此快速發生的變化而受到影響,測試必須以相同的速度進行。
毫不奇怪,在這種環境中進行手動測試並不是實現這一目標的最佳方法。自動化測試是 CI/CD 管道中成功測試的關鍵。
9 個持續交付階段
開發:開發人員根據專案需求或功能請求建立程式碼。
編寫測試:一旦寫了程式碼,就需要寫測試。此時,這些測試通常是開發人員編寫的單元測試。
本地測試:然後進行本機測試,以檢查所有測試是否通過並確保程式碼不會中斷。通常,將百分比設定為運行的測試需要滿足的通過率。
Rebase和解決衝突:在實際的開發場景中,會有多人合併他們的程式碼。開發人員需要確保他們的分支始終更新。用最新的合併程式碼更新分支稱為「變基」。一旦重新定位,可能會出現一些需要解決的衝突。之後,針對重新調整基礎的程式碼再次執行測試。
提交:測試通過後,程式碼就可以提交所有變更。
建置:然後將開發的原始程式碼組合起來建置可以在實例上執行的部署工件,例如環境位於本機的伺服器上。此程式碼現在已準備好部署到不同的測試環境。
UAT:然後將程式碼部署到測試伺服器,測試人員開始測試該功能。這些測試可以是自動化的,也可以是手動的。
合併:如果正在測試的提交得到測試人員的批准,則會合併到主分支。
生產部署:合併程式碼後,就會部署到生產中。
開發人員編碼的每個建置都需要完成上述過程。
自動化測試在 CI/CD 管道中處於什麼位置?
理想情況下,一旦建置階段完成並且可以部署程式碼,就會發生自動化測試。單元測試、UI 測試和整合測試都可以在這個階段運行。這些測試有助於確保代碼符合品質標準。
此階段可能持續幾分鐘到幾個小時,具體取決於自動化的架構方式。
測試可以並行運行以更快地執行它們。如果程式碼在測試階段失敗,則可以拒絕構建,而無需進一步投入任何手動測試時間。
用於 CI/CD 的工具
Jenkins: Jenkins 是一個持續整合的開源工具。它可以免費使用,並且可以透過介面和腳本配置作業。
Travis CI: 工具對開源專案免費,由 GitHub 託管。
Gitlab: Gitlab 是一個版本控制工具,擁有自己的基於雲端的 CI 方法。它受多個平台支持,有免費和付費版本。
Bamboo: Bamboo 是 Jira 的 CI 工具。如果您的組織使用 Jira,那麼檢查一下這個工具將會很有幫助。它還支援票證批准時的自動合併。
CI/CD 管道的最佳實踐,以充分利用測試自動化
增量變更:始終建議遵循逐個功能的方法。如果功能確實很大,最好將其分解為更小且測試速度更快的功能。這對於自動化很重要,因為如果出現問題,更容易找出根本原因。如果您的承諾太大,那麼找出問題的原因將是一項艱鉅的任務。
確定什麼可以自動化:團隊快速潛入並說「讓我們自動化一切」是很常見的,但這是一個常見的錯誤。我們必須了解自動化的目的並確定應該自動化的測試案例。
並行測試: 測試應該並行運行,以使測試更有效率和及時。它可以大大減少運行測試所需的時間,從而更快地給出結果。但僅僅並行執行這些測試是不夠的;擴展運行測試的伺服器大小也很重要,這樣才能真正提高測試速度。
結論
自動化測試是成功部署專案同時維持品質標準的重要組成部分。確保在每個階段都執行測試可以使程式碼品質具有良好的透明度。可以在早期發現錯誤,並且可以及時解決可能由錯誤引起的任何延遲。擁有整合測試的 CI/CD 管道有助於加快測試和部署流程。
以上是CI/CD 管道中的自動化測試:類型和階段的詳細內容。更多資訊請關注PHP中文網其他相關文章!