星雲精準測試之用例魔方

  精準測試從某個層面來說,是賦予了測試用例真正的生命力,傳統的測試用例僅僅是一些只可以依賴人去理解和分析的文本文件而已,在計算機和算法層面則沒有存在乎義和價值。下圖是精準測試的總體架構圖: 算法

  你們首先可能會比較好奇,「用例魔方」的概念是怎麼來的?測試用例魔方是在精準測試的設計、開發和商業實踐中天然產生的功能集合的一個統稱。當咱們把精準測試的和用例分析相關的功能畫成架構圖形表示的時候,它天然而然地看起來就像魔方,所謂「魔」則是精準測試核心算法所賦予的超能力。架構

  上圖是星雲精準測試系統的整體結構圖,「測試魔方」即分佈在左上角區域。你們知道精準測試的核心技術是測試用例與代碼的追溯關係的創建,而在此之上就能夠構建測試魔方的核心功能區。以下:   框架

  所謂「方」其實是表明測試用例的集合,每一個測試用例用一個小方塊標識,全部測試用例的集合用一個大方塊。如今來看在精準測試架構下,「用例魔方」所可以提供的功能(對精準測試的底層技術不是很瞭解的話,能夠預先溫習下《精準測試框架白皮書》)。精準測試體系中,測試用例對應的代碼邏輯均可以實現全自動的追溯和存儲,所以測試用例就具有了進行深刻分析的基礎。在精準測試的用例魔方中,目前存在三個面(隨着後續功能的增長,將增長分析的面),即迴歸測試用例選取、測試用例聚類分析、測試用最小化,同時輔之以智能缺陷定位技術。下面對「用例魔方」作詳細的說明,選用的工具爲星雲精準測試平臺ThreadingTest產品系列。函數

    首先介紹迴歸測試用例選取。從魔方視圖中能夠看到迴歸用例選取(主要選取可能影響到的重點用例)。精準測試中所謂的迴歸測試和自動化迴歸有很大的差異,咱們聽的比較多的自動化測試中的迴歸實際上是把自動化用例從新運行的意思,而精準測試中的迴歸測試是經過內部算法自動選取新版本修改後可能影響到的測試用例。經過迴歸測試用例選取,解決了新版本上線該對哪些用例進行測試和重點測試的問題,這也是敏捷開發中測試所面臨的最大問題。下面是迴歸測試用例選取的原理圖:工具

   

 原理介紹:測試

   

 測試用例A與測試用例B爲在版本A中進行測試的用例,其綠圈中A一、A二、A三、B2…等爲其測試用例所對應的運行中採集的函數信息。設計

   

 在版本迭代過程當中,版本B也對其測試用例A進行了測試,並添加了測試用例C,精準測試採集其對應的函數信息。3d

   

  當版本C進行迭代發佈時,精準測試根據測試用例A、B、C最後運行的版本所對應的函數信息與版本C的版本函數信息進行比較,根據變化差別進行迴歸優先級排序。code

 

 ① 測試用例A最後運行在版本B中,對應的函數信息爲A一、A二、B一、A3,對比版本C中的函數無代碼變化,計算迴歸優先級值爲0。  blog

 ② 測試用例B由於在版本B中未運行,最後運行的版本爲A,版本A的測試數據B一、B二、B三、C3和版本C中的函數比對,得出函數C3的代碼有變化,計算迴歸優先級值爲1。  

 ③ 測試用例C最後運行在B,對應的函數信息爲C一、C二、C三、A3,和版本C中的函數比對,得出函數C3的代碼有變化,函數C2進行了刪除,計算迴歸優先級值爲3。  

 ④ 結果進行迴歸優先級排序,得出測試用例C迴歸優先級最高優先值爲3>測試用例B迴歸優先值爲1>測試用例A,迴歸優先值0,不須要回歸。  

 當新版本上線後,精準測試系統會自動給出本次發佈波及到的測試用例列表以及收到波及的程度。以下圖:

 

  一般測試用例的分類都是人工根據功能組織進行硬性歸類的,在精準測試體系中,用例魔方中的測試用例爲聚類分析。因爲測試用例都包含有對應的內部代碼執行邏輯,執行路徑直接能夠經過代碼塊或者函數進行舉例計算,例如一個程序總共有10個函數。

 

  「用例魔方」中的聚類結果具備很是實用的價值,體如今如下幾點:

 

 1.經過用例聚類結果,能夠從管理端審覈測試執行的正確性。傳統測試通常由人工執行,所以想確認測試用例是否自己執行有錯誤,或者是否按照預先設定的要求執行了,是很是困難的,這也是測試管理的成本一直很高的一個重要緣由。經過對精準測試「用例魔方」的聚類結果分析,若兩個功能迥異、本不該該分到一塊兒的測試用例被分到了一組,那麼產品經理或者項目管理者會很是容易識別出這裏面存在測試用例的執行錯誤,並在產品發佈的最後一環,及時處理。

   2.經過「用例魔方」的測試用例聚類結果這一功能,能夠發現缺陷分佈的密集區域。由於聚類的依據是用例執行對應的代碼路徑差別信息,聚類結果充分而真實的體現了用例之間的空間感,結果很是有意義。缺陷的分佈通常是有規律的:功能相近的用例若是有出現錯誤,那麼同類型用例出錯的機率也更大。因此當時間不充足的狀況下,能夠依據聚類結果,每一個用例聚類簇隨機選幾個。若是沒有bug,就能夠放鬆對簇內其餘用例的考察,若是發現了缺陷,那麼其它簇內的用例也須要重點考察。

 

  在企業大量應用自動化測試場景下,隨着日積月累,產生了大量的、邏輯重複的測試用例。經過「用例魔方」的測試用例集最小化算法,能夠把重複或者存在包含關係的用例從用例集中剔除出去。原理很是簡單:假設兩個用例,在代碼覆蓋上存在徹底包含關係,那麼被包含的用例就能夠從用例集中剔除。算法所依據的數據依然是測試用例與代碼的追溯關係技術數據。  

  「用例魔方」中另一個精彩的功能是智能的缺陷定位技術,星雲精準測試提供了3種計算公式。

 

  經過智能缺陷定位,測試工程師僅須要標記用例從功能角度的執行狀態(是否存在缺陷),再結合星雲精準測試「用例魔方」自動記錄的對應程序執行的代碼頻譜,就能夠對缺陷進行代碼級的精準定位。  

 1.源代碼  簡單分析第15行代碼,當第十行y<z成立且第十二行x<y不成立且第十四行x<z成立時即得y<z且x>=y且x<z.此時可得y<=x<z,中間數爲x,因此此處正確語句應爲m=x。

 2.建立7個測試用例test一、test二、test3………..test7並進行測試

 ① test1輸入爲3 3 5輸出爲3,預期輸出爲3,符合預期,此用例記爲經過

 ② test2輸入爲1 2 3輸出爲2,預期輸出爲2,符合預期,此用例記爲經過

 ③ test3輸入爲3 2 1輸出爲2,預期輸出爲2,符合預期,此用例記爲經過

 ④ test4輸入爲5 5 5輸出爲5,預期輸出爲5,符合預期,此用例記爲經過

 ⑤ test5輸入爲5 3 4輸出爲4,預期輸出爲4,符合預期,此用例記爲經過

 ⑥ test6輸入爲2 1 3輸出爲1,預期輸出爲2,不符合預期,此用例記爲未經過

 ⑦ test7輸入爲3 2 4輸出爲2,預期輸出爲3,不符合預期,此用例記爲未經過

   3.針對test六、test7提交缺陷,代表test6與test7輸出與預期不符  

 4.打開缺陷分析界面進行分析

   

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

 

 其中aep表示經過且覆蓋到該塊的測試用例的個數、anp表示經過且未覆蓋到該塊的測試用例的個數、aef表示未經過且覆蓋到該塊的測試用例的個數、anf表示未經過且覆蓋到該塊的測試用例的個數。結果表示該塊的可疑度。  

 6.代碼可視化查看位置

 

  關聯源碼以後可根據代碼可視化定位第十二塊位置,根據實際分析可得第十二塊確實爲缺陷語句,分析過程見第一步。

  (你們若是感興趣能夠到星雲測試的官網上www.teststars.cc 試用。)    精準測試的精髓在於經過專用測試軟件實現表層功能和底層代碼的關聯,而且獲取成本很低。它在測試用例執行的過程當中,經過軟件示波器以透明方式自動獲取二者的關聯關係。經過精準測試系統,使針對用例的深刻分析「用例魔方」成爲可能。目前精準測試的核心用例分析算法正在持續加強,「用例魔方」的軟件研發輔助分析功能,爲軟件測試的智能化、專業化成長,帶來曙光和方向。

相關文章
相關標籤/搜索