測試左移與提測流水線的應用實踐
一、測試左移的背景
在QA方面,測試自動化是一種行之有效的方法,可以讓業務測試更加便捷,減少任何形式重復勞作和返工測試,提高輪次測試執行效率。目前自動化已在迭代應用中進入收益階段,不僅在回歸階段代替手工回歸測試,將自動化作用價值體現最大,也讓自動化提前介入需求測試分析中,做到“測試左移”。
今年第一季度團隊已提前試點“測試左移”,將自動化提前納入需求測試分析階段,在研發提測節點按需完成自動化左移。但是光從口頭上說“測試左移”,也不能印證自動化左移的數據,以及左移帶來的實際收益和價值,現階段平臺側將 RDC(Research and Development Collaboration / 研發協同平臺,得物技術部自研的一套項目管理工具)、協同面板、流水線、用例平臺、自動化平臺五方聯合,共同搭建出測試左移的全鏈路操作。
測試左移的本質:越早的發現不合理的地方,出問題的幾率就越低。
二、測試左移的收益和價值
測試左移是軟件研發生命周期過程中的測試策略,將問題進行早發現早修復,并且節約修復成本。同時測試左移的落地實踐,也是推行需求研發自測的實行過程中的關鍵步驟。測試左移的節點在“需求提測之前”。
測試左移的收益
- 早期發現和修復缺陷:測試左移可以幫助研發在需求開發過程中早期發現缺陷,并及時修復,避免測試后期對缺陷的修復成本和影響。
- 提高測試覆蓋率:測試左移可以幫助早期識別測試用例,在測試分析和測試用例編寫階段提高需求測試場景用例的覆蓋率。
- 優化軟件設計:測試左移可以提前介入研發代碼設計,加強與研發團隊的溝通協作,了解代碼接口邏輯實現細節,使測試的執行更具有質量和效率。
- 提高測試效率:測試左移可以前置介入左移方案設計和編寫,提升測試階段左移用例執行效率,降低手工投入測試成本。
測試左移的價值
- 減少測試的回歸周期、減少人工測試投入成本;
- 提高產研測三方的高效溝通和協作,讓測試更加融入到開發過程中;
- 提高軟件整體質量,避免需求上線發生故障。
圖片
三、持續集成之流水線
什么是流水線?
圖片
流水線的類型
全流程流水線
- 感知應用服務的代碼變更,融入需求測試輪次節點特征,自動構建部署應用服務發布,減少人工 check 投入成本
- 流程:
研發本地代碼提交至 Feature 分支:Feature 分支觸發 Push 流水線;
Feature 分支提 MR 進 Release-{Version} 分支:Release-{Version} 分支觸發 MR 流水線;
MR 通過:Release-{Version} 分支觸發 Push 流水線,自動檢測代碼檢查、構建、部署。
圖片
現階段流水線不再需要針對每個服務每個流水線類型做配置了,可以通過流水線模板降低流水線配置的操作費力度。
- 內置流水線模板:內設五種流水線模板,無需額外配置操作,開箱即用;支持特殊倉庫自定義;
- 自動適配迭代:開發分支自動適配開發迭代染色環境,迭代分支自動同步一輪、二輪染色環境(無二輪環境的統一使用一輪環境)。
Push 流水線
開發分支代碼變更后自動構建部署到需求對應的染色迭代開發環境,Push 流水線主要的作用:
- 代碼提交后即時進行構建檢查、代碼掃描,提前發現代碼問題;
- Push 后自動構建部署到開發分支對應的染色環境(若無則不觸發),為開發過程提效。
圖片
MR 流水線
- MR 流水線主要的作用為:
合并前:作為代碼門禁卡口,構建檢查、增量代碼掃描問題;
合并后:觸發 Release-${Version}/Release 分支流水線進行自動構建部署到迭代染色環境。
- 運行方式:
圖片
提測流水線
- 協同面板提測流程增加提測流水線,需求關聯的后端應用自動觸發;
- 執行方式:
在協同面板進行需求提測時,針對需求關聯的應用創建染色環境執行提測流水線;
基于 Release-${Version} 迭代分支運行,運行結果反饋在協同面板;
提測流水線運行任務節點:構建、部署、自動化測試、代碼掃描、Jar 包掃描、安全掃描。
圖片
Daily 流水線
- 基準 Daily
運行環境:基準環境(T1);
運行分支:Release 分支(生產環境 Commit tag);
運行方式:只運行基準環境的集成自動化測試,用于 Case 穩定性驗證(目標成功率100%)。
- 迭代 Daily
運行環境:開發周一輪染色環境、測試周一輪染色環境;
運行分支:Release-${Version}/Release 分支;
運行方式:用于迭代分支的自動化檢查,及時發現迭代分支代碼質量問題。
流水線的使用
圖片
四、測試左移之自動化左移
關于“測試左移”,想必會有幾個問題大家想要了解。什么是左移、什么是自動化左移、什么節點算左移、左移的標準是什么、左移的數據結果如何衡量,下面我們來看看思路和方案。
什么是自動化左移?
什么節點算左移?
圖片
左移節點
- 提測左移:服務端研發操作提測時;
- 迭代左移:迭代時間范圍內。
左移的標準是什么?
提測左移
- 需求在服務端研發點“提測”之前;
- 需求測試用例下有關聯自動化用例;
- 關聯的自動化用例狀態必須是:“上線”。
迭代左移
- 迭代時間范圍內;
- 需求測試用例下有關聯自動化用例;
- 關聯的自動化用例狀態必須是:“上線”;
- 關聯的自動化用例必須是:“執行過”(在自動化測試計劃中執行過)。
Q:若需求是跨版本,怎么辦?
A:用例平臺的用例模塊支持可移動,在模塊移動的時候平臺自動更改版本號,同時用例平臺告訴自動化平臺版本號的變更。
左移數據結果如何衡量?
圖片
提測左移的數據指標衡量會在星盤平臺輸出對應的結果數據。
- 星盤:迭代維度,查看域/子域的測試左移;
迭代左移的數據指標會在自動化平臺輸出對應的結果數據;
- 自動化:迭代/時間范圍維度,查看域/子域/人的測試左移。
五、自動化左移規范
自動化編寫
編寫規范參考:【接口自動化】平臺應用規范。
圖片
關于提測左移的自動化,編寫實施步驟:
圖片
提測分支合并
- 是(已合入):允許提測;
- 否(沒合入):不允許提測。
流程:協同面板--->子域/版本號--->需求“開發”節點--->提測
圖片
圖片
提測自動化
提測自動化配置:
- BVT 主流程:子域業務模塊核心 BVT 主流程自動化測試計劃;
- 需求左移:提測時,自動檢索需求用例目錄下是否有自動化上線 Case(無需配置)。
BVT 主流程:
- 執行 Case:研發提測時間,觸發業務域 BVT 主流程自動化;
- 執行環境:迭代 Round-1 染色環境;
- 執行目的:保證研發 Feature-xxx 分支合入 Release-{Version} 分支后對業務域的主流程是否有影響。
需求左移:
- 執行 Case:研發提測時間,觸發業務域需求自動化;
- 執行環境:需求染色環境(自動創建);
- 執行目的:需求維度自動化 Case 是否受需求提測影響而失敗,判斷是否是腳本問題還是代碼問題。
提測分析
提測自動化執行失敗,是否會影響研發提測進度?
- 不會?,F階段不會卡研發提測進度流程。
提測自動化執行失敗,可以提缺陷嗎?
- 可以。失敗分析后定位出是研發代碼缺陷,直接提 RDC- 需求缺陷,缺陷階段=測試冒煙。
六、總結與下一步規劃
自動化測試左移是從之前傳統的后期繼承測試階段提前至開發階段的策略,通過在開發過程中引入自動化測試,在逐步提高測試效率,減少測試過程中的缺陷發生。我們將自動化測試與持續集成和持續交付相結合,實現了快速、頻繁的測試和交付,減少了開發和測試之間的時間間隔,提高了產品質量和交付速度。
在自動化測試左移的基礎上,我們將進一步完善和優化自動化測試流程,以提高測試的覆蓋率和質量,擴大自動化測試范圍和持續監控和優化,提升自動化測試范圍,并且再進一步提高測試效率和質量。