爲自動化測試裝上精準測試的“翅膀

 現代的專業軟件測試中心,隨着項目的迭代,通常針對每個系統構建了大量的自動化測試用例集,而啓動一次全量的自動化測試以CI級觸發,使之大比率通過,非常困難。測試工程師們常常需要投入很高的成本,把大量精力花在自動化用例失敗排查上面,然而發現有效BUG的概率很低。在反覆排查無果、心神俱疲的情況下,幾乎對自動化產生絕望之心,視之爲雞肋,用之無用,棄之可惜,讓測試中心極爲頭疼。
 
 如何讓自動化用例發揮它們應有的效用,讓QA工作不那麼沉重呢?星雲測試針對這一難題,進行了精準測試與自動化測試無縫對接的技術方案研發。經過大量企業實施與驗證,精準測試的數據流最終可以“無感”對接到自動化測試中,極大擴展了自動化測試的優勢,徹底改進了自動化測試變更管理難的短板。
 
 這一技術方案的推出,就像給自動化測試裝上“精準測試”的眼睛和翅膀,瞬間就具備了多種飛躍功能。比如:
 1) 自動化測試用例與源碼自動建立關聯
 2) 同步進行智能迴歸用例選取
 3) 有效縮小自動化測試執行範圍
 4) 即時分析需要進行維護的測試用例集合
 5) 全自動追蹤每個測試用例的執行代碼路徑
 6) 當自動化執行結束後可輔助直接定位自動化用例的代碼出錯點
 7) 對自動化測試用例集進行分析,例如聚類分析,以及最小用例集合分析等
 8) 對測試用例集的優化給出指導意見
 9) 給出測試用例集運行的總體覆蓋率信息
 10) 協助有效的對用例集進行增補
 11) 增量代碼覆蓋率分析等等。
 
 本文重點以星雲精準測試產品與單元測試框架JUnit爲例進行說明。
 
 單元測試一般通過寫測試用例來測試:核心類方法,異常處理,業務邏輯等。實現Junit單元測試與精準測試的無縫對接後,基本可以確保真正的測試充分性。因爲在運行單元測試用例的時候,精準測試系統中將自動生成相應測試用例,並將每個單元測試的代碼覆蓋情況詳細的記錄到精準測試系統中,由於精準測試自帶測試用例與代碼相互追溯以及覆蓋率可視化的特性,你可以對當前所寫的單元測試是否充分,一覽無餘。
 
下圖是精準測試與Junit單元測試無縫對接實現自動化測試的架構示意圖。
爲自動化測試裝上精準測試的“翅膀
  該方案主要特點是:充分利用了JUnit框架的繼承特性,所有精準測試必要的通信和控制邏輯可以全部通過基類實現。也就是說,對於原來所有自動化測試用例集,只需要增加一個對於封裝的ParentTest的繼承。即:不需要對原有測試用例的實現代碼做任何改動,就可以實現與星雲精準測試平臺的對接。對接完成後,JUnit測試的運行過程中,測試用例會自動的在星雲精準測試系統中創建,並且全自動記錄每個自動化測試用例的代碼覆蓋信息。
 
  下面是對ParentTest擴展基類主要方法的描述,該解決方案主要針對Junit框架自身的註解方法進行擴展:
@Before:初始化方法對於每一個測試方法都要執行一次,在每個測試方法之前執行,@After:釋放資源,在每個測試方法之後執行,@BeforeClass:在當前類的所有測試方法之前執行,@AfterClass:在當前類中的所有測試方法之後執行。一個JUnit4的單元測試用例執行順序爲:
 
 @BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
 
 因此可針對這個特性在不同註解代碼中進行定製,定製一個公共的類,當其他的單元測試都繼承自該類時,也運行相同的方法。通過在不同註解中添加登錄版本,創建測試用例並開始,結束測試用例以及登出版本命令,併發送至TTFront組件實現與TT的交互,並不影響單元測試本身的測試程序和測試結果。
 
 TTfront在接受到命令後,登錄對應版本並記錄用戶名,創建完成測試用例後當測試用例運行時刻通過軟件示波器實時採集該測試用例對應的覆蓋率數據,將該部分數據通過用戶名匹配到該測試用例。在TT客戶端可以看到測試用例以及該單元測試對應的函數覆蓋情況以及代碼覆蓋情況。
 
 只需要在創建單元測試的時候類繼承自已經封裝好的ParentTest類,即可與TT無縫對接實現自動化測試。
 Junit單元測試與TT對接的實施案例以及效果圖:
 1、創建測試用例時繼承自ParentTest類
爲自動化測試裝上精準測試的“翅膀
 2、修改ParentTest中的項目,版本,用戶密碼以及TT服務端IP
爲自動化測試裝上精準測試的“翅膀
 3、對應修改引入的包(以mvn項目爲例),JavaPaser包主要包含了插裝代碼以及ParentTest類必須要的TT處理邏輯需要的庫的引用。
爲自動化測試裝上精準測試的“翅膀
對被測試代碼通過TT進行插裝打包,注意Junit自動化測試用例代碼不需要插裝,只需要插裝Junit測試的業務邏輯代碼即可。
 4、開始單元測試,在測試用例執行過程中,打開TT客戶端示波器組件,顯示實時採集的覆蓋率波形,看到測試用例在TT系統中自動建立。TT客戶端效果圖(生成對應測試用例以及該測試用例的覆蓋情況)

爲自動化測試裝上精準測試的“翅膀
 以上講述了精準測試系統如何無縫與現有自動化測試框架的對接。除了Junit,其他自動化測試框架,均可以參照此思路進行實現(登錄星雲網站www.teststars.cc 離線企業測試中心即可免費試用)。精準測試系統與自動化進行對接後,可以使無法看清的黑盒狀態中的自動化測試執行,變得有跡可循。基於精準測試強大的測試分析系統,可以對自動化測試執行和規劃進程進行持續的優化,這一方案,可以有效解決自動化測試的投入產出比居高不下的業界難題。

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