施用TestNG进行多线程压力测试
使用TestNG进行多线程压力测试
1、在项目中加入:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.4</version>
<scope>test</scope>
</dependency>
2、建立测试类,并添加测试方法:
@Test(invocationCount = 100, threadPoolSize = 50)
public void addStr() {
String key = "CacheHelperTest:addStr:001";
String value = "001";
CacheHelper.add(key, value);
String result = CacheHelper.getStr(key);
CacheHelper.remove(key);
Assert.assertEquals(value, result);
}
invocationCount设定的是这个方法的执行次数
threadPoolSize 这个属性表示的是开启线程数的多少,threadPoolSize的设定要依赖 invocationCount的设定,如果invocationCount的设定值小于threadPoolSize的设定值,多于的设定是无效的,举个极端的例子,如果你threadPoolSize设定是100,而invocationCount没有设定(默认为1次),那么系统只有开启一个线程来运行。反过invocationCount的设定不依赖threadPoolSize,testNG会以默认值1来运行。
开始时我将threadPoolSize设置去掉,然后执行,发现输出结果都是顺序的,而加上threadPoolSize设定后输出开始有些错乱,表明确实是多线程在执行。
我们能够使用这种方法进行并发测试和性能测试。
1、在项目中加入:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.4</version>
<scope>test</scope>
</dependency>
2、建立测试类,并添加测试方法:
@Test(invocationCount = 100, threadPoolSize = 50)
public void addStr() {
String key = "CacheHelperTest:addStr:001";
String value = "001";
CacheHelper.add(key, value);
String result = CacheHelper.getStr(key);
CacheHelper.remove(key);
Assert.assertEquals(value, result);
}
invocationCount设定的是这个方法的执行次数
threadPoolSize 这个属性表示的是开启线程数的多少,threadPoolSize的设定要依赖 invocationCount的设定,如果invocationCount的设定值小于threadPoolSize的设定值,多于的设定是无效的,举个极端的例子,如果你threadPoolSize设定是100,而invocationCount没有设定(默认为1次),那么系统只有开启一个线程来运行。反过invocationCount的设定不依赖threadPoolSize,testNG会以默认值1来运行。
开始时我将threadPoolSize设置去掉,然后执行,发现输出结果都是顺序的,而加上threadPoolSize设定后输出开始有些错乱,表明确实是多线程在执行。
我们能够使用这种方法进行并发测试和性能测试。