原創|使用教程|編輯:鄭恭琳|2020-12-01 15:51:02.243|閱讀 260 次
概述:單元測試是測試軟件的單個單元/組件的最佳實踐,但是對于Java開發人員而言,這可能既乏味又昂貴。很難通過人工斷言來測試每個單元的正確行為,并通過模擬來隔離每個方法,并且單元測試本身容易受到錯誤和誤解的影響。為了改善這種情況,您可以使用運行時分析工具來檢測數據和控制流,外部依存關系,并計算測試代碼覆蓋率。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
為了實現單元測試的好處,您可以在運行期間通過運行時分析觀察單元測試。單元測試執行期間的運行時分析對于提高測試效率和有效性至關重要。
單元測試是測試軟件的單個單元/組件的最佳實踐,但是對于Java開發人員而言,這可能既乏味又昂貴。很難通過人工斷言來測試每個單元的正確行為,并通過模擬來隔離每個方法,并且單元測試本身容易受到錯誤和誤解的影響。為了改善這種情況,您可以使用運行時分析工具來檢測數據和控制流,外部依存關系,并計算測試代碼覆蓋率。
借助從運行時分析中收集到的數據,諸如Parasoft Jtest之類的企業級解決方案可以通過自動推薦正確行為的斷言以及模擬方法來改善測試隔離性,從而提示開發人員如何改進測試。自動單元測試生成和運行時分析之間的這種集成減少了Java單元測試所需的手動干預。
單元測試是一種眾所周知的做法,但是其實現需要在許多項目中進行改進。單元測試做得很好,提高了敏捷過程的敏捷性,提高了質量和安全性,并節省了長期成本。
不幸的是,盡管希望獲得更好的結果,但是盡管有這些好處,開發人員仍然無法在單元測試中掙扎。測試創建和維護所需的時間和精力可能太多,無法證明增加測試工作是合理的。通常,測試套件很脆弱,因為單元/對象與依賴項之間的隔離性較差。正確地模擬依賴關系,就像創建確定正確程序邏輯所需的斷言一樣,成為軟件測試人員的禍根。即使對方案進行參數化測試也可能是乏味且耗時的。
如果軟件開發團隊希望獲得徹底的單元測試的好處,則必須通過創建,隔離和維護測試來解決這些問題。答案從測試自動化工具開始,但僅自動化測試執行并收集結果是不夠的。運行時分析是觀察運行的可執行文件并記錄關鍵指標的過程,是一種創新的方法,可以幫助改善單元測試的創建、模擬和測試穩定性。
在大多數情況下,開發人員并不認為運行時分析在單元測試的早期階段很重要。大多數工具用于捕獲單元測試遺漏的錯誤,或者僅用于計算代碼覆蓋率。但是,盡管這些好處很重要,但是運行時分析還可以觀察單元測試的第一次迭代的執行情況,以提出改進測試的建議,并檢測干擾測試穩定性的測試運行時環境的更改。
JUnit之類的測試框架會創建稀疏代碼,需要開發人員進一步輸入。這項工作很繁瑣,因此可以根據觀察到的程序邏輯自動填充更多細節。例如,Parasoft Jtest可以自動生成以下單元測試:
同樣,對于帶有參數化輸入的單元測試,如下所示:
由于創建的測試從一開始就是可執行的,因此可以通過運行時分析來觀察它們的結果和執行流程。例如,測試可能由于引發異常而失敗,如下所示。
此外,運行時工具會觀察到依賴關系的執行路徑,并建議可能的模擬,以增加測試的隔離度。盡管目視檢查被測對象會發現其依賴關系,但是自動檢測和模擬這些依賴關系可以節省許多繁瑣且容易出錯的工作。
在下面的示例中,Parasoft Jtest根據單元測試的執行軌跡為開發人員提供了模擬對象的選擇:
在這種情況下,添加可模擬方法模式會將方法添加到要由諸如PowerMock之類的模擬框架處理的模擬列表中。
如下所示,也可以模擬靜態構造函數。
在充分了解執行流程以及方法調用中使用的參數之后,可以使用運行時分析向開發人員提供有用的建議,以改進測試代碼。盡管提供了斷言,但靜態地,當創建測試時,它們可能未啟用或正確。在執行測試時,失敗和遺漏的斷言會觸發警告,然后會提出建議以解決問題。
例如,在創建新測試之后,并且沒有對建議的斷言進行注釋,您將看到以下內容:
或者,例如,如果斷言失敗,則顯示以下內容:
無論發生什么情況,都是有關斷言的糾正措施的持續反饋,這會在創建測試以完成單元測試時關閉循環。另外,隨著被測設備的變化,這些變化可以以相同的方式處理,從而不斷減少了所需的手動測試維護。
運行時分析還可以檢測執行期間測試環境中的變化,這些變化會影響為后續測試重新創建相同測試環境的能力。一次通過但以后失敗的測試可能是造成挫敗感,浪費時間和精力的主要原因。您可以使用運行時分析檢測到的不穩定性示例包括:
至關重要的是,每個測試執行都必須有相同的起點,以確保獲得可靠的結果。通過運行時檢測防止測試不穩定,從而消除了測試調試階段的猜測。
因此,您可以看到運行時分析不僅用于計算代碼覆蓋率。測試執行期間的運行時分析對于提高測試效率和有效性至關重要。監視執行路徑可提供有關依賴項的信息,以改善對依賴項和模擬的處理。可以監視斷言,自動建議可以幫助提高測試保真度。在運行時測試環境中檢測到影響測試穩定性的更改,可以消除挫敗感并減少測試代碼的調試周期。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn