您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > junit
JUnitPerf 使用手冊(cè)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/1/18 14:31:06 ] 推薦標(biāo)簽:

摘要

JUnitPerf是一個(gè)來(lái)度量代碼的性能和執(zhí)行效率的一個(gè)性能測(cè)試工具,通過(guò)編寫(xiě)用于JUnitPerf的單元測(cè)試代碼可以使這一過(guò)程自動(dòng)化。從另外一個(gè)角度來(lái)說(shuō)它是JUnit的一個(gè)擴(kuò)展插件。

假如你對(duì)這種類(lèi)型的自動(dòng)化測(cè)試感興趣的話(huà)可以參考我寫(xiě)的書(shū)《Pragmatic Project Automation》

您也可以花兩天時(shí)間光顧一下站點(diǎn)《Test-Driven Development with JUnit Workshop》,這里提供了一些很好的JUnit的學(xué)習(xí)途徑并且還有Mike Clark的一些講義和實(shí)踐指導(dǎo)手冊(cè)幫助你更深入地了解測(cè)試驅(qū)動(dòng)開(kāi)發(fā)。

簡(jiǎn)介

JUnitPerf是基于JUnit的一個(gè)度量性能和執(zhí)行效率的一個(gè)自動(dòng)化測(cè)試框架(工具)。

JUnitPerf包含以下兩個(gè)主要的類(lèi)(擴(kuò)展了JUnit):

·         TimedTest

TimedTest用來(lái)執(zhí)行測(cè)試,返回執(zhí)行該測(cè)試所使用的時(shí)間。

TimedTest構(gòu)造方法中需要指定一個(gè)大可接受的執(zhí)行時(shí)間。默認(rèn)情況下,執(zhí)行該方法時(shí)會(huì)等待被執(zhí)行的測(cè)試執(zhí)行完畢,如果實(shí)際所用的時(shí)間超過(guò)了指定的大時(shí)間則標(biāo)識(shí)測(cè)試失敗。另外你也可以通過(guò)在構(gòu)造方法指定當(dāng)實(shí)際執(zhí)行時(shí)間超過(guò)大可接受時(shí)間時(shí)不繼續(xù)執(zhí)行該測(cè)試,并標(biāo)識(shí)測(cè)試未通過(guò)。

·         LoadTest

LoadTest用來(lái)模仿多個(gè)并發(fā)用戶(hù)多次迭代執(zhí)行測(cè)試。

使用目的

很明顯,JUnitPerf是對(duì)JUnit測(cè)試框架的一個(gè)擴(kuò)展。這種方式的擴(kuò)展允許動(dòng)態(tài)地增加JUnit測(cè)試用例來(lái)進(jìn)行性能測(cè)試,不會(huì)影響到先前的測(cè)試。這樣您可以快速簡(jiǎn)易地構(gòu)造出性能測(cè)試套件。

性能測(cè)試套件可以自動(dòng)地,獨(dú)立于其它的JUnit測(cè)試用例執(zhí)行。實(shí)際使用中,一般要盡量避免把JUnit測(cè)試用例和JUnitPerf測(cè)試用例組織在一起,這樣才能更加獨(dú)立地執(zhí)行測(cè)試套件,并且也可按不同的順序執(zhí)行。持續(xù)時(shí)間較長(zhǎng)的性能測(cè)試可能會(huì)延長(zhǎng)測(cè)試的時(shí)間,從而導(dǎo)致你不愿意去執(zhí)行所有的單元測(cè)試。因此,這需要你有計(jì)劃地不時(shí)地去執(zhí)行該測(cè)試,而不必影響到其他工作。

JUnitPerf傾向于針對(duì)已經(jīng)有明確的性能要求或者執(zhí)行效率要求,并且要保證代碼重構(gòu)后依然保持這樣的目標(biāo)的測(cè)試。例如,您可以使用JUnitPerf測(cè)試來(lái)確保在同樣的條件下不會(huì)由于改變算法而導(dǎo)致性能降低。您也可以使用它來(lái)確保重構(gòu)一個(gè)資源池后不會(huì)導(dǎo)致在負(fù)載情況下的執(zhí)行效率降低(這種保證是通過(guò)比較條件改變前后的執(zhí)行時(shí)間和效率,只提供一個(gè)度量的依據(jù))。

從投入產(chǎn)出的角度來(lái)看維護(hù)一個(gè)注重實(shí)效的測(cè)試是相當(dāng)重要的。傳統(tǒng)的性能度量工具和技術(shù)首先會(huì)去找出性能問(wèn)題的潛在出處,而JUnitPerf則用來(lái)不斷地自動(dòng)測(cè)試并且檢查需求和實(shí)際的結(jié)果。

