“精準(zhǔn)測(cè)試”在商家地址專(zhuān)項(xiàng)的探索
在商家地址專(zhuān)項(xiàng)測(cè)試中結(jié)合現(xiàn)有精準(zhǔn)測(cè)試平臺(tái),以STAR模式介紹精準(zhǔn)測(cè)試探索與實(shí)踐。
1、背景
隨著公司業(yè)務(wù)的不斷迭代發(fā)展,業(yè)務(wù)架構(gòu)越來(lái)越復(fù)雜,測(cè)試亟需優(yōu)化以下幾個(gè)方面:
(1)應(yīng)用隨業(yè)務(wù)發(fā)展在不斷擴(kuò)展,各個(gè)應(yīng)用代碼復(fù)雜度會(huì)不斷增加,如何準(zhǔn)確、全面判定代碼修改影響范圍會(huì)越來(lái)越重要;
(2)測(cè)試過(guò)程中會(huì)發(fā)現(xiàn)只是自身應(yīng)用代碼一個(gè)修改,會(huì)導(dǎo)致對(duì)外暴露的接口邏輯發(fā)生很大變動(dòng),此時(shí)測(cè)試人員需要判定出這個(gè)對(duì)外暴露的接口對(duì)上層應(yīng)用到底有多大影響;
(3)業(yè)務(wù)快速迭代導(dǎo)致測(cè)試時(shí)間不斷壓縮,全量回歸是一個(gè)很困難的事情,那么測(cè)試范圍需要開(kāi)發(fā)測(cè)試人員根據(jù)代碼和業(yè)務(wù)熟悉程度精確把控,風(fēng)險(xiǎn)不可控。
基于上述背景,QA可以將精準(zhǔn)測(cè)試作為應(yīng)用上線(xiàn)質(zhì)量的參考維度之一,有效輔助日常迭代測(cè)試工作,提高測(cè)試效率。?
2、任務(wù)
2.1 認(rèn)清精準(zhǔn)測(cè)試
精準(zhǔn)測(cè)試是基于源代碼變更分析,結(jié)合一些分析算法,從而確定改動(dòng)代碼影響的范圍,設(shè)計(jì)測(cè)試用例進(jìn)行針對(duì)性測(cè)試,一方面可以提升測(cè)試效率,另一方面精準(zhǔn)測(cè)試還可以將測(cè)試用例與程序代碼之間的邏輯映射關(guān)系建立起來(lái), 而這個(gè)過(guò)程則是通過(guò)工具去采集測(cè)試過(guò)程執(zhí)行的代碼邏輯及測(cè)試數(shù)據(jù)。這兩個(gè)點(diǎn)也正是精準(zhǔn)測(cè)試的核心:正向追溯和逆向追溯。
所以,要想做好精準(zhǔn)測(cè)試,核心目標(biāo)可以總結(jié)為以下兩點(diǎn):
(1)質(zhì)量的評(píng)估不再完全靠個(gè)人經(jīng)驗(yàn)和業(yè)務(wù)熟悉度,而是通過(guò)精準(zhǔn)的數(shù)據(jù)。在測(cè)試資源有限的前提下,將用例精簡(jiǎn)到更加有針對(duì)性,提高測(cè)試效率,有效的減少漏測(cè)風(fēng)險(xiǎn)。
(2)代碼覆蓋率的可衡量性,提升測(cè)試質(zhì)量,同時(shí)幫助開(kāi)發(fā)定位缺陷對(duì)應(yīng)的代碼執(zhí)行邏輯,提升缺陷修復(fù)效率。
2.2 了解正向追溯
所謂正向溯源,就是解決開(kāi)發(fā)處理bug的盲目性、QA測(cè)試覆蓋率的可衡量性。通過(guò)精準(zhǔn)測(cè)試可以分析出哪些代碼被覆蓋到,哪些代碼沒(méi)有被覆蓋,從而統(tǒng)計(jì)測(cè)試覆蓋率,通過(guò)代碼覆蓋率,找出漏測(cè)的地方,可以更精準(zhǔn)的進(jìn)行驗(yàn)證,減少重復(fù)工作。精準(zhǔn)測(cè)試的運(yùn)用是從經(jīng)驗(yàn)型的主觀判斷向精準(zhǔn)的數(shù)據(jù)可視化轉(zhuǎn)變,讓質(zhì)量的把控減少了一些不確定性、不可控性。
在用例執(zhí)行過(guò)程中,開(kāi)發(fā)也可以看到QA執(zhí)行用例的代碼細(xì)節(jié)。從而追溯到調(diào)用具體方法與實(shí)現(xiàn)類(lèi),可直接在代碼級(jí)定位測(cè)試執(zhí)行的代碼缺陷邏輯,并提供最后運(yùn)行的時(shí)序數(shù)據(jù)。也可以更快地定位缺陷對(duì)應(yīng)的代碼執(zhí)行邏輯,幫助開(kāi)發(fā)人員快速修復(fù)缺陷,可追蹤難復(fù)現(xiàn)缺陷。
2.3 了解逆向追溯
所謂逆向追溯,就是解決QA要測(cè)什么的問(wèn)題,實(shí)現(xiàn)了代碼變更的影響面評(píng)估,分析識(shí)別增量與變更代碼。QA通過(guò)精準(zhǔn)測(cè)試對(duì)影響的代碼做準(zhǔn)確的針對(duì)性測(cè)試,回歸的范圍更準(zhǔn)確,避免了全量回歸造成測(cè)試資源的浪費(fèi),既保證了質(zhì)量又縮短了版本的迭代周期。
在日常的迭代回歸測(cè)試中極大減少回歸測(cè)試的盲目性和工作量,釋放人力成本,將更多的時(shí)間和成本投入到更深更復(fù)雜的測(cè)試工作中,減少資源浪費(fèi)。
3、行動(dòng)
基于精準(zhǔn)測(cè)試的兩大核心目標(biāo),QA可以通過(guò)正向溯源和逆向追溯進(jìn)行精準(zhǔn)測(cè)試探索。下面就借助精準(zhǔn)測(cè)試平臺(tái)以商家地址專(zhuān)項(xiàng)這個(gè)項(xiàng)目進(jìn)行精準(zhǔn)測(cè)試實(shí)踐。
3.1 了解精準(zhǔn)平臺(tái)架構(gòu)
3.2 精準(zhǔn)平臺(tái)接入計(jì)劃
迭代 | 需求 | 涉及服務(wù) | 接口數(shù)量 |
512-513迭代 | 商家地址專(zhuān)項(xiàng)-地址監(jiān)控 | 商家核心服務(wù)、商家下單鏈路服務(wù)、商家拆分服務(wù) | 22 |
514迭代 | 商家地址專(zhuān)項(xiàng)-接口新增 | 商家拆分服務(wù) | 2 |
3.3 開(kāi)發(fā)梳理改動(dòng)接口清單
從開(kāi)發(fā)梳理的改動(dòng)清單中,可以看到,本次商家地址涉及的改動(dòng)的接口包含三個(gè)服務(wù):商家下單鏈路服務(wù)(4個(gè))、商家核心服務(wù)(8個(gè))、商家拆分服務(wù)(10),總的接口數(shù)量為22個(gè)。
單從開(kāi)發(fā)的技術(shù)方案上梳理的涉及接口清單上看,QA無(wú)法判斷是否有接口遺漏或者錯(cuò)誤,按照以往的測(cè)試策略,QA只能針對(duì)這22個(gè)接口進(jìn)行相應(yīng)的測(cè)試。
但是有了精準(zhǔn)測(cè)試平臺(tái)之后,QA可以先針對(duì)這三個(gè)服務(wù)在提測(cè)分支和線(xiàn)上master進(jìn)行對(duì)比,識(shí)別出有變動(dòng)的接口數(shù)量,可以初步確認(rèn)測(cè)試范圍。
3.4 精準(zhǔn)平臺(tái)拉取接口清單
精準(zhǔn)平臺(tái)地址:??https://ep.shizhuang-inc.com/precision/center/recommend??
(1)商家下單鏈路服務(wù)
從平臺(tái)拉取的結(jié)果來(lái)看,當(dāng)前提測(cè)分支feature-address-513_monitor分支跟master分支對(duì)比,涉及到4個(gè)接口的改動(dòng),其中2個(gè)接口完成自動(dòng)化,2個(gè)接口沒(méi)有相關(guān)自動(dòng)化。
對(duì)比開(kāi)發(fā)梳理的商家下單鏈路服務(wù)改動(dòng)接口清單和平臺(tái)拉取的接口清單,可以看出商家下單鏈路服務(wù)改動(dòng)接口以及數(shù)量是完全吻合的,這無(wú)疑給了QA莫大的信心。
(2)商家拆分服務(wù)
從平臺(tái)拉取的結(jié)果來(lái)看,當(dāng)前提測(cè)分支feature-address-513_monitor分支跟master分支對(duì)比,涉及到8個(gè)接口,4個(gè)接口完成自動(dòng)化,4個(gè)接口沒(méi)有相關(guān)自動(dòng)化。
對(duì)比開(kāi)發(fā)梳理的商家拆分服務(wù)改動(dòng)接口清單和平臺(tái)拉取的接口清單,可以看出商家拆分服務(wù)改動(dòng)接口以及數(shù)量也是完全吻合的,只是存在部分接口沒(méi)有自動(dòng)化覆蓋,需要后期補(bǔ)充對(duì)應(yīng)的接口自動(dòng)化進(jìn)行覆蓋。
(3)商家核心服務(wù)
從平臺(tái)拉取的結(jié)果來(lái)看,當(dāng)前提測(cè)分支feature-address-513_monitor分支跟master分支對(duì)比,涉及到11個(gè)接口,且均沒(méi)有相關(guān)自動(dòng)化。
對(duì)比開(kāi)發(fā)梳理的商家核心服務(wù)改動(dòng)接口清單和平臺(tái)拉取的接口清單,可以看出商家核心服務(wù)改動(dòng)接口數(shù)量比開(kāi)發(fā)梳理的接口多一個(gè),并且有一個(gè)接口沒(méi)在開(kāi)發(fā)的方案當(dāng)中,說(shuō)明該服務(wù)需要進(jìn)行具體分析。
3.5 具體分析發(fā)現(xiàn)問(wèn)題
(1)接口遺漏
通過(guò)精準(zhǔn)平臺(tái)確認(rèn)通過(guò)商家用戶(hù)id查詢(xún)退貨地址接口也存在對(duì)應(yīng)的改動(dòng),開(kāi)發(fā)少梳理了一個(gè),并同步開(kāi)發(fā)在清單中進(jìn)行補(bǔ)充。
(2)代碼分支合并
商家核心服務(wù)識(shí)別出了一個(gè)非地址相關(guān)的改動(dòng),跟開(kāi)發(fā)確認(rèn)之后發(fā)現(xiàn)是因?yàn)楫?dāng)前提測(cè)分支沒(méi)有合并當(dāng)前線(xiàn)上最新的master分支,導(dǎo)致跑出了非地址相關(guān)的功能數(shù)據(jù)。告知開(kāi)發(fā)進(jìn)行對(duì)應(yīng)代碼合并之后,QA需要重新部署重新拉取接口再次確認(rèn)。
(3)接口重載
商家核心服務(wù)有一個(gè)重載方法精準(zhǔn)平臺(tái)沒(méi)有識(shí)別出這個(gè)根據(jù)商家id查詢(xún)商家地址的接口,跟開(kāi)發(fā)進(jìn)行確認(rèn),最終結(jié)論是根據(jù)商家id查詢(xún)商家地址的V2接口是重載了以下接口:平臺(tái)沒(méi)有看到重載的方法名,最終確認(rèn)重載方法還是原來(lái)的方法名,只是在入?yún)⑸献鲄^(qū)分,一個(gè)只有商家ID,一個(gè)需要傳商家ID、訂單類(lèi)型、商品ID。最終在精準(zhǔn)平臺(tái)確認(rèn)了對(duì)應(yīng)的入?yún)^(qū)別,平臺(tái)沒(méi)有作為兩個(gè)接口進(jìn)行識(shí)別。
(4)內(nèi)部調(diào)用方法也被識(shí)別
在使用精準(zhǔn)平臺(tái)進(jìn)行新增接口拉取的時(shí)候,發(fā)現(xiàn)平臺(tái)會(huì)將一些私有方法識(shí)別出來(lái),這些方法是內(nèi)部調(diào)用,沒(méi)有注冊(cè),接口測(cè)試平臺(tái)也看不到對(duì)應(yīng)的接口信息,無(wú)法覆蓋。
3.6 最終接口確認(rèn)
(1)商家拆分服務(wù)
本次涉及8個(gè)改動(dòng)接口,并補(bǔ)充缺少的4個(gè)接口的自動(dòng)化之后,正常識(shí)別且狀態(tài)正常,說(shuō)明此服務(wù)接口都正常覆蓋。
(2)商家核心服務(wù)
本次涉及10個(gè)接口改動(dòng),并補(bǔ)充缺少的接口自動(dòng)化之后,對(duì)應(yīng)接口都能正常識(shí)別且狀態(tài)正常,說(shuō)明此服務(wù)接口都正常覆蓋。
(3)商家下單鏈路服務(wù)
本次涉及4個(gè)接口改動(dòng),并補(bǔ)充缺少的2個(gè)接口自動(dòng)化之后,對(duì)應(yīng)接口都能正常識(shí)別且狀態(tài)正常,說(shuō)明此服務(wù)接口都正常覆蓋。
4、結(jié)果
4.1 各個(gè)服務(wù)觸發(fā)自動(dòng)化結(jié)果
(1)商家拆分服務(wù)
(2)商家核心服務(wù)
(3)商家下單鏈路服務(wù)
5、探索心得
5.1 總結(jié)
(1)借助于精準(zhǔn)測(cè)試平臺(tái),發(fā)現(xiàn)一個(gè)開(kāi)發(fā)梳理遺漏的接口,有效避免了梳理遺漏導(dǎo)致的測(cè)試遺漏,一定程度上規(guī)避了風(fēng)險(xiǎn),是QA從經(jīng)驗(yàn)型的主觀判斷向精準(zhǔn)的數(shù)據(jù)可視化轉(zhuǎn)變。
(2)借助精準(zhǔn)平臺(tái)識(shí)別出一些沒(méi)有進(jìn)行自動(dòng)化覆蓋的接口,讓QA能針對(duì)這些清單進(jìn)行接口自動(dòng)化的查缺補(bǔ)漏,從另一層面提升了自動(dòng)化用例集的完整性。
(3)精準(zhǔn)平臺(tái)與自動(dòng)化平臺(tái)、測(cè)試用例平臺(tái)、覆蓋率平臺(tái)打通,從正向追溯和逆向追溯兩個(gè)核心進(jìn)行測(cè)試,確保數(shù)據(jù)的準(zhǔn)確性、完整性,方便QA持續(xù)跟蹤,提高測(cè)試效率。
5.2 優(yōu)化
在接入精準(zhǔn)測(cè)試平臺(tái)的過(guò)程中,對(duì)平臺(tái)有了進(jìn)一步的了解,當(dāng)然在使用的過(guò)程中也發(fā)現(xiàn)一些問(wèn)題,并給開(kāi)發(fā)提了相關(guān)建議,從而不斷完善精準(zhǔn)測(cè)試平臺(tái)開(kāi)發(fā),也幫助QA更好更高效得完成質(zhì)量保障工作。