現代的專業軟體測試中心,随着項目的疊代,通常針對每個系統建構了大量的自動化測試用例集,而啟動一次全量的自動化測試以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 離線企業測試中心即可免費試用)。精準測試系統與自動化進行對接後,可以使無法看清的黑盒狀态中的自動化測試執行,變得有迹可循。基于精準測試強大的測試分析系統,可以對自動化測試執行和規劃程序進行持續的優化,這一方案,可以有效解決自動化測試的投入産出比居高不下的業界難題。