以下是一個(gè)實(shí)際使用場(chǎng)景的例子:

你有一個(gè)功能良好的程序,并且通過(guò)了必要的JUnit測(cè)試套件的測(cè)試驗(yàn)證功能通過(guò)。從這個(gè)角度來(lái)說(shuō)你已經(jīng)達(dá)到了設(shè)計(jì)所想象的目標(biāo)。

然后使用一個(gè)性能度量工具來(lái)分析程序的哪部分執(zhí)行時(shí)間長(zhǎng)。基于設(shè)計(jì)知識(shí),您已經(jīng)具有很好的工具對(duì)程序做實(shí)際的評(píng)估。并且重構(gòu)后的代碼清晰簡(jiǎn)潔,接下來(lái)的工作是調(diào)整一小部分代碼。

接下來(lái)可以寫(xiě)JUnitPerf測(cè)試用例了,為這部分代碼指定可接受的性能和效率參數(shù)。如果不對(duì)代碼做任何改動(dòng)的情況下直接進(jìn)行測(cè)試將不會(huì)通過(guò),證明測(cè)試用例是正確的。接著對(duì)代碼做一些小的調(diào)整。

每次調(diào)整后都重新編譯和運(yùn)行JUnitPerf測(cè)試。如果實(shí)際的性能到達(dá)了預(yù)期的指標(biāo),測(cè)試算是通過(guò)了。如果實(shí)際的性能達(dá)不到預(yù)期的指標(biāo),需要繼續(xù)調(diào)整過(guò)程直到測(cè)試通過(guò)。如果將來(lái)代碼再次重構(gòu)了你也可以重新運(yùn)行測(cè)試。如果測(cè)試未通過(guò),而同時(shí)之前的性能標(biāo)準(zhǔn)也提高了,這時(shí)需要回溯到原來(lái)并且繼續(xù)重構(gòu)直到測(cè)試通過(guò)。

JUnitPerf下載

JUnitPerf 1.9是當(dāng)前新的版本。包含以前所有版本的功能。

本版需要Java 2和JUnit 3.5或以上版本。

發(fā)行包包含一個(gè)JAR文件,源代碼,示例代碼,API文檔和本文檔。

JUnitPerf 安裝

Windows

在Windows上按以下步驟安裝:

1.     解壓junitperf-<version>.zip文件到一個(gè)目錄中,在系統(tǒng)環(huán)境變量中增加%JUNITPERF_HOME%,值為文件解壓后的目錄。

2.     把JUnitPerf加到CLASSPATH路徑中:

set CLASSPATH=%CLASSPATH%;%JUNITPERF_HOME%libjunitperf-<version>.jar

Unix (bash)

在UNIX上按以下步驟安裝:

1.     解壓縮junitperf-<version>.zip到相應(yīng)的目錄下。例如:$JUNITPERF_HOME。

2.     修改文件的權(quán)限:

chmod -R a+x $JUNITPERF_HOME

3.     把JUnitPerf加到CLASSPATH路徑中:

export CLASSPATH=$CLASSPATH:$JUNITPERF_HOME/lib/junitperf-<version>.jar

構(gòu)建與測(cè)試

在$JUNITPERF_HOME/lib/junitperf-<version>.jar文件中已經(jīng)包含有編譯好的類(lèi)文件。

構(gòu)建

$JUNITPERF_HOME/build.xml文件是Ant構(gòu)建文件。

可以使用以下命令構(gòu)建JUnitPerf:

cd $JUNITPERF_HOME

ant jar

測(cè)試

JUnitPerf安裝包中包含了用于跟JUnitPerf結(jié)合使用的JUnit測(cè)試用例的實(shí)例。

可以輸入以下命令驗(yàn)證JUnitPerf安裝是否正常:

cd $JUNITPERF_HOME

ant test

如何使用JUnitPerf

好的方式是使用JUnitPerf中附帶的示例,這里包含了各種類(lèi)型的測(cè)試。

$JUNITPERF_HOME/samples目錄包含了本文中所講的所有示例代碼.

TimedTest

TimedTest構(gòu)造方法有兩個(gè)參數(shù),一個(gè)是已存在的JUnit測(cè)試用例,另一個(gè)是預(yù)期的大的執(zhí)行時(shí)間。

例如要針對(duì)ExampleTestCase.testOneSecondResponse()方法創(chuàng)建一個(gè)執(zhí)行時(shí)間的測(cè)試并且等待該方法執(zhí)行完畢,如果時(shí)間超過(guò)1秒則視為未通過(guò)。

上一頁(yè)1234下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd