项目背景:公司的微信端H5界面新开发了会员注册功能,须要对其进行压力测试html
项目目标:须要承受每分钟最少6000的压力json
1、创建一个测试计划(test plan)服务器
以前有说过,jmeter打开后会自动生成一个空的test plan,用户能够基于该test plan创建本身的test plan微信
一个性能测试的负载必须有一个线程组完成,而一个测试计划必须有至少一个线程组。添加线程组操做以下:并发
在测试计划处右键单击:添加→Threads(Users)→线程组性能
每一个测试计划都必须包含至少一个线程组,固然,也能够包含多个,多个线程组的运行在jmeter中采用的是并行的方式,即:同时被初始化且同时执行其下的sampler测试
线程组主要包含三个参数:spa
线程数:虚拟用户的数量,一个线程指一个线程或者进程线程
Ramp—Up Period(in seconds):准备时长。设置的线程数须要多久所有启动,好比上图,线程数为6000,启动时间为60,那么须要60S内启动6000个线程;翻译
循环次数:每一个线程发送请求的次数。如上图,6000个线程,每一个线程发送1次,若是勾选了永远,那么它将永远发送下去,直到中止脚本;
设置合理的线程数对可否达到测试目标有决定性影响。好比在本例中,若是线程数太少,则没法达到设定的要求;
另外,设置合理的循环次数也很重要,除了给定的设置循环次数和永远,还能够经过勾选调度器,设置开始和结束时间来控制。
2、添加sampler
添加完线程组后,在线程组上右键单击:添加→Sampler→SOAP/XML-RPC Request(SOAP/XML-RPC:都是报文中不一样的数据格式)
前面说过,取样器(Sampler)是与服务器进行交互的单元。一个取样器一般进行三部分的工做:向服务器发送请求,记录服务器的响应数据和记录相应时间信息
这里解释一下,由于微信H5界面的会员注册,向微信端发送的是xml文件,因此这里我选择的取样器是SOAP/XML-RPC Request
上面的图中,选择SOAP/XML-RPC Request取样器,而后URL一栏输入咱们须要进行加压的URL
而后默认选项,Use KeepAlive的意思是:保持链接,这个是http协议报文中的一个首部字段,以前的关于HTTP协议的随笔写过
下面的SOAP/XML-RPC Data输入须要发送的xml格式的文件就行(也能够导入xml文件的文件夹进行读取),下面是xml和json的区别:
添加完取样器和具体的地址参数以后,接下来就是添加监听器,对测试结果进行获取
3、添加监听器
在线程组上右键单击,添加你须要的监听器,通常经常使用的就是结果树和聚合报告
添加后启动线程组进行测试,等线程执行完成后,根据结果树中的请求和响应结果(成功或者失败)就能够分析咱们的测试是否成功,以及根据聚合报告结果来确认咱们此次确认是否达成了预期结果。
4、聚合报告简析
Aggregate Report: JMeter 经常使用的一个 Listener,中文被翻译为“聚合报告”
Label:每一个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
#Samples:表示你此次测试中一共发出了多少个请求,若是模拟10个用户,每一个用户迭代10次,那么这里显示100
Average:平均响应时间——默认状况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也能够以Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
Note:关于 50% 和 90% 并发用户数的含义,请参考下文
http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量——默认状况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也能够表示相似 LoadRunner 的 Transaction per Second 数
KB/Sec:每秒从服务器端接收到的数据量,至关于LoadRunner中的Throughput/Sec