得物商家域精準測試實踐
一、背景介紹
由于多個域共建情況比較多,一方面應用隨業務發展在不斷擴展,各個應用代碼復雜度會不斷增加,如何準確、全面判定代碼修改影響范圍會越來越重要,另一方面共建過程中如果不能準確預估出各域共同改動所帶來的影響面,就會存在測試遺漏;如果各域信息不對稱可能會存在一方改動另外一方無感知,導致評估不到位帶來一些影響。基于以上背景商家域引入精準測試平臺實踐,可以幫助QA掃描出每個版本開發改動的接口范圍,并且可以有效地提高測試的覆蓋率和可靠性。
基于第二季度在商家地址專項上探索實踐了精準測試并取得了一定的收益;第三季度擴大規?;瘜嵺`,因此根據商家核心業務需要,選擇了核心的 4 個應用,并沉淀了持續幾個迭代的過程和結果數據。以下是幾個迭代下來使用精準測試平臺的一些實踐數據和心得。
二、商家域精準測試實踐測試流程圖
測試流程圖
圖片
精準測試實施計劃
精準測試應用節點
提測之后,冒煙之前:
- 根據測分文檔改動的服務,去拉取確認改動范圍;
- 跟開發確認改動接口是否合理,給測試明確測試范圍;
- 確認平臺的精準度;
- 確認需要補充自動化的清單;
一輪測試完成之前:
- 針對改動接口的自動化進行執行,通過率達到100%;
- 確認改動服務覆蓋率75%。
精準測試的貢獻度,引入前后的差異
- 確認改動接口范圍,明確測試范圍;
- 新增未完成自動化的改動接口,精準獲取改動接口自動化執行結果;
- 提高服務和需求維度的代碼。
三、商家迭代數據
正向收益
豐富用例
協助我們補充測試場景和用例,合并代碼或人工評估不精準導致,避免漏測。
實例1:迭代中通過推薦的接口發現有影響某一個接口,技術方案未體現有改動,改動一行代碼,改動接口有過濾審核單邏輯,需要加入回歸場景,推薦出 1 個未評估到接口,其余推薦出正常新增及修改接口。
影響面:過濾被風控的審核單,需回歸場景,確認是否正常過濾審核單,跳轉正常無審核單,技術方案無該接口改動記錄。
收益:確認影響面,保證了部分未評估到的場景被覆蓋倒,避免可能引起線上問題。
圖片
而平臺推薦出技術方案范圍外的一個接口:
圖片
后經確認,確實有修改:
圖片
- 平臺精準率
- 精準率:a/(b+c) *100% (a: 平臺推薦出的變更接口數;b: 新增接口數,c: 變更的老接口數);
- 平臺目前精準率:以最新迭代 528 數據為例,接口變動數 18+,推薦 15+,平均精準率為:80% 左右;
- 以下為 526 版本 Groot 服務,接口變動 15+,平臺推薦 15+ 全部成功推薦,精準率為 100%;
- 平臺推薦接口清單,總共 10+ 個,其中包含處理存量數據的后門接口 5+ 個。
圖片
圖片
綜上,從平臺推薦和開發實際的接口變更來看,當前某個服務平臺推薦精準率是 100%,幫助 QA 精準確認接口改動數量,精準定位測試范圍。
- 豐富自動化 Case
包含新增的 Dubbo/Http 接口、老的 Dubbo/Http 接口都推薦出來,針對改動的接口已完成自動化 Case、執行自動化更精確;未完成的自動化可針對性進行左移、對比技術方案查缺補漏;左移自動化 Case數:50+ 個。
發現問題
攔截 2 個有效問題:分別歸屬為其他部門。多個域參與倉庫的代碼開發,在多個域共建情況下,無法準確預估各域改動帶來的影響范圍,通過精準推薦能夠涉及影響的范圍,聚焦在改動接口的自動化結果分析,節省環境及其他 Case 影響時間,觸發自動化工程回歸老功能,使問題提前暴露。
- 提前感知:提測后,通過平臺推薦出的改動接口,觸發相關自動化,提前攔截遷移代碼引入的一個問題,降低后續風險。
圖片
- 協助測試:526 版本提測后,平臺推薦出改動接口,推薦出自動化 Case,發現一個新需求代碼合并后影響當前已有功能,及時做了修復。避免問題在后置階段發現,提前降低風險。
提升效率
自動創建計劃執行-提效點 :提效 0.5-1h/ 每人每迭代,增量代碼預覽、分析更便捷,節省 0.1-0.5h/ 每人每迭代。
增量預覽
通過增量對比,無需重新拉取新老代碼對比確認改動,可直接拉取分析對比,更加直觀確認代碼改動點,確認影響范圍是否回歸,提高人效。
圖片
實踐過程數據
526版本迭代:接口變更數:90+;測試左移接口數10+;平臺推薦結果數:73+;精準比例:81%左右。
525版本迭代:接口變更數:40+;測試左移接口數30+;平臺推薦結果數:25+;精準比例:63%左右。
524版本迭代:接口變更數:22+;測試左移接口數8+;平臺推薦結果數:11+;精準比例:72%左右。
四、精準測試平臺簡介
圖片
實現方案簡介
- 代碼分析器-鏈路分析器:根據最新提交生成方法調用鏈,標記出 Http、Dubbo、Grpc 等接口的入口實現類的具體方法,并記錄接口相關屬性信息,存入知識;
- 接口調用鏈提取器:打通 Trace2.0 提取上個迭代的接口調用鏈,存入知識庫;
- 代碼分析器-差異分析器:根據 Code Diff(最新提交 - 線上提交),從 Code Diff 中提取變更的方法,結合知識庫推出變更接口,變更接口結合方法調用鏈,定位到影響接口;
- 推薦引擎:(變更接口 + 影響接口) + 自動化用例 + 功能用例接口知識庫 => 自動化用例 + 功能用例;
- 精準度量:結合代碼覆蓋率平臺、自動化平臺、用例平臺等度量測試質量。
五、實踐經驗總結
總結
存在多個域共建的情況下,這個時候也能夠幫助精準推薦出測試范圍。精準測試可以有效地提高測試的覆蓋率和可靠性,可以幫助測試人員發現潛在的問題,避免多域共建的情況下信息偏差導致漏測接口,推薦出開發改動未評估到的影響接口;
在整個第三季度過程中,每個版本通過對多個應用的推薦使用,有推薦 100% 的數據,中間也有一些平臺待優化的問題,數據持續收集中,以最新迭代數據為例,平均精準率為 80+%,第三季度截止目前:多個應用、幾個迭代、多位同學以虛擬小組形式共投入 6d+ 初步取得結果如下:輸出精準測試流程交互圖,攔截缺陷,推薦出未評估到的改動接口,左移自動化 Case,自動創建左移計劃并自動執行:提效 0.5-1h (每人每迭代);過程中有一些特殊 Case 的情況,比如有一個獨立項目新增及修改接口均未正常推薦出來,也需要平臺后續調整精準推薦的策略。