星雲精準測試之用例魔方

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

  大家首先可能會比較好奇,“用例魔方”的概念是怎麼來的?測試用例魔方是在精準測試的設計、開發和商業實踐中自然產生的功能集合的一個統稱。當我們把精準測試的和用例分析相關的功能畫成架構圖形表示的時候,它自然而然地看起來就像魔方,所謂“魔”則是精準測試核心算法所賦予的超能力。
上圖是星雲精準測試系統的總體結構圖,“測試魔方”即分佈在左上角區域。大家知道精準測試的核心技術是測試用例與代碼的追溯關係的建立,而在此之上就可以構建測試魔方的核心功能區。如下:
 
星雲精準測試之用例魔方

  所謂“方”實際上是代表測試用例的集合,每個測試用例用一個小方塊標識,所有測試用例的集合用一個大方塊。現在來看在精準測試架構下,“用例魔方”所能夠提供的功能(對精準測試的底層技術不是很瞭解的話,可以預先溫習下《精準測試框架白皮書》)。精準測試體系中,測試用例對應的代碼邏輯都可以實現全自動的追溯和存儲,因此測試用例就具備了進行深入分析的基礎。在精準測試的用例魔方中,目前存在三個面(隨着後續功能的增加,將增加分析的面),即迴歸測試用例選取、測試用例聚類分析、測試用最小化,同時輔之以智能缺陷定位技術。下面對“用例魔方”做詳細的說明,選用的工具爲星雲精準測試平臺ThreadingTest產品系列。
 
  首先介紹迴歸測試用例選取。從魔方視圖中可以看到迴歸用例選取(主要選取可能影響到的重點用例)。精準測試中所謂的迴歸測試和自動化迴歸有很大的差別,我們聽的比較多的自動化測試中的迴歸其實是把自動化用例重新運行的意思,而精準測試中的迴歸測試是通過內部算法自動選取新版本修改後可能影響到的測試用例。通過迴歸測試用例選取,解決了新版本上線該對哪些用例進行測試和重點測試的問題,這也是敏捷開發中測試所面臨的最大問題。下面是迴歸測試用例選取的原理圖:
 星雲精準測試之用例魔方
 
 原理介紹:
星雲精準測試之用例魔方 
 
 測試用例A與測試用例B爲在版本A中進行測試的用例,其綠圈中A1、A2、A3、B2…等爲其測試用例所對應的運行中採集的函數信息。
 星雲精準測試之用例魔方
 
 在版本迭代過程中,版本B也對其測試用例A進行了測試,並添加了測試用例C,精準測試採集其對應的函數信息。
 星雲精準測試之用例魔方
 
  當版本C進行迭代發佈時,精準測試根據測試用例A、B、C最後運行的版本所對應的函數信息與版本C的版本函數信息進行比較,根據變化差異進行迴歸優先級排序。
 
 ① 測試用例A最後運行在版本B中,對應的函數信息爲A1、A2、B1、A3,對比版本C中的函數無代碼變化,計算迴歸優先級值爲0。
 
 ② 測試用例B因爲在版本B中未運行,最後運行的版本爲A,版本A的測試數據B1、B2、B3、C3和版本C中的函數比對,得出函數C3的代碼有變化,計算迴歸優先級值爲1。
 
 ③ 測試用例C最後運行在B,對應的函數信息爲C1、C2、C3、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個測試用例test1、test2、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.針對test6、test7提交缺陷,表明test6與test7輸出與預期不符
 
 4.打開缺陷分析界面進行分析
 
星雲精準測試之用例魔方
 
 5.可疑度算法包括如下三種,可自主選擇
 
星雲精準測試之用例魔方

 其中aep表示通過且覆蓋到該塊的測試用例的個數、anp表示通過且未覆蓋到該塊的測試用例的個數、aef表示未通過且覆蓋到該塊的測試用例的個數、anf表示未通過且覆蓋到該塊的測試用例的個數。結果表示該塊的可疑度。
 
 6.代碼可視化查看位置
星雲精準測試之用例魔方
 
  關聯源碼之後可根據代碼可視化定位第十二塊位置,根據實際分析可得第十二塊確實爲缺陷語句,分析過程見第一步。
  (大家如果感興趣可以到星雲測試的官網上www.teststars.cc 試用。)
  精準測試的精髓在於通過專用測試軟件實現表層功能和底層代碼的關聯,並且獲取成本很低。它在測試用例執行的過程中,通過軟件示波器以透明方式自動獲取兩者的關聯關係。通過精準測試系統,使針對用例的深入分析“用例魔方”成爲可能。目前精準測試的核心用例分析算法正在持續增強,“用例魔方”的軟件研發輔助分析功能,爲軟件測試的智能化、專業化成長,帶來曙光和方向。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章