JMeter是一个流行的用于负载测试的开源工具,具有许多有用的功能元件,如线程组(threadgroup),定时器(timer),和HTTP取样(sampler)元件。本文是对JMeter用户手册的补充,而且提供了关于使用Jmeter的一些模拟元件开发质量测试脚本的指导。
本文同时也讨论了一项重要的内容:在指定了精确的响应时间要求后,如何来校验测试结果,特别是在采用了置信区间分析这种严格的统计方式的情况下应如何操作。请注意,我假定本文的读者们了解关于Jmeter的基础知识,本文的例子基于Jmeter2.0.3版。
确定一个线程组的ramp-upperiod(Determine)
Jmeter脚本的第一个要素是线程组(ThreadGroup),因此首先让我们来回顾一下。正如图一所示,线程组需要设置以下参数:
<1>线程数量。
<2>ramp-upperiod。
<3>运行测试的次数。
<4>启动时间:立即或者预定的时间,如果是后者,线程组所包含的元素也要指定这个起止时间。
图1 JMeter线程组(JMeterThreadGroup)
每个线程均独立运行测试计划。因此,线程组常用来模拟并发用户访问。如果客户机没有足够的能力来模拟较重的负载,可以使用Jmeter的分布式测试功能来通过一个Jmeter控制台来远程控制多个Jmeter引擎完成测试。
参数ramp-upperiod用于告知JMeter要在多长时间内建立全部的线程。默认值是0。如果未指定ramp-upperiod,也就是说ramp-upperiod为零,JMeter将立即建立所有线程,假设ramp-upperiod设置成T秒,全部线程数设置成N个,JMeter将每隔T/N秒建立一个线程。
线程组的大部分参数是不言自明的,只有ramp-upperiod有些难以理解,因为如何设置适当的值并不容易。首先,如果要使用大量线程的话,ramp-upperiod一般不要设置成零。因为如果设置成零,Jmeter将会在测试的开始就建立全部线程并立即发送访问请求,这样一来就很容易使服务器饱和,更重要的是会隐性地增加了负载,这就意味着服务器将可能过载,不是因为平均访问率高而是因为所有线程的第一次并发访问而引起的不正常的初始访问峰值,可以通过Jmeter的聚合报告监听器看到这种现象。
这种异常不是我们需要的。因此,确定一个合理的ramp-upperiod的规则就是让初始点击率接近平均点击率。当然,也许需要运行一些测试来确定合理访问量。