并行多个机器执行,并发每台机器上多线程执行。
你写个轮询调是否结束的接口,结束了你就去取内容。
顶一顶
顶一下
对的,只是考察的时候要求稍微高点。
对场景压测比较敢兴趣,有几个疑问想作者回答一下:
前提:比如我有一个场景有 step1,step2,step3
1.压测执行时,对于一个 vuser 是串行执行 step1->step2->step3 还是执行这些步骤是随机的,如果是串行的,是怎么保证顺序;
2.场景压测的结果统计维度是什么?是分别列出 step1,step2,step3 的性能结果?
#1 楼 @Lihuazhang 定义 CountDownLatch 变量 latch,并初始化为 new CountDownLatch(1);
启动一个轮询线程,该轮询线程执行体中实现了 while 循环,每次先判断 latch.getCount() 是否为 0,如果为 0,跳出 while 循环;否则,将判断异步结果是否成功的任务提交给线程池 executor 执行,执行体会判断是否成功,成功则 latch.countDown()(导致 latch.getCount() 为 0,下次跳出 while 循环);同时,每次 while 循环执行 Thread.sleep(pollInterval.getValueInMS()); 如果轮询线程执行体 while 循环一直不满足条件,主线程将阻塞 maxTimeoutUnit:latch.await(maxTimeout, maxTimeoutUnit), 如果 latch.getCount() 不为 0,即异步校验不成功,finishedBeforeTimeout 置为 false, finishedBeforeTimeout = latch.await(maxTimeout, maxTimeoutUnit), 输出异常信息。 详情见:https://testerhome.com/topics/7596
#5 楼 @softblank http code 404,标识你的请求不存在,因为你在 tomcat 下 webapp 部署的文件名为 ngrinder-controller-3.3,你请求的 URL 应该是: http://localhost:8080/ngrinder-controller-3.3
#5 楼 @softblank 你说用到了版本 3.4.1,为什么错误栈中"/Users/a58/Library/Tomcat/webapps/ngrinder-controller-3.3" 提示是 3.3 的版本?
越来越好
#30 楼 @seanshao 在 ngrinder-controller 中 src->main->resources 里提示语的配置文件,messages_cn.properties(中文),messages_en.properties(英文),messages_kr.properties(韩文)在配置文件添加相应的文本,比如:在 messages_cn.properties 中:
perfTest.report.successRate=成功率
perfTest.report.tpsStd=TPS \u6807\u51C6\u5DEE
perfTest.report.tpsVix=TPS \u6CE2\u52A8\u7387
perfTest.report.minRT=\u6700\u5C0F RT
perfTest.report.TwentyFiveMeanTime=25 \u767E\u5206\u4F4D\u6570 RT
perfTest.report.FiftyMeanTime=50 \u767E\u5206\u4F4D\u6570 RT
perfTest.report.ServentyFiveMeanTime=75 \u767E\u5206\u4F4D\u6570 RT
perfTest.report.EightyMeanTime=80 \u767E\u5206\u4F4D\u6570 RT
perfTest.report.EightyFiveMeanTime=85 \u767E\u5206\u4F4D\u6570 RT
perfTest.report.NinetyMeanTime=90 \u767E\u5206\u4F4D\u6570 RT
perfTest.report.NinetyFiveMeanTime=95 \u767E\u5206\u4F4D\u6570 RT
perfTest.report.NinetyNineMeanTime=99 \u767E\u5206\u4F4D\u6570 RT
perfTest.report.maxRT=\u6700\u5927 RT
#6 楼 @huangejuan job.build() 就是触发 Jenkins 去执行 build 了。
#5 楼 @AriesHuang 1.对的,你要在 Jenkins 上新建一个项目,是参数化构建的。2.你写了 main 函数来执行?你的 31 行是什么内容?
#12 楼 @johnson 1.之前整理过一系列 ngrinder 源码分析的文章,请参考:http://blog.csdn.net/neven7/article/details/50835088; 2.我描述下你的问题:要压测连串的 2 个接口一个登录、查询;登录的时间影响查询接口,压测情况下是登入接口是随机的,会影响到查询接口;2-1)解决:你压测过过程中每隔 5 分钟回放登录的请求;查询接口就可以了; 2-2)解决:你可以叫开发 mock 掉查询用户的登入时间,你直接回放查询接口,对查询接口压测就行了
#1 楼 @seveniruby 幸会
一直在用 Dr.Cleaner
中{build.dest}是你 test class 编译后的.class 目录; 中 **/*TestSuite 是你测试的 suite 测试类
${junit.output.dir}新建个子目录,比如以当前执行的时间为目录名 ${time}, 可以在初始化的时候定义 ;
Junit 标签下相应修改成:
Junitreport 标签下相应修改成: