向服务器提交请求;从服务器取回请求返回的结果。
JMeter的作用
JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为。
Jmeter的配置及作用
1. 测试计划:使用JMeter进行测试的起点,它是其它JMeter测试元件的容器。测试计划主要有如下选项:
名称:可以给测试计划设置一个个性化的命名
注释:可以对测试计划添加备注以标记
用户自定义变量:
独立运行每个线程组:再每一组运行结束后启动下一个
Run tearDown Thread Groups after shutdown of main threads: 主线程关闭运行后拆除线程组
函数测试模式:只有当你需求记录每个请求从服务器取得的数据到文件时,才需要选择函数测试模式,选择这个选项很影响性能。
2. 线程组:代表一定数量的并发用户,一般用来模拟并发用户发送请求。
名称:可以给线程组设置一个个性化的命名
注释:可以对线程组添加备注以标记
在取样器错误后要执行的动作:就是在错误之后要如何执行,可选继续执行后续的、停止执行等。
线程数:就是需要设置多少线程执行测试。
Ramp-up Period (in Seconds):在这时间内创建完所有的线程。默认值是0。如果未指定ramp-up period ,也就是说ramp-up period 为零,JMeter将立即建立所有线程。假设Ramp-up Period设置成T秒, 全部线程数设置成N个,JMeter将每隔T/N秒建立一个线程。
循环次数:就是决定一个线程要跑多少次测试。
Delay Thread creation until needed:直到需要时延迟线程的创建
调度器:选中之后可以配置启动时间,立即或者预定的时间
操作见如图:
第一条,10个线程,10秒内启动,持续运行600秒,然后停止10秒。
第二条,10个线程,等待620秒之后,10秒内启动,运行600秒,停止10秒。
第三条,10个线程,等待1240秒之后,10秒内启动,运行600秒,然后停止。
Start Thread Count:开始线程数量
Initial Ddlay,Sec:线程延迟多长时间开始运行
Startup Time,Sec:线程加载多长时间
Hold Load For,Sec:线程持续运行多长时间
Shutdown Time:线程停止时长,在多长时间内停止下来。
3. 取样器(Sampler):模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。如:HTTP 、FTP请求等等。
4. 监听器:负责收集测试结果,对运行的结果进行展示,常用的有查看结果树和聚合报告两种。
查看结果树:
Thread Name:线程组名称
Sample Start: 启动开始时间
Load time:加载时长
Latency:等待时长
Size in bytes:发送的数据总大小
Headers size in bytes:发送数据的其余部分大小
Sample Count:发送统计
Error Count:交互错误统计
Response code:返回码
Response message:返回信息
Response headers:返回的头部信息
聚合报告具体各项指标及意义说明如下:
Label:说明是请求类型,如Http,FTP等请求。
#Samples:也就是图形报表中的样本数目,总共发送到服务器的样本数目。
Average:也就是图形报表中的平均值,是总运行时间除以发送到服务器的请求数。
Median:也就是图形报表中的中间值,是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
90%line:是指90%请求的响应时间比所得数值还要小。
Min:服务器响应的最短时间。
Max:服务器响应的最长时间。
Error%:请求的错误百分比。
Throughput:也就是图形报表中的吞吐量,这里是服务器每单位时间处理的请求数,注意查看是秒或是分钟。
KB/sec:是每秒钟请求的字节数。
图形结果具体各项指标及意义说明如下:
样本数目:总共发送到服务器的请求数。
最新样本:代表时间的数字,是服务器响应最后一个请求的时间。
吞吐量:服务器每分钟处理的请求数。
平均值:总运行时间除以发送到服务器的请求数。
中间值:代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
偏离:表示服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。
5. 配置元件:维护Sampler需要的配置信息,比如设置一些默认请求值。
6. 断言:判断请求响应的结果是否符合用户预期。
7. 定时器:负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。