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

long maxElapsedTime = 1000;

Test testCase = new ExampleTestCase("testOneSecondResponse");

Test timedTest = new TimedTest(testCase, maxElapsedTime);

同樣地,如果想要在執(zhí)行過(guò)程如果超出預(yù)期時(shí)間立即結(jié)束本次測(cè)試可以在TimedTest構(gòu)造函數(shù)中增加第三個(gè)參數(shù),舉例如下:

long maxElapsedTime = 1000;

Test testCase = new ExampleTestCase("testOneSecondResponse");

Test timedTest = new TimedTest(testCase, maxElapsedTime, false);

以下代碼創(chuàng)建了一個(gè)執(zhí)行時(shí)間的測(cè)試,用來(lái)測(cè)試被定義在單元測(cè)試ExampleTestCase.testOneSecondResponse()方法所代表的功能執(zhí)行的時(shí)間。

執(zhí)行效率測(cè)試舉例

import com.clarkware.junitperf.*;

import junit.framework.Test;

public class ExampleTimedTest {

    public static Test suite() {

        long maxElapsedTime = 1000;

        Test testCase = new ExampleTestCase("testOneSecondResponse");

        Test timedTest = new TimedTest(testCase, maxElapsedTime);

        return timedTest;

    }

    public static void main(String[] args) {

        junit.textui.TestRunner.run(suite());

    }

}

測(cè)試的粒度決定于JUnit的測(cè)試用例,并被JUnitPerf所使用,因此有一定的局限性。終獲得的執(zhí)行時(shí)間為測(cè)試用例中testXXX()方法的執(zhí)行時(shí)間,包括setUp(), testXXX(), 和tearDown()方法的執(zhí)行時(shí)間。執(zhí)行測(cè)試套件的時(shí)間包含測(cè)試套件中所有測(cè)試示例的setUp(), testXXX(), 和tearDown()方法的執(zhí)行時(shí)間。所以,預(yù)期的時(shí)間還應(yīng)該依照set-up和tear-down的執(zhí)行時(shí)間來(lái)制定(把這部分時(shí)間也考慮進(jìn)去)。

LoadTest

LoadTest用來(lái)仿效多個(gè)用戶并發(fā)執(zhí)行多次來(lái)進(jìn)行測(cè)試。

LoadTest簡(jiǎn)單的構(gòu)造函數(shù)只有兩個(gè)參數(shù),測(cè)試用例和用戶數(shù),默認(rèn)情況下該測(cè)試只迭代一次。

例如,創(chuàng)建一個(gè)10用戶并發(fā)執(zhí)行一次ExampleTestCase.testOneSecondResponse()方法:

int users = 10;

Test testCase = new ExampleTestCase("testOneSecondResponse");

Test loadTest = new LoadTest(testCase, users);

負(fù)載測(cè)試過(guò)程也可以指定一個(gè)額外的計(jì)數(shù)器實(shí)例用來(lái)指定用戶并發(fā)執(zhí)行之間的延遲時(shí)間。ConstantTimer類構(gòu)造函數(shù)包含一個(gè)常量參數(shù),用來(lái)指定延遲時(shí)間,如果指定為0則表示所有的用戶同時(shí)開始。RandomTimer類可以構(gòu)造出隨機(jī)的延遲時(shí)間。

例如:創(chuàng)建一個(gè)負(fù)載測(cè)試,10個(gè)并發(fā)用戶各執(zhí)行一次ExampleTestCase.testOneSecondResponse()方法,各個(gè)用戶之間延遲1秒鐘執(zhí)行。

int users = 10;

Timer timer = new ConstantTimer(1000);

Test testCase = new ExampleTestCase("testOneSecondResponse");

Test loadTest = new LoadTest(testCase, users, timer);

為了仿效并發(fā)用戶以指定迭代次數(shù)執(zhí)行測(cè)試,LoadTest類構(gòu)造函數(shù)包含了RepeatedTest參數(shù)。這樣可以為每個(gè)測(cè)試用例指定迭代次數(shù)了。

例如:創(chuàng)建一個(gè)負(fù)載測(cè)試,10個(gè)并發(fā)用戶,每個(gè)用戶迭代執(zhí)行ExampleTestCase.testOneSecondResponse()方法20次,每個(gè)并發(fā)用戶之間延遲1秒。

int users = 10;

int iterations = 20;

Timer timer = new ConstantTimer(1000);

Test testCase = new ExampleTestCase("testOneSecondResponse");

Test repeatedTest = new RepeatedTest(testCase, iterations);

Test loadTest = new LoadTest(repeatedTest, users, timer);

或者這樣來(lái)寫:

int users = 10;

int iterations = 20;

Timer timer = new ConstantTimer(1000);

Test testCase = new ExampleTestCase("testOneSecondResponse");

Test loadTest = new LoadTest(testCase, users, iterations, timer);

如果負(fù)載測(cè)試要求測(cè)試在setUp()方法中包含特殊的測(cè)試狀態(tài),那么應(yīng)該使用TestFactory類來(lái)確保每個(gè)并發(fā)用戶線程使用一個(gè)本地線程測(cè)試實(shí)例。例如創(chuàng)建一個(gè)10用戶并發(fā)的測(cè)試,每個(gè)用戶運(yùn)行ExampleStatefulTest類的一個(gè)本地線程,可這樣來(lái)寫:

int users = 10;

Test factory = new TestFactory(ExampleStatefulTest.class);

Test loadTest = new LoadTest(factory, users);

如果測(cè)試其中的某一個(gè)方法,可以這樣:

int users = 10;

Test factory = new TestMethodFactory(ExampleStatefulTest.class, "testSomething");

Test loadTest = new LoadTest(factory, users);

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