精準(zhǔn)測(cè)試是個(gè)錯(cuò)誤

如果你已經(jīng)了解了精準(zhǔn)測(cè)試在行業(yè)的主流做法,你可以跳過相關(guān)內(nèi)容衣赶。

行業(yè)里對(duì)于精準(zhǔn)測(cè)試的定義

在網(wǎng)上流傳著一些精準(zhǔn)測(cè)試的定義(如果你對(duì)這些定義不感冒愕秫,可直接跳到我個(gè)人的定義):

自網(wǎng)易陳逸青(2020)的定義:

借助一定的技術(shù)手段宣决、通過輔助算法對(duì)傳統(tǒng)軟件測(cè)試過程進(jìn)行可視化、分析及優(yōu)化的過程月弛,使得測(cè)試過程更加可視化、智能科盛、可信和精準(zhǔn)帽衙。 原文:https://www.infoq.cn/article/xuu91crqa4hcjz8uomjs

來自HSBC的測(cè)試咨詢專家齊磊(2021年):

通俗點(diǎn)講:核心基于源代碼變更分析,結(jié)合分析算法贞绵,確定影響范圍厉萝,提升測(cè)試效率。 原文:https://www.infoq.cn/article/2feiv8a5kogaqlbzwosh

來自星云測(cè)試(2022年):

精準(zhǔn)測(cè)試一句話概括就是:測(cè)試用例和代碼之間的追溯榨崩,這是它最本質(zhì)的東西谴垫。精準(zhǔn)測(cè)試的本質(zhì)決定了它抓住了測(cè)試的一個(gè)核心要點(diǎn)。 原文: https://testerhome.com/topics/34557

來自得物技術(shù)(2023年):

精準(zhǔn)測(cè)試是基于源代碼變更分析母蛛,結(jié)合一些分析算法翩剪,從而確定改動(dòng)代碼影響的范圍,設(shè)計(jì)測(cè)試用例進(jìn)行針對(duì)性測(cè)試溯祸,一方面可以提升測(cè)試效率肢专,另一方面精準(zhǔn)測(cè)試還可以將測(cè)試用例與程序代碼之間的邏輯映射關(guān)系建立起來, 而這個(gè)過程則是通過工具去采集測(cè)試過程執(zhí)行的代碼邏輯及測(cè)試數(shù)據(jù)焦辅。這兩個(gè)點(diǎn)也正是精準(zhǔn)測(cè)試的核心:正向追溯和逆向追溯博杖。原文: https://tech.dewu.com/article?id=43

以下是來自網(wǎng)易嚴(yán)選的架構(gòu)圖:


image.png

我個(gè)人的定義

在筆者看來,精準(zhǔn)測(cè)試的定義應(yīng)該是這樣的:它是一種能力筷登,能只針對(duì)變更進(jìn)行測(cè)試剃根,而不是每次變更都進(jìn)行全量測(cè)試。注意前方,我指的是“變更”狈醉,而不只是“代碼變更”,也就是說所有類型的變更惠险,包括手動(dòng)變更苗傅。

精準(zhǔn)測(cè)試的思路并不復(fù)雜,分成三個(gè)步驟:

  1. 找到變更班巩;
  2. 根據(jù)變更找到相關(guān)聯(lián)的測(cè)試用例渣慕;
  3. 只執(zhí)行相關(guān)聯(lián)的測(cè)試用例。

其實(shí),把這種方法叫增量測(cè)試(Incremental Testing) 更準(zhǔn)確逊桦,更合適眨猎。畢竟你是針對(duì)增量的代碼變更進(jìn)行測(cè)試。

如果不是針對(duì)增量變更進(jìn)行測(cè)試强经,你也能只執(zhí)行一個(gè)你想測(cè)試的測(cè)試睡陪。難道這樣不算精準(zhǔn)測(cè)試嗎?

國內(nèi)行業(yè)主流的實(shí)現(xiàn)精準(zhǔn)測(cè)試的方法

步驟一:找到代碼變更

