以下的例子是测试单元测试ExampleTestCase.testOneSecondResponse()方法对应的功能的一个负载测试,用来测试该功能的执行效率。其中有10个并发用户,无延迟,每个用户只运行一次。LoadTest本身使用了TimedTest来得到在负载情况下ExampleTestCase.testOneSecondResponse()方法的实际运行能力。如果全部的执行时间超过了1.5秒则视为不通过。10个并发处理在1.5秒通过才算通过。
负载下承受能力测试举例
import com.clarkware.junitperf.*;
import junit.framework.Test;
public class ExampleThroughputUnderLoadTest {
public static Test suite() {
int maxUsers = 10;
long maxElapsedTime = 1500;
Test testCase = new ExampleTestCase("testOneSecondResponse");
Test loadTest = new LoadTest(testCase, maxUsers);
Test timedTest = new TimedTest(loadTest, maxElapsedTime);
return timedTest;
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
}
在下面的例子中,测试被颠倒过来了,TimedTest度量ExampleTestCase.testOneSecondResponse()方法的执行时间。然后LoadTest中嵌套了TimedTest来仿效10个并发用户执行ExampleTestCase.testOneSecondResponse()方法。如果某个用户的执行时间超过了1秒则视为不通过。
负载下响应时间测试举例
import com.clarkware.junitperf.*;
import junit.framework.Test;
public class ExampleResponseTimeUnderLoadTest {
public static Test suite() {
int maxUsers = 10;
long maxElapsedTime = 1000;
Test testCase = new ExampleTestCase("testOneSecondResponse");
Test timedTest = new TimedTest(testCase, maxElapsedTime);
Test loadTest = new LoadTest(timedTest, maxUsers);
return loadTest;
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
}
性能测试套件
下面的测试用例例子中把ExampleTimedTest和ExampleLoadTest结合在一个测试套件中,这样可以自动地执行所有相关的性能测试了:
Example Performance Test Suite
import junit.framework.Test;
import junit.framework.TestSuite;
public class ExamplePerfTestSuite {
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTest(ExampleTimedTest.suite());
suite.addTest(ExampleLoadTest.suite());
return suite;
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
}