精準測試與自動化測試的無縫對接

現(xiàn)代的專業(yè)軟件測試中心,隨著項目的迭代,通常針對每個系統(tǒng)構建了大量的自動化測試用例集,而啟動一次全量的自動化測試以CI級觸發(fā),使之大比率通過,非常困難。測試工程師們常常需要投入很高的成本,把大量精力花在自動化用例失敗排查上面,然而發(fā)現(xiàn)有效BUG的概率很低。在反復排查無果、心神俱疲的情況下,幾乎對自動化產(chǎn)生絕望之心,視之為雞肋,用之無用,棄之可惜,讓測試中心極為頭疼。
 
 如何讓自動化用例發(fā)揮它們應有的效用,讓QA工作不那么沉重呢?星云測試針對這一難題,進行了精準測試與自動化測試無縫對接的技術方案研發(fā)。經(jīng)過大量企業(yè)實施與驗證,精準測試的數(shù)據(jù)流最終可以“無感”對接到自動化測試中,極大擴展了自動化測試的優(yōu)勢,徹底改進了自動化測試變更管理難的短板。
 
 這一技術方案的推出,就像給自動化測試裝上“精準測試”的眼睛和翅膀,瞬間就具備了多種飛躍功能。比如:
 1) 自動化測試用例與源碼自動建立關聯(lián)
 2) 同步進行智能回歸用例選取
 3) 有效縮小自動化測試執(zhí)行范圍
 4) 即時分析需要進行維護的測試用例集合
 5) 全自動追蹤每個測試用例的執(zhí)行代碼路徑
 6) 當自動化執(zhí)行結束后可輔助直接定位自動化用例的代碼出錯點
 7) 對自動化測試用例集進行分析,例如聚類分析,以及最小用例集合分析等
 8) 對測試用例集的優(yōu)化給出指導意見
 9) 給出測試用例集運行的總體覆蓋率信息
 10) 協(xié)助有效的對用例集進行增補
 11) 增量代碼覆蓋率分析等等。
 
 本文重點以星云精準測試產(chǎn)品與單元測試框架JUnit為例進行說明。
 
 單元測試一般通過寫測試用例來測試:核心類方法,異常處理,業(yè)務邏輯等。實現(xiàn)Junit單元測試與精準測試的無縫對接后,基本可以確保真正的測試充分性。因為在運行單元測試用例的時候,精準測試系統(tǒng)中將自動生成相應測試用例,并將每個單元測試的代碼覆蓋情況詳細的記錄到精準測試系統(tǒng)中,由于精準測試自帶測試用例與代碼相互追溯以及覆蓋率可視化的特性,你可以對當前所寫的單元測試是否充分,一覽無余。
 
下圖是精準測試與Junit單元測試無縫對接實現(xiàn)自動化測試的架構示意圖。


image

  該方案主要特點是:充分利用了JUnit框架的繼承特性,所有精準測試必要的通信和控制邏輯可以全部通過基類實現(xiàn)。也就是說,對于原來所有自動化測試用例集,只需要增加一個對于封裝的ParentTest的繼承。即:不需要對原有測試用例的實現(xiàn)代碼做任何改動,就可以實現(xiàn)與星云精準測試平臺的對接。對接完成后,JUnit測試的運行過程中,測試用例會自動的在星云精準測試系統(tǒng)中創(chuàng)建,并且全自動記錄每個自動化測試用例的代碼覆蓋信息。
 
  下面是對ParentTest擴展基類主要方法的描述,該解決方案主要針對Junit框架自身的注解方法進行擴展:
@Before:初始化方法對于每一個測試方法都要執(zhí)行一次,在每個測試方法之前執(zhí)行,@After:釋放資源,在每個測試方法之后執(zhí)行,@BeforeClass:在當前類的所有測試方法之前執(zhí)行,@AfterClass:在當前類中的所有測試方法之后執(zhí)行。一個JUnit4的單元測試用例執(zhí)行順序為:
 
 @BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
 
 因此可針對這個特性在不同注解代碼中進行定制,定制一個公共的類,當其他的單元測試都繼承自該類時,也運行相同的方法。通過在不同注解中添加登錄版本,創(chuàng)建測試用例并開始,結束測試用例以及登出版本命令,并發(fā)送至TTFront組件實現(xiàn)與TT的交互,并不影響單元測試本身的測試程序和測試結果。
 
 TTfront在接受到命令后,登錄對應版本并記錄用戶名,創(chuàng)建完成測試用例后當測試用例運行時刻通過軟件示波器實時采集該測試用例對應的覆蓋率數(shù)據(jù),將該部分數(shù)據(jù)通過用戶名匹配到該測試用例。在TT客戶端可以看到測試用例以及該單元測試對應的函數(shù)覆蓋情況以及代碼覆蓋情況。
 
 只需要在創(chuàng)建單元測試的時候類繼承自已經(jīng)封裝好的ParentTest類,即可與TT無縫對接實現(xiàn)自動化測試。
 Junit單元測試與TT對接的實施案例以及效果圖:
 1、創(chuàng)建測試用例時繼承自ParentTest類


image

 2、修改ParentTest中的項目,版本,用戶密碼以及TT服務端IP
image

 3、對應修改引入的包(以mvn項目為例),JavaPaser包主要包含了插裝代碼以及ParentTest類必須要的TT處理邏輯需要的庫的引用。
image

對被測試代碼通過TT進行插裝打包,注意Junit自動化測試用例代碼不需要插裝,只需要插裝Junit測試的業(yè)務邏輯代碼即可。
 4、開始單元測試,在測試用例執(zhí)行過程中,打開TT客戶端示波器組件,顯示實時采集的覆蓋率波形,看到測試用例在TT系統(tǒng)中自動建立。TT客戶端效果圖(生成對應測試用例以及該測試用例的覆蓋情況)

image

 以上講述了精準測試系統(tǒng)如何無縫與現(xiàn)有自動化測試框架的對接。除了Junit,其他自動化測試框架,均可以參照此思路進行實現(xiàn)(登錄星云網(wǎng)站www.teststars.cc 離線企業(yè)測試中心即可免費試用)。精準測試系統(tǒng)與自動化進行對接后,可以使無法看清的黑盒狀態(tài)中的自動化測試執(zhí)行,變得有跡可循?;诰珳蕼y試強大的測試分析系統(tǒng),可以對自動化測試執(zhí)行和規(guī)劃進程進行持續(xù)的優(yōu)化,這一方案,可以有效解決自動化測試的投入產(chǎn)出比居高不下的業(yè)界難題。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容