有以下幾種方式:

  1. commit之間進(jìn)行差異對(duì)比匿情;
  2. 運(yùn)行時(shí)找到兰迫,即進(jìn)行流量回放后,對(duì)比業(yè)務(wù)代碼運(yùn)行與

步驟二:根據(jù)代碼變更找到相關(guān)聯(lián)的測(cè)試用例

要做到“根據(jù)代碼變更找到相關(guān)聯(lián)的測(cè)試用例”码秉,我們就必須知道代碼與測(cè)試用例之間的關(guān)系逮矛。

獲取這個(gè)關(guān)系的做法是在執(zhí)行測(cè)試的同時(shí),做以下事情:

  1. 將流量記錄下來转砖;
  2. 將因流量而執(zhí)行地代碼的調(diào)用鏈記錄下來须鼎;
  3. 將測(cè)試用例的元數(shù)據(jù)與代碼調(diào)用鏈的關(guān)系記錄下來;

這個(gè)過程就完成了對(duì)被調(diào)用代碼與測(cè)試用例之間的映射關(guān)系的建立府蔗。

另晋控,現(xiàn)實(shí)往往存在很多未被測(cè)試用例覆蓋到的代碼,這時(shí)姓赤,通過靜態(tài)代碼分析和測(cè)試覆蓋率計(jì)算技術(shù)結(jié)合赡译,生成未被測(cè)試到的代碼的報(bào)告。

可以看出不铆,通過以上方式“找出代碼與測(cè)試用例之間的關(guān)系”的成本是極高的蝌焚。所以,在這個(gè)領(lǐng)域會(huì)有:引流平臺(tái)誓斥、測(cè)試用例管理平臺(tái)只洒、精準(zhǔn)測(cè)試平臺(tái)等等平臺(tái)。這也給大家一個(gè)感覺劳坑,我們要先有一個(gè)平臺(tái)才能做到精準(zhǔn)測(cè)試毕谴。

目前在網(wǎng)上看到大多還只是針對(duì)Java語言或者C++來實(shí)現(xiàn)精準(zhǔn)測(cè)試,其它的語言目前沒有見到距芬。

步驟三:只執(zhí)行相關(guān)聯(lián)的測(cè)試用例

當(dāng)有了代碼與測(cè)試用例之間的關(guān)系涝开,只執(zhí)行相關(guān)聯(lián)的測(cè)試用例就簡(jiǎn)單很多了。

主流方法的坑

以下是齊磊總結(jié)的精準(zhǔn)測(cè)試存在的問題:

  1. 基于手工測(cè)試的精準(zhǔn)測(cè)試建立映射關(guān)系繁雜框仔,如果需求改變頻繁舀武,用例維護(hù)以及之間的關(guān)系維護(hù)需要耗費(fèi)大量時(shí)間精力。
  2. 精準(zhǔn)測(cè)試需要一定的自動(dòng)化測(cè)試的覆蓋离斩,這樣做起來更有意義银舱,例如 api 自動(dòng)化測(cè)試衷旅,如果本身用例過少,與代碼之間關(guān)聯(lián)關(guān)系不多時(shí)纵朋,變更代碼后可能不會(huì)得出什么結(jié)果。
  3. 最好有對(duì)應(yīng)的用例管理系統(tǒng)茄袖,能夠方便的幫助我們建立與代碼之間的關(guān)系操软。
  4. 需要投入開發(fā)能力強(qiáng)的 QA 或者測(cè)試開發(fā)建立整套系統(tǒng)環(huán)境,但長(zhǎng)遠(yuǎn)考慮宪祥,將精準(zhǔn)測(cè)試嵌入整個(gè)公司的質(zhì)量平臺(tái)中聂薪,不管對(duì)于新項(xiàng)目還說維護(hù)項(xiàng)目來說都是一種提升。
  5. 項(xiàng)目生命周期需要較長(zhǎng)蝗羊,短期項(xiàng)目花費(fèi)巨大精力開發(fā)和維護(hù)整套精準(zhǔn)測(cè)試系統(tǒng)得不償失藏澳。短期項(xiàng)目可以利用精準(zhǔn)測(cè)試以 api 測(cè)試覆蓋率作為衡量標(biāo)準(zhǔn)。不去建立繁雜的關(guān)系耀找,只監(jiān)控 UI API 測(cè)試覆蓋率迭代時(shí)的變更來達(dá)到目的翔悠。

