JMeter是一款开源免费的性能测试工具,可以支持多种协议如http,https,ftp,LDAP,JDBC,JUnit等.大家可以去http://jakarta.apache.org/jmeter查找有关信息.
安装JMeter首先要安装JRE(Java runtime environment)1.4以上版本,为了支持其他协议的测试我们可以下载相应的jar包把它放在Jmeter的classpath下:
- JMETER_HOME/lib - used for utility jars
- JMETER_HOME/lib/ext - used for JMeter components and add-ons
例如我们要支持Mail的功能就要下载JavaMail.
在JMeter中,Test Plan由thread group组成, Thread Group代表了一组虚拟的用户.在Thread Group中定义用户的行为,我们可以加入其他任何元素,Samplers,Controllers,Listener,Timers,Assertions,Configure elements,Pre-Processors,Post-Processors.
Samplers用来产生各种请求如,Http sampler,ftp sampler. Controller和Logic Controller用来控制测试的顺序和逻辑.Listener用来显示测试结果.Timers用来产生延时.Assertion用来测试结果是否符合预期.Pre-Processor执行需要在sampler产生request之前进行的操作.Post-Processors执行需要在sampler产生request之后进行的操作. Timer比较特殊,当一个Thread Group中出现多个Timer的时候,JMeter会将所有的时间相加来做为sampler发送request之前的延时时间.
Samplers和Controllers是按顺序执行的,如下图
执行顺序是One, Two,Three,Four
其它元素的作用区域就是它本身所在的区域和它的子区域.例如一个Assertion应用于某一个请求,它就只对该请求生效,如果应用于Controller就会影响controller下的所有请求.
Assertion#1应用于One, Assertion应用鱼Two和Three
所有这些元素的执行顺序如下:
1. Pre-Processors
2. Timers
3. Sampler
4. Post-Processors (unless SampleResult is null)
5. Assertions (unless SampleResult is null)
6. Listeners (unless SampleResult is null)
例如一个test plan如下
- Controller
- Post-Processor 1
- Sampler 1
- Sampler 2
- Timer 1
- Assertion 1
- Pre-Processor 1
- Timer 2
- Post-Processor 2
执行顺序是:
Pre-Processor 1
Timer 1
Timer 2
Sampler 1
Post-Processor 1
Post-Processor 2
Assertion 1
Pre-Processor 1
Timer 1
Timer 2
Sampler 2
Post-Processor 1
Post-Processor 2
Assertion 1