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