1.测试需求:建立20个用户,访问www.baidu.com,查看在负载达到 30QPS的时候的一个平均的响应时间;
QPS:query per second每秒查询率,是查询服务器每秒能处理的查询次数,在因特网上,作为域名系统服务器的性能常用每秒查询率来衡量;
2.测试步骤:
线程数:虚拟用户数,一个虚拟用户占用一个进程和线程,设置多少虚拟用户数在这里也就是设置多少线程数;
准备时长:单位s:设置虚拟用户需要多少时间全部启动,例如:设置20个,准备时长是10,那么需要10秒钟启动20个线程,也就是每秒钟2个;
循环次数:每个线程发送请求的次数,如果线程数目为20个,循环次数为5,那么每个线程发送5个请求,总请求为20*5,如果勾选了“永远”那么所有的线程会一直发送请求,直到选择停止运行脚本;
3.HTTP请求的配置:
名称:用于标识一个取样器,建议使用有意义的名称;
注释:对于测试没啥用,仅用来备注;
服务器IP:HTTP请求发送的目标服务器或者IP地址;
端口号:目标服务器的端口号,默认是:80
timeouts:设置请求和响应时间的超时时间;
协议:HTTP或者HTTPS
方法:发送HTTP的方法:get post ,head put options trace delete等等
content encoding:内容的编码方式,默认是:ISO8859
路劲:目标URL,注意不包括服务器的地址和端口
自动重定向:如果选中该项,当发送的HTTP请求是302/301的时候,jmeter自动重定向到新的页面;
use keep alive:jmeter和目标服务器之间使用keep-alive方式(又称持久链接,链接重用)进行HTTP通信,默认是选中的
use multipart /from -data for HTTP POST :当发送HTTP请求的时候,使用use multipart /from -data 方法发送,默认不选中;
通请求一起发送参数:
可以在发送的请求的时候把参数一起发送;
通请求一起发送文件:在请求发送文件,通常HTTP文件上传行为可以通过这种方式模拟
从HTML获取资源:默认不勾选,如果勾选,jmeter在发出请求后,得到响应后,会对HTML的文件进行分析并获取HTML的内容,包括图片,flash等等;
用作监视器:此取样器被当做监视器,在监视结果中可以看到取样器的图形化统计信息,默认不选中;
save response as md5 hash :选中该项,在执行时仅仅记录服务端返回的MD5的值,而不记录完整的响应数据,在需要进行数据量非常大的测试的时候,建议选中该项,以减少取样器记录响应数据的开销;
tips:默认时间单位是毫秒,报告输出文件后缀。jtl
3.设置QPS限制:
jmeter提供了一个非常有用的定时器:Constant Throught Timer(常数吞吐量定时器),该定时器可以方便的控制给定的取样器发送请求的吞吐量;
Constant Throughtput Timer :的主要的属性:
Target throughtput(in samples per minute):目标吞吐量,这里是每分钟发送的请求数量,实际填的数量为:60*QPS 其次,Calculate Throughput based on :有5个选项,分别是:
This thread only :控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的target Throught 乘以该线程的数量;
all active threads :设置的target throughput 将分配在每个活跃的线程上,每个活跃的线程在上次运行结束后,等待合理的时间后再次运行,活跃线程,指的是同一个时刻,同时运行的线程;
all active threads(shared):与all active threads 的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃的线程上一次运行结束后,等待合理的时间后再次运行;
all active threads in current threads group:设置的target throughput 将任务分配在当前线程租的每一个活跃的线程上,当测试计划中只有一个线程组时,该选项和all active threads的效果一样,
all active threads in current threads group(shared)和all active threads in current threads group基本相同,唯一的区别是,每个活跃的线程都会在所有活跃线程的上一次运行结束后等待,合理时间后再次运行;
第四步:添加监听器:
脚本的主要部分设置完成后,需要通过某种方式获得性能测试中的测试结果,在本例中我们只关心,请求响应时间;
Jmeter 中使用监听器元件,收集取样器记录的数据并以可视化的方式来呈现,Jmeter有各种不同监听类型,因为HTTP请求,我们可以在添加聚合报告,更为直观的查看测试结果。
添加聚合报告:右键点击线程组,在弹的菜单(添加---监听---聚合报告)中选择聚合报告。
添加查看结果树(添加---监听---查看结果树)
5、运行脚本
6、聚合报告分析
label:每个jmeter 的element(例如:HTTP request)都有一个,Name属性,这里是显示的就是 Name 属性的值;
samples:表示这次测试中一共发出了多少请求,如果模拟10个用户,每个用户迭代,10次,那么这里显示100
Average:平均响应时间,---默认情况下是单位,request,的平均响应时间,当使用了Transaction Controller 时,也可以Transaction 为单位显示平均响应时间。
median :中位数,也就是50%用户的响应时间;
90%Line:90%用户的响应时间
MIn:最小的响应时间;
Max:最大响应时间;
Error%:本次测试中出现错误的数量/请求的总数。
Throughput:吞吐量,---默认情况下表示每秒完成的请求数,(request per second)当使用了,transaction controller时,也可以表示类似(loadrunner)的 Transaction per Second数;
响应时间单位:毫秒,见脚本:
7.Jmeter 断言(检查点):
断言是在请求的返回层面增加一层判断机制。因为请求成功了,并不代表结果一定正确,因此需要检测机制提高测试准确性,下面介绍常用的jmeter三种断言;
1.响应断言:
2.Size Assertion(Size断言)
3.Duration Assertion (持续时间断言)
如果响应时间大于设置的响应时间,则断言失败,否则失败,否则成功!
8.Jmeter参数化:
1.用户参数:这里讲一下,CSV data setconfig
3.随机参数化:
9.JMETER的集合点:
操作步骤----step--定时器---Synchronizing Timer
注意:集合点需要放在集合的元件的前面;
10.jmeter关联:
1.正则表达式的提取器:
添加---后置处理器---正则表达式提取器:
正则表达式部分配置说明:
1.引用名称:下一个请求要引用的参数名称,如填写activityID,则可用${activityID}引用它;
2):正则表达式:
()括起来的部分就是要提取的
.匹配任何字符串
+:一次或者多次
?:在找到第一个匹配项后停止
3)莫版:用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$3$3等等,表示解析到的第几个值给title,如:$1$2表示解析道德第1个值;
4)匹配数字:0代表随机取值,1代表全部取值
5)缺省值:如果参数没有取值得到值,那默认给一个值让他取