星云精準(zhǔn)測試之用例魔方

精準(zhǔn)測試從某個(gè)層面來講党远,是賦予了測試用例真正的生命力削解,傳統(tǒng)的測試用例僅僅是一些只能夠依賴人去理解和分析的文本文件而已,在計(jì)算機(jī)和算法層面則沒有存在意義和價(jià)值沟娱。下圖是精準(zhǔn)測試的整體架構(gòu)圖:


image

大家首先可能會(huì)比較好奇氛驮,“用例魔方”的概念是怎么來的?測試用例魔方是在精準(zhǔn)測試的設(shè)計(jì)济似、開發(fā)和商業(yè)實(shí)踐中自然產(chǎn)生的功能集合的一個(gè)統(tǒng)稱矫废。當(dāng)我們把精準(zhǔn)測試的和用例分析相關(guān)的功能畫成架構(gòu)圖形表示的時(shí)候,它自然而然地看起來就像魔方砰蠢,所謂“魔”則是精準(zhǔn)測試核心算法所賦予的超能力磷脯。
上圖是星云精準(zhǔn)測試系統(tǒng)的總體結(jié)構(gòu)圖,“測試魔方”即分布在左上角區(qū)域娩脾。大家知道精準(zhǔn)測試的核心技術(shù)是測試用例與代碼的追溯關(guān)系的建立赵誓,而在此之上就可以構(gòu)建測試魔方的核心功能區(qū)。如下:
 


image

所謂“方”實(shí)際上是代表測試用例的集合柿赊,每個(gè)測試用例用一個(gè)小方塊標(biāo)識俩功,所有測試用例的集合用一個(gè)大方塊。現(xiàn)在來看在精準(zhǔn)測試架構(gòu)下碰声,“用例魔方”所能夠提供的功能(對精準(zhǔn)測試的底層技術(shù)不是很了解的話诡蜓,可以預(yù)先溫習(xí)下《精準(zhǔn)測試框架白皮書》)。精準(zhǔn)測試體系中胰挑,測試用例對應(yīng)的代碼邏輯都可以實(shí)現(xiàn)全自動(dòng)的追溯和存儲(chǔ)蔓罚,因此測試用例就具備了進(jìn)行深入分析的基礎(chǔ)。在精準(zhǔn)測試的用例魔方中瞻颂,目前存在三個(gè)面(隨著后續(xù)功能的增加豺谈,將增加分析的面),即回歸測試用例選取贡这、測試用例聚類分析茬末、測試用最小化,同時(shí)輔之以智能缺陷定位技術(shù)。下面對“用例魔方”做詳細(xì)的說明丽惭,選用的工具為星云精準(zhǔn)測試平臺(tái)ThreadingTest產(chǎn)品系列击奶。
 
  首先介紹回歸測試用例選取。從魔方視圖中可以看到回歸用例選仍鹛汀(主要選取可能影響到的重點(diǎn)用例)柜砾。精準(zhǔn)測試中所謂的回歸測試和自動(dòng)化回歸有很大的差別,我們聽的比較多的自動(dòng)化測試中的回歸其實(shí)是把自動(dòng)化用例重新運(yùn)行的意思换衬,而精準(zhǔn)測試中的回歸測試是通過內(nèi)部算法自動(dòng)選取新版本修改后可能影響到的測試用例痰驱。通過回歸測試用例選取,解決了新版本上線該對哪些用例進(jìn)行測試和重點(diǎn)測試的問題冗疮,這也是敏捷開發(fā)中測試所面臨的最大問題萄唇。下面是回歸測試用例選取的原理圖:

 
image

 
 原理介紹:
image

 
 
 測試用例A與測試用例B為在版本A中進(jìn)行測試的用例檩帐,其綠圈中A1术幔、A2、A3湃密、B2…等為其測試用例所對應(yīng)的運(yùn)行中采集的函數(shù)信息诅挑。

 
image

 
 在版本迭代過程中,版本B也對其測試用例A進(jìn)行了測試泛源,并添加了測試用例C拔妥,精準(zhǔn)測試采集其對應(yīng)的函數(shù)信息。
 
image

 
  當(dāng)版本C進(jìn)行迭代發(fā)布時(shí)达箍,精準(zhǔn)測試根據(jù)測試用例A没龙、B、C最后運(yùn)行的版本所對應(yīng)的函數(shù)信息與版本C的版本函數(shù)信息進(jìn)行比較缎玫,根據(jù)變化差異進(jìn)行回歸優(yōu)先級排序硬纤。
 
 ① 測試用例A最后運(yùn)行在版本B中赃磨,對應(yīng)的函數(shù)信息為A1筝家、A2、B1邻辉、A3溪王,對比版本C中的函數(shù)無代碼變化,計(jì)算回歸優(yōu)先級值為0值骇。

 
∮狻② 測試用例B因?yàn)樵诎姹綛中未運(yùn)行,最后運(yùn)行的版本為A吱瘩,版本A的測試數(shù)據(jù)B1芒珠、B2、B3搅裙、C3和版本C中的函數(shù)比對皱卓,得出函數(shù)C3的代碼有變化裹芝,計(jì)算回歸優(yōu)先級值為1。
 
