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