2010-10-18 58 views
1

嗯,我有以下问题。我想强调测试部署在Tomcat服务器上的我的应用程序 。我想测试的情况如下: 用户上传文件,文件被转码为另一种格式,新文件被 下载回用户设备。 我使用线程模拟每个用户(三种操作模式为三种方法)。 我创建了一个类型为newFixedThreadPool(30)的线程池执行器,并且我执行了 这三个方法实现了Runnable的一个类的run方法, 在for循环中被调用了300次迭代(每次迭代 是一个新用户)。 在主:带线程池执行程序的压力测试应用程序

ExecutorService的执行人= Executors.newFixedThreadPool(NTHREDS);

for (int i = 0; i < 300; i++) { 
    Runnable worker = new MyRunnable(i); 
     executor.execute(worker); 
    } 
executor.shutdown(); 

和MyRunnable类

公共无效的run(){
testPostFile();testPSXFileRename(); testGetFile(); }

public static void testPostFile() {} 
    public static void testPSXFileRename() {} 
    public static void testGetFile(); 

是我的做法正确吗?或者是,我错过了

  • 1线程= 1个用户(帖子,转码,获取)

  • 第二个线程= 1个用户(帖子,转码,获取)等

有棘手的部分

回答

2

看来你正在尝试做负载测试和一些单元测试。尝试并分开你的任务。

当谈到负载/压力测试时,JMeter是一个很好的开源方式来执行负载测试。 JMeter允许你记录脚本,然后你可以根据它来模拟负载。您可以搜索YouTube的某些getting started videos

如果您正在进行单元测试,请使用JUnit

让你的单元测试确保事情在功能上是正确的,并通过负载测试来确定你的服务器在负载下如何反应。

+0

谢谢。我知道这些工具,但我想开发自己的代码 – Antonis 2010-10-18 19:26:05

+0

还有其他建议吗? – Antonis 2010-10-19 10:25:34

+1

你知道你的服务器可以承受多少负载吗?一次产生300个请求可能无法为您提供所需的负载测试。如果这300个请求每个需要2ms,那么在您有时间捕捉正在发生的事情之前,所有事情都可能完成。您可能希望通过在每次迭代之间进行休眠来将这些空间隔开,以便在系统上获得一致的负载。可能添加第二个循环来控制X数量的线程被控制的次数。 – Sean 2010-10-19 13:13:14