基于敏捷模式的分層自動化測試體系建設與應用
隨著敏捷開發模式在IT領域有越來越廣泛和深入的應用,測試團隊也被要求能適應快速迭代、快速響應的敏捷開發模式,實現研發全過程和上下游團隊的高效協作。為適應敏捷開發模式,德邦證券于2018年開始構建DevOps體系,并配套研發了DevOps智能云平臺。信息技術部測試團隊也隨之開始從傳統測試流程向穩態和敏態并存的測試模式轉型。首先,測試團隊對測試服務平臺做了整體規劃(如圖1),通過測試管理平臺、自動化測試、質量管理和技術賦能四大部分,輸出測試團隊可提供的測試服務,推動IT團隊的敏捷化,最終實現IT團隊的整體業務目標;其次,通過引入測試敏捷化概念,輔以敏捷化的開發測試流水線,強調以業務價值為核心,實現從代碼管理、質量檢測、自動化構建、接口自動化測試、UI自動化測試的一體化流程的建立,以及相應的實現測試需求管理、測試版本管理、測試環境管理、測試數據管理、測試用例和執行結果管理、測試報告自動化生成的全鏈自動化測試流程。
其中,基于敏捷模式的分層自動化測試體系是整個服務平臺規劃的重點和亮點。測試團隊分別對敏捷測試流程、持續集成、分層自動化測試以及相關工具進行研究和探索,在DevOps智能云平臺實現測試流水線,并結合德邦證券現有IT團隊的狀況和研發流程進行實踐。

圖1 德邦證券測試服務平臺整體規劃
建設過程
德邦證券信息技術團隊主要的項目類型包括外購研發類項目和自主研發類項目。外購研發類項目一般有明確的驗收需求,適合穩態研發模式。測試團隊以明確的測試需求為驗收依據,按照傳統的測試體系,出具測試計劃、驗收測試用例、執行、給出測試結論和缺陷清單。自主研發類項目一般需求按迭代規劃,循序漸進的方式完成,但每個版本的迭代要求響應時間短、版本迭代快速,適合敏捷開發流程。目前,外購研發類項目和自主研發類項目并存,且在公司“成為全球領先的科技投行”的戰略愿景引領下,德邦證券科技條線上下正積極推動數字科技創新,打造自主知識產權產品序列,故而自主可控產品的研發需求日益增多。這就要求測試團隊既能適用原有開發模式的測試需求,又能適應快速迭代、快速響應的敏捷開發模式,基于敏捷模式的分層自動化測試體系建設勢在必行。
引入測試敏捷化價值觀
引入《雙態IT聯盟-測試敏捷化白皮書》中對測試敏捷化的定義,是指在與軟件生命周期所有交付品質相關的活動中,通過對組織、文化、流程、技術等要素進行優化與改進,使得測試能夠貫穿于研發全過程,并與上下游團隊高效協作;能夠在業務與技術水平上持續提升,達到自我驅動、靈活賦能、快速交付、高效穩定的最終目標。
測試團隊積極創新,打破組織壁壘,引入測試敏捷化價值觀,研發團隊融合協作,協同交付,軟件測試全線貫通三個階段,通過測試左移、右移,實現測試在軟件工程全生命周期的參與。
上線敏捷測試流程
整體研發基本業務流程圖如圖2所示,藍色部分對應了敏捷管理部分,紅色部分對應了開發流水線部分,綠色部分對應了部署流水線部分,黃色對應了測試流水線部分。

圖2 敏捷模式下研發基本業務流程
在目前已有的敏捷開發模式下的項目中,測試團隊通過參與每個迭代的需求討論和評審以及沖刺會議,進行測試需求的分解、測試設計的分層設計,實現接口自動化測試、UI自動化測試的分層自動化測試,實現測試職能左移來支持軟件產品的快速交付。
搭建分層自動化測試體系
1.匹配有效的管理機制。引入分層自動化測試,除了自動化測試工具建設還需建立有效的管理機制,建立自動化測試用例庫,通過標準的自動化測試流程,對軟件系統業務邏輯進行自動化的基礎功能驗證,確保在系統升級或變更后能快速全面地進行冒煙和回歸測試,持續快速地提供質量反饋,目前已在信息技術部研發類項目中普遍使用。
2.保證持續快速的質量反饋。根據測試團隊的實際情況,通過測試設計的分層,將手工測試、接口自動化測試、UI自動化測試分層,每一層按照不同的測試對象對應了不同的測試需求、測試方法和策略執行。分層和實施的具體策略:接口自動化測試在自動化測試分層中所占比例最高,投入最大,主要覆蓋所有穩定接口以及接口功能用例;UI自動化測試相對接口來說,穩定性低,投入成本高,主要運用于冒煙測試,回歸測試兩個階段,在自動化測試分層策略中所占比例較小,投入較小,主要覆蓋穩定功能的主流程以及重要功能用例的實現;而在實施上會考慮項目、模塊、用例的優先級,以及實施的難易程度,以功能覆蓋廣度優先,兼顧功能深度,并采用分期實施、持續迭代的方式,將調試完成的腳本納入版本庫,保證自動化測試用例在持續集成流水線中實時可運行,以此實現小步快跑,快速質量反饋。
實際應用
在目前已實現的DevOps智能云平臺中實現測試流水線,實現測試用例、測試計劃、測試執行和自動化測試的管理。制定自動化測試流程的實施流程和規范,在德邦已有平臺和流程的基礎上,實現敏捷管理、開發流水線、測試流水線和部署流水線的打通,需求、開發、測試全流程的統一管理平臺。
敏捷管理。引入敏捷開發流程,通過敏捷管理模塊,展示項目基本信息,整體排期,通過項目需求、任務、沖刺、看板、人員分配、問題管理、燃盡圖等管理項目的開發、測試進度情況,通過需求池、迭代規劃,版本發布情況等規劃整個項目管理過程,實時了解項目排期和運作情況。敏捷管理模塊,前端功能頁面定制開發,后端調用Jira接口的方式實現。
開發流水線。通過開發流水線模塊,實現代碼倉庫管理,包括創建代碼倉庫、拉分支、打標記、合并等。開發流水線模塊,前端功能頁面定制開發,后端直接調用GitLab接口的方式實現。
部署流水線。通過部署流水線模塊,實現持續集成,包括部署環境管理、靜態代碼檢測任務管理,應用部署管理,流水線作業管理等。部署流水線模塊,前端功能頁面定制開發,后端通過調用Jenkins接口,實現持續部署任務的調度。部署方式包括主機部署、容器部署。
測試流水線建設。引入測試敏捷化概念,實現從代碼管理、質量檢測、代碼覆蓋率統計、自動化構建、接口自動化測試、UI自動化測試的一體化流水線的建立,以及相應的實現測試需求、測試版本、測試環境、測試數據、測試用例、執行結果、缺陷和測試報告的管理和數據統計。
通過測試流水線模塊,實現測試管理,支持手工測試管理和自動化測試管理,能夠建立一種“流水線”作業模式。手工測試支持“需求管理-測試需求分析-測試用例設計-測試計劃制定-測試執行管理-缺陷管理-測試報告管理”完整的測試流水線。自動化測試能夠支持“需求跟蹤-自動化測試用例管理-自動化用例設計-執行-監控-缺陷管理-執行報告管理”等完整的自動化測試流水線。
測試流水線模塊,前端功能頁面定制開發,后端對接Jenkins和自動化測試工具,通過Jenkins直接調用Katalon、Jmeter、Python命令行來執行自動化測試,并對接各自動化測試工具獲取自動化測試結果的方式實現。
通過DevOps智能云平臺實現研發測試流程的一體化。將測試流水線和原來的敏捷管理和開發流水線、部署流水線打通,實現統一平臺的管理,使過程數據實時統計成為可能;通過測試管理的規范化和自動化測試流水線,提高產品過程質量,降低產品風險,并節省流水線中人工干預的時間。
價值突破
自2018年起,德邦證券測試團隊跟隨敏捷開發模式的推廣,開啟了轉型之路,即從傳統測試流程向穩敏雙態并存的測試模式轉型。轉型過程中,測試人員堅持以快速交付高質量并且符合業務預期的軟件為首要目標,強調跨團隊協同,強調測試無處不在,通過對整個持續集成&分層自動化測試的工具鏈的研究,實現從代碼管理、質量檢測、自動化構建、接口自動化測試、UI自動化測試的一體化流程的建立,以及相應的實現測試需求管理、測試版本管理、測試環境管理、測試數據管理、測試用例和執行結果管理、測試報告自動化生成的全鏈自動化測試流程。隨著整個流程的不斷發展和完善,敏捷測試已逐漸讓系統的可用性在頻繁代碼提交下也可以得到充分驗證;同時,軟件的集成周期和交付速度也在不斷進化,越來越靠近速度和質量“雙贏”的局面。
后續在平臺中,2021年德邦證券技術團隊正在持續充分挖掘各類測試數據的價值,建設分類評價的指標體系,結合能效提供相關量化指標,為分析和改進研發流程和測試流程提供度量標準,從而促進研發資源的合理分配和監控,整個研發效能和產品質量的雙提升,業務價值持續輸出。
(主要成員:陳凌云 李寧 洪佩雯 張鵬 陳炎 胡萬里 李宛哲)