1. 程式人生 > >容器技術能為測試工作帶來哪些好處?以及對應的實踐經驗

容器技術能為測試工作帶來哪些好處?以及對應的實踐經驗

本週我們的討論話題有關於容器化: ## 討論話題 - **話題**:容器技術能為測試工作帶來哪些好處?大家工作中有哪些實踐經驗? - **話題描述**: Devops容器化已經成為當前測試工程師的標配技能,你目前的工作中有沒有哪些實踐經驗?你覺得為你的測試工作帶來了哪些好處?歡迎大家來溝通交流,發表你的看法。 本週的討論話題平臺上的小夥伴們都反應有點偏難了,但是我還是“抓”了鄭州兩家在容器化方面做的不錯的公司分享他們的經驗。 ## 大家討論分享的內容 ### 鄭州某線上公司—韓毅 其實容器技術其最大的威力就是結合流水線來去使用效果比較顯著,那麼結合測試人員的具體工作來說,通過個人經驗+對公司的相關同事進行定向調研後,結合使用經驗總結出產生的價值主要如下: 1. 從技術前瞻性來說 容器化技術作為雲原生四大體系之一已成為國際標準化技術標準,做為一名合格的測試人員顯然對docker原理及其常用的命令掌握顯得格外重要,同時也是其個人能力的體現; 2. 從DevOps交付流水線來說 我司DevOps流水線CI/CD能力由原有的依賴虛擬機器切換至k8s+docker的容器雲平臺作為依託,在這一轉變過程中: - 測試環境的日常搭建與維護效率提升比較明顯,如可以使用叢集的公共映象倉庫來一鍵搭建測試環境、遇到測試資源不足的情況可以直接一鍵擴縮容,不僅提升資源利用率 在專案需要壓測時,也可以根據不同的場景,快速擴容。 - 滾動釋出的優勢:傳統的虛機環境釋出模式在測試環境需要釋出升級時可能需要進行強制殺掉程序、停止服務後再進行測試,除非是有多個節點並行測試,容器化下可以實現服務滾動升級,在不停服下一遍釋出一遍測試,避免尷尬的 hard wait; - 最主要一點就是能夠通過流水線的容器化釋出能夠實現一次構建、多次部署,既解決了因環境不一直導致問題的出現,更主要是可以解決了不同環境的流水線都需要重複進行CI造成的時間和資源消耗,提升整體專案的交付效率; ~以上為個人的拙見,希望能夠拋磚引玉!謝謝! ### 鄭州某銀行—王偉亮 容器技術對測試的好處,個人總結如下: 1. 提升測試環境的穩定性。未使用容器,測試人員經常遇到的一個問題是,XX系統又訪問不了了。需要測試人員將問題反饋給開發或者環境管理人員進行問題定位和環境維護,環境穩定性得不到保障。使用容器後,容器的健康檢查機制,實時監控系統服務狀態,發現異常服務,容器平臺會按照規劃好的處理機制進行自維護,前端測試人員是無感知的,提升了測試環境的穩定性。除了健康檢查機制以外,容器的彈性擴容,解決了因伺服器資源不足引起的測試卡頓問題,在效能方面保障了測試環境的穩定性。 2. 提供隔離測試環境。測試人員應該遇到過這樣的問題,舉例:在A環境的前臺系統測試了一段時間,發現做的交易都發往了B環境的後臺系統,導致測試無效。原因可能是前臺系統的配置檔案錯誤導致。容器的租戶使用了namespace(名稱空間),即同一租戶下網路相通,不同租戶間網路是隔離的。如果按環境維度劃分租戶,即可杜絕上面的問題發生。即使配置檔案配置錯誤,在服務啟動或者做第一筆交易的時候就會報錯,因為A、B環境的網路是不通的,而不會在測試一段時間後,才發現環境配置錯誤,容器可以保障各個測試環境的獨立性。 3. 消除環境差異。測試人員經常遇到的一個問題,測試發現一個bug提給開發,開發拒絕,原因可能是環境問題,同樣的程式碼版本,該bug在A環境下可以復現,在B環境不能復現。因為部署版本中不包含基礎環境,有可能是2套環境的軟體版本或者環境變數不一致導致。容器解決了環境差異,因為容器部署的物件不是程式碼版本而是映象,映象中不僅包含程式碼版本,還包含了系統執行所需的基礎環境,使用同樣的映象版本進行測試,不會存在環境不一致的情況。容器消除了環境差異,降低了環境類bug。 4. 提升測試環境交付速率。在測試環境搭建方面,容器比傳統物理機或者虛擬機器上搭建環境速率更快。1個系統手工搭建測試環境可能需要1-2天,容器搭建1h左右即可完成;在版本同步方面,因為容器採用“一次構建多次部署”,所以節省了應用構建時間。大大提升了測試環境交付速率,節省了測試人員的等待時間。 ### 江蘇某公司自動化測試工程師—武韜 在之前搞cicd的時候,基本所有的工程都用到了docker,好處主要有以下幾點: 1. 環境隔離,不同的任務執行在不同的容器中,互不干擾。 2. 多樣化,docker能提供不同的作業系統映象,無需使用多臺不同系統的機器,降低了使用成本。 3. 方便移植,直接把容器打包帶走,或者放到映象倉庫,後面重新部署的時候就可以開箱即用。 4. 便於管理,使用k8s或者docker swarm能夠很輕鬆的編排容器,快速搭建環境或者執行任務。 ### 某公司測試工程師— 呂俊傑 好處是可以接近完美的做到環境隔離和方便部署,弊端是維護成本和硬體成本以及外部依賴處理起來比較麻煩。 ### 我的觀點 我對容器化的理解還停留在對docker的簡單實用上,所以上面大家提到的:環境隔離等我沒有實際的經驗可以分享,不過最近我正好在搞selenium grid,我覺得用docker去搭建hub和node真是相當方便,直接拉取映象,然後執行映象就能將selenium grid搭建起來,所以從這個角度看,容器化能夠提升我們的工作效率。 另外是結合我們公司目前的服務端上線方式,通常將跟環境有關的配置和映象分離開,這樣的好處是上面大家提到的:一次編譯,多次部署。比如:然後我們在驗證rc環境功能時,構建一次,驗證通過,真正上線時就直接用之前構建好的映象就可以了。 ## 總結 容器化應該變成每個工程師必備技能,只有熟悉起來,才能在平時的工作中尋找更多的場景。我後面為大家整理容器化相關知識點,比如:docker的使用/原理、如何環境隔離等。 做個小小的宣傳:每週一個測試行業話題,在微信圈子(測試開發進階訓練營)、知識星球(測試開發技術圈)歡迎大家加入進來進行討論。一起成長,一起