TestNG中使用官方标记实现并发测试

上一篇 / 下一篇  2013-03-08 16:45:17

TestNg官方手册中对于这2个标记的说明为:

invocationCount    当前方法被调用的次数;

threadPoolSize    当前方法的线程池大小。方法将被多线程调用,次数由invocationCount参数指定;

注意:

threadPoolSize的设定要依赖invocationCount的设定,如果invocationCount的设定值小于threadPoolSize的设定值,多于的设定是无效的,举个极端的例子,如果你threadPoolSize设定是100,invocationCount没有设定(默认为1次),那么系统只有开启一个线程来运行。反过invocationCount的设定不依赖threadPoolSizetestNG会以默认值1来运行。

 

实例:

@Test(dataProvider ="CsvDataProvider", invocationCount = 8, threadPoolSize = 5, description ="资金业务-同步执行-正常业务场景测试")

这是我目前使用的一段代码摘要。标记表达的意思便是起5个线程并发,总共执行方法8

在使用debug观察线程的时候可以看到thread启动了5条。测试代码执行的日志显示在同一时间内方法被调用了5

11:12:00,531 [TestNG] INFO  DriverDataProvider : =============== START [02N01] ===============

11:12:00,532 [TestNG] INFO  DriverDataProvider : =============== START [02N01] ===============

11:12:00,532 [TestNG] INFO  DriverDataProvider : =============== START [02N01] ===============

11:12:00,532 [TestNG] INFO  DriverDataProvider : =============== START [02N01] ===============

11:12:00,531 [TestNG] INFO  DriverDataProvider : =============== START [02N01] ===============

到这里为止,大家可以发现这个标签可以非常方便的让我们执行并发测试,不再需要额外的录制脚本来压测。对于小当量及和一些日常的并发测试可以非常灵活的就运用上。

 

最后附上一个发散的东西。

   publicstaticvoidt() {

       longstart = System.currentTimeMillis();

       while(true) {

                      //you can do something at here

            System.out.println("222");

           if((System.currentTimeMillis() - start) > 10000) {

               break;

            }

        }

    }

这是一个10秒循环的方法,当然你也可以变成10分钟,也可以变成10小时。结合标记invocationCount = 1000000, threadPoolSize = 10你们都懂得。


TAG:

 

评分:0

我来说两句

Open Toolbar