最好阅读一下JMeter官方参考手册:http://jmeter.apache.org/
引言 (参考:http://www.importnew.com/13876.html)
JMeter使用了不同技术和协议,是一款可以进行配置和执行负载测试、性能测试和压力测试的工具。它能够模拟不同类型的请求,例如各种类型的数据库,FTP, HTTP, HTTPS 或者其他的服务端应用。
最好先来了解一下如下概念:
负载测试: 这类测试使系统或者应用程序在预先设计好的极端场景下测试运行。这类测试用来评估系统或者程序在极端条件下的行为。
性能测试: 这种测试被用来检测系统的性能表现,包括特定情况下,系统的响应能力和稳定性。
压力测试: 这类测试通过载入更多的外部资源,并使系统组件超越其所设定的能力范围,试图使系统挂掉。
本人在项目测试过程中对几个参数配置不太理解,阅读中文资料和英文手册后做笔记如下:
1、线程组Thread Group
个人翻译:
线程组指定了对服务器执行特定测试用例的用户数。你可以在线程组界面设定模拟用户数(即线程数),上升时间(用来启动全部线程的时间),线程组启动延迟时间,线程组持续时间。
线程数:模拟的用户数。
Ramp-Up Period(in seconds):JMeter启动全部线程的时间,设为0表示连续不间隔启动全部线程。如果线程组的线程数为10,上升时间为100s,则JMeter每隔10s钟启动一个线程。
Ramp-up需要充足大以避免在启动测试时有一个太大的工作负载,并且要充足小
以至于最后一个线程在第一个完成前启动(因为会减低服务端的瞬间负载)。
一般设置ramp-up=线程数启动,并上下调整到所需的。
持续时间:测试持续时间,一到时间不管测试是否结束都要结束测试。
When using the scheduler, JMeter runs the thread group until either the number of loops is reached or the duration/end-time is reached - whichever occurs first. Note that the condition is only checked between samples; when the end condition is reached, that thread will stop. JMeter does not interrupt samplers which are waiting for a response, so the end time may be delayed arbitrarily.
启动延迟:延迟多久后执行测试。
2、定时器中的Synchronizing Timer
个人翻译:
同步定时器的目的是阻塞线程,当被阻塞线程数达到预先设定的参数X时,这些阻塞线程会立刻被全部释放。因此,同步定时器可以在执行计划的不同时刻制造大的瞬间负载。
参数设置:
Number of Simultaneous Users to Group by:同步线程数,设为0等同于线程组的线程数。
Timeout in milliseconds:定时器等待超时时间,设为0则会一直等,如果阻塞线程数一直达不到设定值,则会无穷等。
因此,制造并发有如下方式:
1、连续方式:短时间内连续发请求(这种方式无法得知服务端的瞬间负载,因为可能第一个请求响应了最后一个请求还没发出去),这种方式建议使用线程组的Ramp-Up参数实现。
2、瞬间方式:瞬间发送多个请求(基本上可以等同服务端瞬间负载),这种方式建议使用Synchronizing Timer。
以上翻译的原文地址为:http://jmeter.apache.org/usermanual/component_reference.html#Synchronizing_Timer
另参考:http://blog.csdn.net/sunwangdian/article/details/50738870