您的位置:首页 > 编程语言 > Java开发

java的并发测试

2016-05-30 20:34 357 查看

1. 什么是并发测试

通过代码的编写和工具的利用模拟多线程(多用户)来执行某一个业务操作。来确保业务在多线程的环境下业务(或者说数据的)的正确性

2. 为什么做并发测试

我们常常听到线上环境在高并发的情况下。出现用户的账户余额不对,一个手机号注册了两个账户这类情况。所以我们有必要模拟大量用户的并发测试

3. 如何做并发测试

我在这儿是使用的是testng的方法。见如下实例(在多线程的环境下,非线程安全)

package com.one;

import java.util.HashMap;

import org.testng.annotations.AfterTest;
import org.testng.annotations.Test;

public class UnsafeCountingFactorizer {

private long count=0;

public long getCount(){
return count;
}

@Test(invocationCount=20000,threadPoolSize=1000)
public void service() {
HashMap<String, String> hashMap  = new HashMap<String,String>();
hashMap.put("1", "1");
hashMap.put("1", "1");
hashMap.put("1", "1");
hashMap.put("1", "1");

++count;

HashMap<String, String> hashMap2  = new HashMap<String,String>();
hashMap2.put("1", "1");
hashMap2.put("1", "1");
hashMap2.put("1", "1");

}

@AfterTest
public void endService(){
System.out.println("count value{}:"+count);
}
}


参数讲解

invocationCount:注解的方法执行多少次,threadPoolSize:启动多少个线程去执行。两个参数合起来的含义是启动多少个线程一共执行多少次

结果

预期的结果是20000次,但是事实非如此,见下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java并发测试