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