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