您好,登錄后才能下訂單哦!
精準(zhǔn)測試從某個層面來講,是賦予了測試用例真正的生命力,傳統(tǒng)的測試用例僅僅是一些只能夠依賴人去理解和分析的文本文件而已,在計算機和算法層面則沒有存在意義和價值。下圖是精準(zhǔn)測試的整體架構(gòu)圖:
大家首先可能會比較好奇,“用例魔方”的概念是怎么來的?測試用例魔方是在精準(zhǔn)測試的設(shè)計、開發(fā)和商業(yè)實踐中自然產(chǎn)生的功能集合的一個統(tǒng)稱。當(dāng)我們把精準(zhǔn)測試的和用例分析相關(guān)的功能畫成架構(gòu)圖形表示的時候,它自然而然地看起來就像魔方,所謂“魔”則是精準(zhǔn)測試核心算法所賦予的超能力。
上圖是星云精準(zhǔn)測試系統(tǒng)的總體結(jié)構(gòu)圖,“測試魔方”即分布在左上角區(qū)域。大家知道精準(zhǔn)測試的核心技術(shù)是測試用例與代碼的追溯關(guān)系的建立,而在此之上就可以構(gòu)建測試魔方的核心功能區(qū)。如下:
所謂“方”實際上是代表測試用例的集合,每個測試用例用一個小方塊標(biāo)識,所有測試用例的集合用一個大方塊?,F(xiàn)在來看在精準(zhǔn)測試架構(gòu)下,“用例魔方”所能夠提供的功能(對精準(zhǔn)測試的底層技術(shù)不是很了解的話,可以預(yù)先溫習(xí)下《精準(zhǔn)測試框架白皮書》)。精準(zhǔn)測試體系中,測試用例對應(yīng)的代碼邏輯都可以實現(xiàn)全自動的追溯和存儲,因此測試用例就具備了進(jìn)行深入分析的基礎(chǔ)。在精準(zhǔn)測試的用例魔方中,目前存在三個面(隨著后續(xù)功能的增加,將增加分析的面),即回歸測試用例選取、測試用例聚類分析、測試用最小化,同時輔之以智能缺陷定位技術(shù)。下面對“用例魔方”做詳細(xì)的說明,選用的工具為星云精準(zhǔn)測試平臺ThreadingTest產(chǎn)品系列。
首先介紹回歸測試用例選取。從魔方視圖中可以看到回歸用例選?。ㄖ饕x取可能影響到的重點用例)。精準(zhǔn)測試中所謂的回歸測試和自動化回歸有很大的差別,我們聽的比較多的自動化測試中的回歸其實是把自動化用例重新運行的意思,而精準(zhǔn)測試中的回歸測試是通過內(nèi)部算法自動選取新版本修改后可能影響到的測試用例。通過回歸測試用例選取,解決了新版本上線該對哪些用例進(jìn)行測試和重點測試的問題,這也是敏捷開發(fā)中測試所面臨的最大問題。下面是回歸測試用例選取的原理圖:
原理介紹:
測試用例A與測試用例B為在版本A中進(jìn)行測試的用例,其綠圈中A1、A2、A3、B2…等為其測試用例所對應(yīng)的運行中采集的函數(shù)信息。
在版本迭代過程中,版本B也對其測試用例A進(jìn)行了測試,并添加了測試用例C,精準(zhǔn)測試采集其對應(yīng)的函數(shù)信息。
當(dāng)版本C進(jìn)行迭代發(fā)布時,精準(zhǔn)測試根據(jù)測試用例A、B、C最后運行的版本所對應(yīng)的函數(shù)信息與版本C的版本函數(shù)信息進(jìn)行比較,根據(jù)變化差異進(jìn)行回歸優(yōu)先級排序。
?、? 測試用例A最后運行在版本B中,對應(yīng)的函數(shù)信息為A1、A2、B1、A3,對比版本C中的函數(shù)無代碼變化,計算回歸優(yōu)先級值為0。
?、? 測試用例B因為在版本B中未運行,最后運行的版本為A,版本A的測試數(shù)據(jù)B1、B2、B3、C3和版本C中的函數(shù)比對,得出函數(shù)C3的代碼有變化,計算回歸優(yōu)先級值為1。
③ 測試用例C最后運行在B,對應(yīng)的函數(shù)信息為C1、C2、C3、A3,和版本C中的函數(shù)比對,得出函數(shù)C3的代碼有變化,函數(shù)C2進(jìn)行了刪除,計算回歸優(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)會自動給出本次發(fā)布波及到的測試用例列表以及收到波及的程度。如下圖:
通常測試用例的分類都是人工根據(jù)功能組織進(jìn)行硬性歸類的,在精準(zhǔn)測試體系中,用例魔方中的測試用例為聚類分析。由于測試用例都包含有對應(yīng)的內(nèi)部代碼執(zhí)行邏輯,執(zhí)行路徑直接可以通過代碼塊或者函數(shù)進(jìn)行舉例計算,例如一個程序總共有10個函數(shù)。
“用例魔方”中的聚類結(jié)果具有非常實用的價值,體現(xiàn)在以下幾點:
1.通過用例聚類結(jié)果,可以從管理端審核測試執(zhí)行的正確性。傳統(tǒng)測試一般由人工執(zhí)行,因此想確認(rèn)測試用例是否本身執(zhí)行有錯誤,或者是否按照預(yù)先設(shè)定的要求執(zhí)行了,是非常困難的,這也是測試管理的成本一直很高的一個重要原因。通過對精準(zhǔn)測試“用例魔方”的聚類結(jié)果分析,若兩個功能迥異、本不應(yīng)該分到一起的測試用例被分到了一組,那么產(chǎn)品經(jīng)理或者項目管理者會非常容易識別出這里面存在測試用例的執(zhí)行錯誤,并在產(chǎn)品發(fā)布的最后一環(huán),及時處理。
2.通過“用例魔方”的測試用例聚類結(jié)果這一功能,可以發(fā)現(xiàn)缺陷分布的密集區(qū)域。因為聚類的依據(jù)是用例執(zhí)行對應(yīng)的代碼路徑差異信息,聚類結(jié)果充分而真實的體現(xiàn)了用例之間的空間感,結(jié)果非常有意義。缺陷的分布一般是有規(guī)律的:功能相近的用例如果有出現(xiàn)錯誤,那么同類型用例出錯的概率也更大。所以當(dāng)時間不充足的情況下,可以依據(jù)聚類結(jié)果,每個用例聚類簇隨機選幾個。如果沒有bug,就可以放松對簇內(nèi)其他用例的考察,如果發(fā)現(xiàn)了缺陷,那么其它簇內(nèi)的用例也需要重點考察。
在企業(yè)大量應(yīng)用自動化測試場景下,隨著日積月累,產(chǎn)生了大量的、邏輯重復(fù)的測試用例。通過“用例魔方”的測試用例集最小化算法,可以把重復(fù)或者存在包含關(guān)系的用例從用例集中剔除出去。原理非常簡單:假設(shè)兩個用例,在代碼覆蓋上存在完全包含關(guān)系,那么被包含的用例就可以從用例集中剔除。算法所依據(jù)的數(shù)據(jù)依然是測試用例與代碼的追溯關(guān)系技術(shù)數(shù)據(jù)。
“用例魔方”中另外一個精彩的功能是智能的缺陷定位技術(shù),星云精準(zhǔn)測試提供了3種計算公式。
通過智能缺陷定位,測試工程師僅需要標(biāo)記用例從功能角度的執(zhí)行狀態(tài)(是否存在缺陷),再結(jié)合星云精準(zhǔn)測試“用例魔方”自動記錄的對應(yīng)程序執(zhí)行的代碼頻譜,就可以對缺陷進(jìn)行代碼級的精準(zhǔn)定位。
1.源代碼
簡單分析第15行代碼,當(dāng)?shù)谑衴<z成立且第十二行x<y不成立且第十四行x<z成立時即得y<z且x>=y且x<z.此時可得y<=x<z,中間數(shù)為x,所以此處正確語句應(yīng)為m=x。
2.創(chuàng)建7個測試用例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)行分析
5.可疑度算法包括如下三種,可自主選擇
其中aep表示通過且覆蓋到該塊的測試用例的個數(shù)、anp表示通過且未覆蓋到該塊的測試用例的個數(shù)、aef表示未通過且覆蓋到該塊的測試用例的個數(shù)、anf表示未通過且覆蓋到該塊的測試用例的個數(shù)。結(jié)果表示該塊的可疑度。
6.代碼可視化查看位置
關(guān)聯(lián)源碼之后可根據(jù)代碼可視化定位第十二塊位置,根據(jù)實際分析可得第十二塊確實為缺陷語句,分析過程見第一步。
?。ù蠹胰绻信d趣可以到星云測試的官網(wǎng)上www.teststars.cc 試用。)
精準(zhǔn)測試的精髓在于通過專用測試軟件實現(xiàn)表層功能和底層代碼的關(guān)聯(lián),并且獲取成本很低。它在測試用例執(zhí)行的過程中,通過軟件示波器以透明方式自動獲取兩者的關(guān)聯(lián)關(guān)系。通過精準(zhǔn)測試系統(tǒng),使針對用例的深入分析“用例魔方”成為可能。目前精準(zhǔn)測試的核心用例分析算法正在持續(xù)增強,“用例魔方”的軟件研發(fā)輔助分析功能,為軟件測試的智能化、專業(yè)化成長,帶來曙光和方向。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。