使用jmeter做压力测试
1,打开jmeter
2,在测试计划右键添加一个线程组
它的作用其实是为了模拟用户,所以也叫Users。一个线程组模块可以包含多个线程,每个线程代表一个用户,这样可以模拟高并发下的请求,并根据网站的响应信息来判断网站的相关性能。
线程组包含很多属性,目前我们只关注线程属性那一块。
线程组属性的介绍:
2.1 线程数代表访问的并发数,默认是1。
2.2 Ramp-Up Period 表示多长时间内容启动所有线程,如果时间很短,会造成网站的瞬间高并发,默认值是1秒。
2.3 循环次数是表示执行多少次,默认值为1,表示执行一次结束,这里可以勾选永远,让其一直运行下去。
3,在线程组右键创建一个http请求
HTTP请求面板主要的目的是设置测试时候HTTP请求的相关信息,模拟浏览器访问或者其他程序访问后台的相关配置。
对basic相关的参数进行说明;
3.1 服务器IP
3.2 端口
3.3 方法,get还是post,还是其他
3.4 协议,http协议
3.5 路径,不要包含ip
3.6 参数,请求的时候要携带什么参数
4,在线程组添加监听器---添加结果树
现在基本配置已经OK,但是这样执行后返回的结果却没有地方查看。为了方便查看结果,这里添加View Results Tree面板,有很多其它的结果查看面板,大家可以自己尝试一下。
结果树主要是观察服务器响应信息,并支持将结果写入文件。
5,在线程组添加断言--响应断言
6,在线程组添加监听器---添加聚合报告
就剩下最后一个问题了,如何查看所有请求的综合情况。最常用的就是聚合报告模块。
该模块可以详细的展示所有请求的综合水平。包括请求个数,平均响应时间,最大响应时间、吞吐量等等。
有很多的请求是需要登陆的,怎么处理这种情况?
测试场景:确认平台登录后首页的并发能力
问题:每次都登录的话会对响应时间造成一定影响:
解决方案:登录平台后通过chrome插件获取cookie,通过jmeter的cookie管理器跳过登录步骤
压测方案:本机项服务器发起不同并发数量,持续压测5分钟,根据聚合报告确认系统的qps,响应时间,对服务器内存及CPU的影响(如何通过插件监控服务器CPU后续会介绍)
7,在线程组添加配置元件----http cookie管理器
添加一个cookie管理器,什么都不用填
把需要用到的请求放到登录后面。后面的请求就会跟上cookie
把cookie管理器放到线程组里,可以单个线程共享。
怎么跨线程共享cookie呢?
也可以直接手动添加cookie到http cookie管理器
8,在线程组添加配置元件--添加计数器
另外,由于POST请求方式,如果不设置Headers的content-type,基本默认会以 application/x-www-form-urlencoded 方式提交数据。为了Post请求确保传的是json格式,还需要在请求头中声明一下请求参数的格式为json,具体操作如下:
Thread Group右键Add》Config Element》HTTP Header Manager,打开HTTP信息头管理器,Add一个Name为Content-Type,Value为application/json,如下图,一个json格式的post请求完成了
####