但是,個(gè)人認(rèn)為齊磊總結(jié)的內(nèi)容沒有問題野芒,的確都是坑蓄愁。但是那些不是精準(zhǔn)測(cè)試的坑,而是國內(nèi)行業(yè)主流的實(shí)現(xiàn)方式的坑狞悲。直白地說就是喝水時(shí)撮抓,喝水的角度錯(cuò)了。

為什么主流實(shí)現(xiàn)方法從方向上就是錯(cuò)的

為什么我認(rèn)為以上地坑是由實(shí)現(xiàn)方法導(dǎo)致的摇锋?以下是我的論點(diǎn)丹拯,歡迎討論指正:

該方法只局限于單一語言

準(zhǔn)確來說,精準(zhǔn)測(cè)試不應(yīng)該只針對(duì)代碼的變更荸恕,而是所有的變更乖酬。更不應(yīng)該只針對(duì)單一語言的變更,而是可以針對(duì)所有的語言戚炫。

因?yàn)榫珳?zhǔn)測(cè)試的定義本身不局限于某個(gè)語言的代碼變更剑刑,而是對(duì)一個(gè)軟件工程中所有的變更而言。一次SQL的變更双肤,你是否需要精準(zhǔn)的知道要執(zhí)行哪些測(cè)試施掏?一個(gè)前端的CSS代碼的變更,你是否需要精準(zhǔn)的知道要執(zhí)行哪些測(cè)試茅糜?

目前行業(yè)里主流的方法七芭,只是針對(duì)單一語言下的場(chǎng)景而設(shè)計(jì)的。按同樣的思路是無法做到多語言的蔑赘。我說的多語言指提同一工程下的多語言狸驳,不是指相互獨(dú)立的單語言工程预明。

只能在平臺(tái)上做精準(zhǔn)測(cè)試

即,我們首先需要一個(gè)平臺(tái)耙箍,才能做到精準(zhǔn)測(cè)試撰糠。

但我們希望在開發(fā)者本地開發(fā)環(huán)境就可以做到精準(zhǔn)測(cè)試。

最后

文章標(biāo)題并不是說“精準(zhǔn)測(cè)試”本身是一個(gè)錯(cuò)誤辩昆,是想說上述的實(shí)現(xiàn)方法是一個(gè)錯(cuò)誤方法阅酪。

那,什么樣的方向是正確的呢汁针?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末术辐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子施无,更是在濱河造成了極大的恐慌辉词,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猾骡,死亡現(xiàn)場(chǎng)離奇詭異瑞躺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)兴想,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門隘蝎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人襟企,你說我怎么就攤上這事嘱么。” “怎么了顽悼?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵曼振,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蔚龙,道長(zhǎng)冰评,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任木羹,我火速辦了婚禮甲雅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坑填。我一直安慰自己抛人,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布脐瑰。 她就那樣靜靜地躺著妖枚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苍在。 梳的紋絲不亂的頭發(fā)上绝页,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天荠商,我揣著相機(jī)與錄音,去河邊找鬼续誉。 笑死莱没,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的酷鸦。 我是一名探鬼主播郊愧,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼井佑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起眠寿,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤躬翁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后盯拱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盒发,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年狡逢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宁舰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奢浑,死狀恐怖蛮艰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情雀彼,我是刑警寧澤壤蚜,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站徊哑,受9級(jí)特大地震影響袜刷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜莺丑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一著蟹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梢莽,春花似錦萧豆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至葡粒,卻和暖如春份殿,著一層夾襖步出監(jiān)牢的瞬間膜钓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工卿嘲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颂斜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓拾枣,卻偏偏與公主長(zhǎng)得像沃疮,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子梅肤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容