原創|使用教程|編輯:鄭恭琳|2020-12-24 16:46:07.110|閱讀 386 次
概述:Parasoft Jtest的自動單元測試創建技術消除了單元測試的障礙,使單元測試的日常工作自動化,包括創建、隔離、模擬和維護。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Parasoft Jtest的自動單元測試創建技術消除了單元測試的障礙,使單元測試的日常工作自動化,包括創建、隔離、模擬和維護。
大多數開發團隊都會同意,盡管他們不喜歡它,但是單元測試實際上是非常有價值的。盡管有許多有助于手動測試創建的工具,但是在將業務邏輯添加到測試之前,創建和維護單元測試仍然需要大量手動,耗時且經常令人費解的工作。這樣,盡管有進行大量單元測試的意圖,但是開發團隊通常會執行所需的最小數量的單元測試,或者完全跳過它。
最近的一次客戶調查表明,在某種程度上可以預料到,測試創建、模擬/隔離和維護是阻礙單元測試成功的關鍵問題。圖1顯示了該調查的結果,顯示了開發人員正在使用Java進行單元測試時確定的首要問題。
圖1:調查結果顯示了單元測試引起的關鍵關注領域(百分比)。
為了解決這些主要問題,我們可以轉向自動化軟件測試。在此文中,我將向您展示如何使用Parasoft Jtest自動化測試執行和數據收集,以及自動創建單元測試,以節省測試創建時的時間和精力。Parasoft Jtest的自動單元測試創建技術可以建立測試框架,實例化對象,并為適當的對象和被測方法使用的方法調用配置模擬。它創建了常規的JUnit,完成了所有平凡的工作,因此開發人員可以專注于將人類智能和邏輯應用于他們的測試。
單元測試是迭代的,在敏捷過程中,單元測試具有改善項目成果的良好記錄。當然,經過充分證明的是,在生命周期的早期進行測試是以后檢測并消除昂貴且耗時的系統級錯誤的最佳方法。更具體地說,以下是單元測試的一些主要優點:
為敏捷過程提供敏捷性:敏捷過程依賴于高效,可重復的自動化測試套件,以確保每次迭代都不會陷入“大爆炸”測試周期。敏捷和DevOps的成功很大程度上取決于開發團隊創建可以高效運行的測試套件以及測試盡可能多的功能。
更高的質量和安全性:軟件團隊了解,測試是確保軟件滿足要求的唯一方法,但是團隊經常無法進行足夠的測試,或者在開發生命周期中進行得太晚。特別是安全性,需要在最早的階段就內置到應用程序中,因此必須盡早進行安全性測試。
從長遠來看降低成本:在已發布軟件中發現的軟件錯誤修復成本可能是開發期間的1000倍。在單元測試的早期編碼階段發現的錯誤比后來發現的錯誤便宜得多。在測試自動化和單元測試基礎架構上的短期投資可帶來更好的產品質量、安全性和按時交付的回報。
單元測試的好處以及為什么開發人員仍然避免使用它
不幸的是,盡管希望獲得更好的結果,但是盡管有這些好處,開發人員仍在努力進行單元測試。上述調查結果也說明了這些斗爭,其中包括:
創建測試是額外的工作,而且通常很乏味:可以理解,單元測試是額外的工作,通常被視為編程的最不期望的方面。在嘗試維護項目目標和截止日期的同時創建一個全面的測試套件是開發團隊面臨的兩個相互競爭的壓力。
測試維護非常昂貴:就像代碼一樣,單元測試也需要維護。任何代碼更改都可能導致相關測試的更改。不僅如此,由于代碼庫修改而失敗的測試似乎無關緊要,從而導致測試套件不穩定。額外的維護在許多開發人員的心中創造了“雙重工作”。
模擬和隔離被測單元既困難又耗時:隔離被測單元至關重要,但要模擬依賴關系,這可能是一個耗時的過程。
如果軟件開發團隊想獲得徹底的單元測試的好處,那么他們必須通過創建、隔離和維護測試來解決這些問題,而解決方案就是自動化。Parasoft Jtest的自動單元測試創建工具提供了測試創建和維護所需的幫助,同時在開發人員的IDE中工作并利用現有的測試和模擬框架。
創建單元測試很繁瑣,并且將注意力從項目中更有趣的部分轉移開來。代碼本身是重復的,通常需要與被測代碼一樣多的工作,最重要的是,單元測試代碼本身需要像任何代碼一樣進行修復和調試。幸運的是,單元測試非常適合自動化,而來自單元測試工具的自動指導可以極大地簡化測試的創建,減少調試和修復的數量,并收集結果和指標以提供項目分析。
例如,許多IDE提供了針對JUnit的單元測試創建向導,但沒有提供“內容”來完成該過程。斷言需要手動定義,并且如果使用模擬框架,則需要大量的手動編碼。相反,Parasoft Jtest在開發人員的IDE中提供了上下文相關的實時幫助。通過自動創建單元測試,當您利用單元測試工具執行以下操作時,快速簡單地完成了簡單骨架單元測試中缺少的“內容”:
創建測試框架,實例化對象,并配置適當的模擬對象和方法
執行測試自動化執行的運行時分析,以突出顯示在測試過程中更改的對象值,并建議對這些值進行驗證的斷言。
標識應該模擬的方法調用,以便更好地隔離測試中的代碼
檢測已創建但未在測試完成后釋放的系統資源,從而可能創建不穩定的測試環境
收集代碼覆蓋率和其他指標
為了解決這個問題,我們來看一個例子。在這里,用IDE調用Parasoft Jtest的單元測試助手來創建參數化測試:
該工具將創建以下單元測試代碼,此時開發人員將根據需要完成參數:
為了為不同的參數值創建測試用例,Parasoft Jtest的單元測試助手提供了一個測試用例向導:
降低模擬復雜度
單元測試意味著隔離被測對象,如果存在許多依賴性,則需要大量工作。即使使用Mockito或PowerMock這樣的模擬框架,仍然需要大量的手動編碼。使用自動測試助手工具,您可以檢測依賴關系并自動填寫框架所需的詳細信息。
該工具本身會分析被測代碼,自動檢測依賴關系,并向開發人員提出建議。
例如,在這里我們正在執行IWorkspaceClass類的以下單元測試:
在運行時會檢測到依賴關系,該工具建議模擬發現的依賴關系:
使用該工具選擇“模擬”將通過單元測試生成必要的模擬代碼。生成此代碼后,可以對其進行自定義以表示所需的正確邏輯。依賴關系的自動檢測和隨后的模擬代碼創建極大地減少了模擬對象所需的手動編碼,并且可能容易出錯。
測試套件的維護與創建測試所需的許多工作重疊,例如創建新測試,修改測試以適合基礎邏輯、模擬依賴關系、測試執行和驗證。在測試維護期間從Parasoft Jtest的單元測試助手獲得幫助與在創建過程中一樣有價值,因為它可以提供有關在測試執行期間收集的運行時分析結果的更新反饋。例如,在運行時檢測到被測對象中的新依賴關系,該工具會提示開發人員如何處理它。
在此階段同樣重要的是,確保斷言仍然有效。Parasoft Jtest單元測試助手提供了一些建議,這些建議可以檢測代碼中的更改并更新斷言以反映新的業務邏輯。
已經進行單元測試的Java開發人員可能會使用JUnit,并可能使用其項目的斷言框架,例如Mockito或PowerMock。測試自動化工具需要利用這些現有工具,因為替換單元測試中的現有投資將消除任何成本和時間收益。Parasoft Jtest的單元測試助手與這些現有工具無縫集成,這一點至關重要。
單元測試具有明顯的好處,盡管大多數開發團隊都意識到了這一點,但是許多人卻因創建和維護測試而受阻。使用Parasoft Jtest的自動化單元測試技術將幫助用戶消除這些障礙,使單元測試的平凡方面自動化,包括創建,隔離,模擬和維護。為了加快采用速度,Parasoft Jtest利用了開發團隊在測試和模擬框架上的現有投資,并在為產品帶來高品質的同時,還給了開發人員更多的時間。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn