翻譯|使用教程|編輯:況魚杰|2020-11-25 14:15:39.270|閱讀 244 次
概述:為了實現(xiàn)單元測試的優(yōu)勢,可以在單元測試執(zhí)行期間通過運行時分析來觀察單元測試。單元測試執(zhí)行過程中的運行時分析對于提高測試效率和效果至關(guān)重要。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
為了實現(xiàn)單元測試的優(yōu)勢,可以在單元測試執(zhí)行期間通過運行時分析來觀察單元測試。單元測試執(zhí)行過程中的運行時分析對于提高測試效率和效果至關(guān)重要。

單元測試是測試軟件單個單元/組件的最佳實踐,但對于Java開發(fā)人員來說,它可能是乏味的,而且成本很高。用手動來測試每個單元的行為是否正確,用脫離來隔離每個方法,這是很費力的,而且單元測試本身也有可能出現(xiàn)錯誤和誤解行為。為了改善這種情況,你可以使用運行時分析工具來檢測數(shù)據(jù)和控制流、外部依賴,并計算測試代碼覆蓋率。
有了這些從運行時分析中收集到的數(shù)據(jù),像Parasoft Jtest這樣的企業(yè)級解決方案可以提示開發(fā)人員如何改進測試,通過自動推薦正確行為的斷言,以及脫離的方法來提高測試隔離度。這種自動單元測試生成和運行時分析之間的整合,減少了Java單元測試所需的人工干預。
單元測試是一種眾所周知的做法,但在很多項目中,單元測試的實施需要改進。單元測試做得好,可以提高敏捷過程的敏捷性,提高質(zhì)量和安全性,并帶來長期的成本節(jié)約。
不幸的是,無論這些好處如何,開發(fā)人員仍然會在單元測試中掙扎,盡管他們希望獲得更好的結(jié)果。測試創(chuàng)建和維護所需的時間和精力可能太多,無法證明增加測試工作的合理性。通常情況下,由于單元/對象與依賴關(guān)系的隔離性差,測試套件很脆弱。對依賴關(guān)系進行適當?shù)拿撾x成為軟件測試人員的禍根,創(chuàng)建確定正確程序邏輯所需的斷言也是如此。即使是為場景進行參數(shù)化測試,也會很繁瑣和耗費時間。
軟件開發(fā)團隊如果想獲得徹底的單元測試的好處,就必須通過測試創(chuàng)建、隔離和維護來解決這些問題。答案從測試自動化工具開始,但僅僅自動化執(zhí)行測試并收集結(jié)果是不夠的。運行時分析,即觀察正在運行的可執(zhí)行文件并記錄關(guān)鍵指標的過程,是幫助改進單元測試創(chuàng)建、嘲諷和測試穩(wěn)定性的創(chuàng)新方法。
在大多數(shù)情況下,開發(fā)人員在單元測試的早期階段并不認為運行時分析很重要。大多數(shù)工具都是用來捕捉單元測試遺漏的錯誤,或者只是在計算代碼覆蓋率。但這些好處固然重要,運行時分析還可以觀察單元測試第一次迭代的執(zhí)行情況,從而提出改進測試的建議,并檢測出干擾測試穩(wěn)定性的測試運行時環(huán)境的變化。
測試框架(如JUnit)會創(chuàng)建稀疏的代碼,需要開發(fā)人員進一步輸入。這項工作很繁瑣,所以可以根據(jù)觀察到的程序邏輯,自動填寫更多的細節(jié)。例如,以下單元測試可以由Parasoft Jtest自動生成。
同樣,對于參數(shù)化輸入的單元測試,如下圖所示。
由于創(chuàng)建的測試從一開始就可以執(zhí)行,因此可以通過運行時分析來觀察結(jié)果和執(zhí)行流程。例如,一個測試可能會因為引發(fā)異常而失敗,如下圖所示。
此外,運行時工具還能觀察到執(zhí)行路徑成依賴關(guān)系,并推薦潛在的脫離,以提高測試的隔離度。雖然對被測對象進行目測會發(fā)現(xiàn)它的依賴關(guān)系,但自動檢測和脫離這些依賴關(guān)系可以節(jié)省很多繁瑣和容易出錯的工作。
在下面的例子中,Parasoft Jtest提供給開發(fā)者一個選擇,根據(jù)單元測試的執(zhí)行跟蹤來選擇要模擬的內(nèi)容。

在這種情況下,添加一個可脫離的方法模式,將該方法添加到脫離框架(如PowerMock)處理的脫離列表中。
脫離靜態(tài)構(gòu)造函數(shù)也是可能的,如下所示。

通過對執(zhí)行流程的充分了解,加上方法調(diào)用中使用的參數(shù),運行時分析可以為開發(fā)人員提供有用的建議,以改進測試代碼。雖然在創(chuàng)建測試時,靜態(tài)地提供了斷言,但它們可能沒有被啟用或正確。在測試執(zhí)行時,失敗和缺失的斷言會觸發(fā)警告,然后導致建議來補救問題。
例如,在創(chuàng)建一個新的測試后,沒有推薦的斷言沒有被注釋,你會看到以下內(nèi)容。

或者如果斷言失敗,例如,將顯示以下內(nèi)容。
不管發(fā)生了什么,都是不斷地反饋關(guān)于對斷言的糾正措施,從而關(guān)閉了測試創(chuàng)建到完成單元測試的循環(huán)。此外,隨著被測單元的變化,這些變化可以用同樣的方式處理,不斷減少所需的人工測試維護。
運行時分析還可以檢測到執(zhí)行過程中測試環(huán)境的變化,這些變化會影響到為后續(xù)測試重新創(chuàng)建相同測試環(huán)境的能力。一次通過而后又失敗的測試可能是造成挫敗感和時間精力損失的重要原因。通過運行時分析可以檢測到的不穩(wěn)定性的一些例子包括以下幾點。
所以你可以看到,運行時分析不僅僅是為了計算代碼覆蓋率。測試執(zhí)行過程中的運行時分析對提高測試效率和效果至關(guān)重要。監(jiān)控執(zhí)行路徑可以提供依賴關(guān)系的信息,以改善對依賴關(guān)系和嘲諷的處理。斷言可以被監(jiān)控,自動建議可以幫助提高測試保真度。檢測運行時測試環(huán)境中影響測試穩(wěn)定性的變化,消除挫折感,減少測試代碼的調(diào)試周期。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自:parasoft