∧戎③ 測試用例C最后運(yùn)行在B嫂易,對應(yīng)的函數(shù)信息為C1、C2掐禁、C3怜械、A3,和版本C中的函數(shù)比對傅事,得出函數(shù)C3的代碼有變化缕允,函數(shù)C2進(jìn)行了刪除,計(jì)算回歸優(yōu)先級值為3蹭越。
 
≌媳尽④ 結(jié)果進(jìn)行回歸優(yōu)先級排序,得出測試用例C回歸優(yōu)先級最高優(yōu)先值為3>測試用例B回歸優(yōu)先值為1>測試用例A响鹃,回歸優(yōu)先值0驾霜,不需要回歸。
 
 當(dāng)新版本上線后买置,精準(zhǔn)測試系統(tǒng)會(huì)自動(dòng)給出本次發(fā)布波及到的測試用例列表以及收到波及的程度粪糙。如下圖:


image

 
image

通常測試用例的分類都是人工根據(jù)功能組織進(jìn)行硬性歸類的,在精準(zhǔn)測試體系中忿项,用例魔方中的測試用例為聚類分析蓉冈。由于測試用例都包含有對應(yīng)的內(nèi)部代碼執(zhí)行邏輯,執(zhí)行路徑直接可以通過代碼塊或者函數(shù)進(jìn)行舉例計(jì)算轩触,例如一個(gè)程序總共有10個(gè)函數(shù)寞酿。
 
  “用例魔方”中的聚類結(jié)果具有非常實(shí)用的價(jià)值,體現(xiàn)在以下幾點(diǎn):
 
 1.通過用例聚類結(jié)果怕膛,可以從管理端審核測試執(zhí)行的正確性熟嫩。傳統(tǒng)測試一般由人工執(zhí)行,因此想確認(rèn)測試用例是否本身執(zhí)行有錯(cuò)誤褐捻,或者是否按照預(yù)先設(shè)定的要求執(zhí)行了掸茅,是非常困難的,這也是測試管理的成本一直很高的一個(gè)重要原因柠逞。通過對精準(zhǔn)測試“用例魔方”的聚類結(jié)果分析昧狮,若兩個(gè)功能迥異、本不應(yīng)該分到一起的測試用例被分到了一組板壮,那么產(chǎn)品經(jīng)理或者項(xiàng)目管理者會(huì)非常容易識別出這里面存在測試用例的執(zhí)行錯(cuò)誤逗鸣,并在產(chǎn)品發(fā)布的最后一環(huán),及時(shí)處理。
 
 2.通過“用例魔方”的測試用例聚類結(jié)果這一功能撒璧,可以發(fā)現(xiàn)缺陷分布的密集區(qū)域透葛。因?yàn)榫垲惖囊罁?jù)是用例執(zhí)行對應(yīng)的代碼路徑差異信息,聚類結(jié)果充分而真實(shí)的體現(xiàn)了用例之間的空間感卿樱,結(jié)果非常有意義僚害。缺陷的分布一般是有規(guī)律的:功能相近的用例如果有出現(xiàn)錯(cuò)誤,那么同類型用例出錯(cuò)的概率也更大繁调。所以當(dāng)時(shí)間不充足的情況下萨蚕,可以依據(jù)聚類結(jié)果,每個(gè)用例聚類簇隨機(jī)選幾個(gè)蹄胰。如果沒有bug岳遥,就可以放松對簇內(nèi)其他用例的考察,如果發(fā)現(xiàn)了缺陷裕寨,那么其它簇內(nèi)的用例也需要重點(diǎn)考察浩蓉。
 


image

image

在企業(yè)大量應(yīng)用自動(dòng)化測試場景下,隨著日積月累帮坚,產(chǎn)生了大量的妻往、邏輯重復(fù)的測試用例互艾。通過“用例魔方”的測試用例集最小化算法试和,可以把重復(fù)或者存在包含關(guān)系的用例從用例集中剔除出去。原理非常簡單:假設(shè)兩個(gè)用例纫普,在代碼覆蓋上存在完全包含關(guān)系阅悍,那么被包含的用例就可以從用例集中剔除。算法所依據(jù)的數(shù)據(jù)依然是測試用例與代碼的追溯關(guān)系技術(shù)數(shù)據(jù)昨稼。
 
  “用例魔方”中另外一個(gè)精彩的功能是智能的缺陷定位技術(shù)节视,星云精準(zhǔn)測試提供了3種計(jì)算公式。
 


image

image

通過智能缺陷定位假栓,測試工程師僅需要標(biāo)記用例從功能角度的執(zhí)行狀態(tài)(是否存在缺陷)寻行,再結(jié)合星云精準(zhǔn)測試“用例魔方”自動(dòng)記錄的對應(yīng)程序執(zhí)行的代碼頻譜,就可以對缺陷進(jìn)行代碼級的精準(zhǔn)定位匾荆。
 
 1.源代碼
 簡單分析第15行代碼拌蜘,當(dāng)?shù)谑衴<z成立且第十二行x<y不成立且第十四行x<z成立時(shí)即得y<z且x>=y且x<z.此時(shí)可得y<=x<z,中間數(shù)為x,所以此處正確語句應(yīng)為m=x。


image

2.創(chuàng)建7個(gè)測試用例test1牙丽、test2简卧、test3………..test7并進(jìn)行測試
 ① test1輸入為3 3 5輸出為3烤芦,預(yù)期輸出為3举娩,符合預(yù)期,此用例記為通過
 ② test2輸入為1 2 3輸出為2铜涉,預(yù)期輸出為2智玻,符合預(yù)期,此用例記為通過
≤酱③ test3輸入為3 2 1輸出為2尚困,預(yù)期輸出為2,符合預(yù)期链蕊,此用例記為通過
∈绿稹④ test4輸入為5 5 5輸出為5,預(yù)期輸出為5滔韵,符合預(yù)期逻谦,此用例記為通過
 ⑤ test5輸入為5 3 4輸出為4陪蜻,預(yù)期輸出為4邦马,符合預(yù)期,此用例記為通過
⊙缏簟⑥ test6輸入為2 1 3輸出為1滋将,預(yù)期輸出為2,不符合預(yù)期症昏,此用例記為未通過
∷婷觥⑦ test7輸入為3 2 4輸出為2,預(yù)期輸出為3肝谭,不符合預(yù)期掘宪,此用例記為未通過
 
 3.針對test6、test7提交缺陷攘烛,表明test6與test7輸出與預(yù)期不符
 
 4.打開缺陷分析界面進(jìn)行分析
 


image

 
 5.可疑度算法包括如下三種魏滚,可自主選擇
 


image

其中aep表示通過且覆蓋到該塊的測試用例的個(gè)數(shù)、anp表示通過且未覆蓋到該塊的測試用例的個(gè)數(shù)坟漱、aef表示未通過且覆蓋到該塊的測試用例的個(gè)數(shù)鼠次、anf表示未通過且覆蓋到該塊的測試用例的個(gè)數(shù)。結(jié)果表示該塊的可疑度芋齿。
 
 6.代碼可視化查看位置

image

 
  關(guān)聯(lián)源碼之后可根據(jù)代碼可視化定位第十二塊位置腥寇,根據(jù)實(shí)際分析可得第十二塊確實(shí)為缺陷語句,分析過程見第一步沟突。
 』拧(大家如果感興趣可以到星云測試的官網(wǎng)上www.teststars.cc 試用。)
  精準(zhǔn)測試的精髓在于通過專用測試軟件實(shí)現(xiàn)表層功能和底層代碼的關(guān)聯(lián)惠拭,并且獲取成本很低扩劝。它在測試用例執(zhí)行的過程中庸论,通過軟件示波器以透明方式自動(dòng)獲取兩者的關(guān)聯(lián)關(guān)系。通過精準(zhǔn)測試系統(tǒng)棒呛,使針對用例的深入分析“用例魔方”成為可能聂示。目前精準(zhǔn)測試的核心用例分析算法正在持續(xù)增強(qiáng),“用例魔方”的軟件研發(fā)輔助分析功能簇秒,為軟件測試的智能化鱼喉、專業(yè)化成長,帶來曙光和方向趋观。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扛禽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子皱坛,更是在濱河造成了極大的恐慌编曼,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剩辟,死亡現(xiàn)場離奇詭異掐场,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贩猎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門熊户,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吭服,你說我怎么就攤上這事嚷堡。” “怎么了噪馏?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵麦到,是天一觀的道長绿饵。 經(jīng)常有香客問我欠肾,道長,這世上最難降的妖魔是什么拟赊? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任刺桃,我火速辦了婚禮,結(jié)果婚禮上吸祟,老公的妹妹穿的比我還像新娘瑟慈。我一直安慰自己,他們只是感情好屋匕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布葛碧。 她就那樣靜靜地躺著,像睡著了一般过吻。 火紅的嫁衣襯著肌膚如雪进泼。 梳的紋絲不亂的頭發(fā)上蔗衡,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機(jī)與錄音乳绕,去河邊找鬼绞惦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛洋措,可吹牛的內(nèi)容都是我干的济蝉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼菠发,長吁一口氣:“原來是場噩夢啊……” “哼王滤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起滓鸠,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤淑仆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后哥力,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔗怠,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年吩跋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寞射。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锌钮,死狀恐怖桥温,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情梁丘,我是刑警寧澤侵浸,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站氛谜,受9級特大地震影響掏觉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜值漫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一澳腹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杨何,春花似錦酱塔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至埃跷,卻和暖如春蕊玷,著一層夾襖步出監(jiān)牢的瞬間芦瘾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工集畅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留近弟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓挺智,卻偏偏與公主長得像祷愉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子赦颇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353