不同于傳統的瀑布式開發,開發人員不再是“流水線上的工人”,DevOps更關注軟體開發人員和操作人員之間的有效協作,我們可以把DevOps看作開發、技術運營和質量保障(QA)三者的交集,
在理想的DevOps周期中,遵循著這樣步驟——由開發人員撰寫代碼,在QA環境中構建并部署二進制檔案,執行測驗用例,以穩定的集成流程將成果部署至生產環境當中,很明顯,這種方法非常強調構建、部署與測驗環節的自動化,使用持續集成(CI)工具,自動化測驗工具已經成為DevOps周期中的一種規范性因素,
敏捷測驗與DevOps測驗之間仍存在著不少細微差異,但熟悉敏捷開發人員一般能夠快速適應DevOps,事實上,敏捷原則主要體現在開發及QA迭代當中,但在運營領域則普及度不高,DevOps的核心,正是糾正這一差距,現在,DevOps不再單純強調持續集成,而更多強調“持續開發”,在流程中,撰寫出的代碼將被提交至版本控制系統,而后在生產環境中進行構建、部署、測驗與安裝,之后交付最終用戶使用,
由于整個環境與流程嚴格遵循標準化要求,各環節中的每位參與者都將因此受益,鏈內各項操作都以自動化方式進行,利益相關方能夠將精力集中在設計并編碼高質量的可交付成果之上,徹底擺脫構建、運營與QA流程帶來的負擔,從撰寫代碼、到提交代碼、再到生產部署以供最終用戶使用,整個周期被顯著縮短到3到4個小時之內,
DevOps中的QA角色
在傳統的軟體測驗中,QA人員會在指定環境中對已部署的build成果進行功能與回歸測驗,并投入幾天時間持續測驗,關注現有成果還有哪些問題,但這一切在DevOps當中都變得完全不同,比如,QA人員需要在DevOps周期內協同作業,保證所有測驗用例全面實作自動化,并獲得接近100%的代碼覆寫率;他們需要保證環境標準化,實作環境與QA框架間的自動對接;所有預測驗任務、清理、后測驗任務等全部自動執行,與持續集成周期保持統一,
DevOps要求交付鏈內的各項功能實作高度協同,這也意味著鏈內各參與者的角色定位有所變化,或者說開始相互融合,這為開發人員賦予了一定的部署權限,部署工程師可以將測驗用例添加至QA repo當中,QA工程師則負責提供自動化測驗用例,總體而言,鏈內的每位參與者都將為交付成果的質量與及時性負責,
DevOps與測驗自動化
為了實作這種強大的速度與敏捷性,最重要的就是實作測驗流程的全面自動化,確保其能夠在QA環境中完成部署并自動運行,為此,我們需要構建起專門的自動化測驗工具與持續集成工具,建立一套成熟的自動化測驗框架,借此快速撰寫出新的測驗用例,具體來看有以下幾點,
第一,需要為特定build挑選合適的測驗用例;第二,測驗執行在本質上應該遵循精益原則;第三,QA與開發人員需要當面交流,確定特定build中可能產生重要影響的具體因素,同時執行針對性測驗與健壯性測驗;第四,需要配置專門的代碼分析與覆寫率工具,確保能夠實作接近100%的代碼覆寫率;第五,回歸測驗的結果將很快過時,必須熟悉持續測驗這一全新理念,第六,需要明確指定與新功能相關的測驗策略,將臨時build交付給QA人員,QA人員創建測驗腳本并在臨時build上運行自動化測驗,直到代碼穩定性達到要求并足以部署至生產環境中為止,第七,所有測驗環境必須實作標準化,且部署流程必須全面自動化,第八,使用多種自動化技術,確保QA人員能夠在多種跨平臺環境(對于Web應用程式,則為跨瀏覽器)內運行自動化測驗,第九,并發執行測驗以縮短存活時間,這又將反過來促進DevOps的成功實施;第十,為每輪測驗運行設定退出標準,確保在將測驗結果反饋給流程后,由其做出明確的通過/未通過決策;第十一,在生產環境中部署代碼之前,需要報告并修復已發現的問題或嚴重bug,相關資訊通過同一事件鏈進行傳遞,
測驗之余,對應用程式監控的作業也不容忽視,QA人員還應及早發現問題并主動報告,在生產環境上設定監控機制以便在bug引發實際故障之前將其識別出來,還可以設定專門的計數器,如回應時間、記憶體與CPU利用率等,為最終用戶提供全面的洞察能力,舉個例子,如果在各個build中,登錄的平均回應時間逐漸增加,則后續build很可能因為回應時間過長而影響到最終用戶的實際使用體驗,
同樣的,QA人員還可以在生產環境中定期執行部分現有高優先級測驗用例,借此主動監控運行環境,此項策略可以捕捉到“偶發性”或者“無法重現”的bug,最終提升應用程式穩定性、增強最終用戶滿意度,同樣的,這些監控結果都能夠以豐富的報告形式自動收集并發布,如包括故障日志與螢屏截圖等多種形式,
總結
瀑布式流程讓位于V-Model,V-Model又被敏捷化取代,軟體開發理念就是這樣一代代快速更迭,毫無疑問,DevOps代表著未來,這樣一種持續改進周期,將讓軟體開發流程獲得全面的動態特性,我們有必要接納DevOps、理解DevOps并最終貫徹DevOps,以往的測驗概念仍然有效,將這些寶貴的經驗與自動化、特別是更高水平的自動化相結合,正是實作DevOps成功的核心前提,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/248917.html
標籤:其他
