Jmeter工具栏
红框中的内容显示线程情况,左边是活动线程数,右边是线程总数
测试计划
测试计划页面默认情况下这样显示:
独立运行每个线程组(例如在一个组运行结束后启动下一个):默认不勾选,默认各线程组并行、随机执行。勾选后,用于控制测试计划中的多个线程组的执行顺序,保证顺序执行各线程组
线程组
线程组界面默认如下图所示
线程数:Jmeter java进程下启动的线程,用来模拟真实用户数,1线程数 = 1用户数,记住线程是用户,要模拟100个用户登录,就要设置100个线程数。
Ramp-Up时间(秒):启动线程所需的时间
Ramp-up 设置注意事项:
1、Ramp-up需要设置足够长的时间来避免在测试刚开始时工作量过大
假如需要大量线程的话,不建议设置成0,0 属于瞬时加压,如果设置 0,Jmeter 将在测试开始时就启动全部线程并立即发送请求,这样很容易让服务器达到饱满状态,且瞬间会增加很大的负载量,容易让服务器超载,这样是不合理的;
不合理的原因并不是因为平均压力值过高,而是因为所有线程都在初始状态时一起并发访问,从而引起不正常的初始访问峰值,可以通过 Jmeter 的聚合报告看到这种情况
2、Ramp-up还必须足够短,保证最后一个线程在第一个线程完成之前开始运行
如果 Ramp-up 过大,则会降低访问峰值的负载,即没有达到预期的压力峰值,无法获取准确的服务器最大负载情况
具体的表现为,一些线程还没有启动,初期启动的部分线程已经结束了,导致实际并发量并会小于预期并发量
如何确定一个合理的ramp-up period?
首先,让初始点击率接近平均点击率,前提是确定合理的访问量
初始的 ramp-up period = 平均点击率= 总线程/点击率;假如线程数=100,点击率=10次/s,则ramp-up period = 100/10 = 10s
循环次数:每个线程循环执行的次数,如果设置为永远,就一直执行
线程属性值的简单例子
上图:10s 内启动并运行 10 个线程,一共启动 10 个线程,循环次数是2,总共发送 20 个请求(10*2),每秒启动一个线程,然后运行两次
调度器的作用
调度器的作用:控制每个线程组运行的持续时间以及它在多少秒后再启动
持续时间:线程组运行的持续时间
启动延迟:测试计划开始后,线程组的线程将在多少秒后再启动运行
调度器和循环次数的关系
循环次数有固定值且 ≠ -1,持续时间不会生效,以循环次数为准
循环次数设置为永远或 -1 时,持续时间才会生效,所以想要调度器起作用,循环测试要勾选永远
启动jemter
找到你安装的文件夹,找到bin文件夹,运行jemter.bat.打开jemter
新建线程组
线程数:虚拟用户数。一个虚拟用户占用一个进程或线程,设置多少虚拟用户数在这里也就是设置多少个线程数。
准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为20,准备时长为10s,那么需要10秒钟启动20个线程,也就是每秒钟启动2个线程。
循环次数:每个线程发送请求的次数。如果线程数为20,循环次数为100,那么每个线程发送100次请求,总请求数为20*100=2000。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
添加http请求
要发送一个get方法的http,设置为
要发送一个post方法的http,设置为
对比一下就很容易看出区别了,get请求直接填就好了,post请求需要添加值
名称:用于标识取样器,建议使用一个有意义的名称。
注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。
服务器名称或IP:HTTP请求发送的目标服务器名称或IP地址。
端口号:目标服务器的端口号,默认值为80。
协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https,默认值为http
方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。(一般使用get和post)
Content encoding:内容的编码方式,默认值为iso8859
路径:目标URL路径(不包括服务器地址和端口)
自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面。
Use keep Alive:当该选项被选中时,jmeter 和目标服务器之间使用Keep-Alive方式进行HTTP通信,默认选中。
Use multipart/from-data for HTTP POST:当发送HTTP POST 请求时,使用Use multipart/from-data方法发送,默认不选中。
http请求默认值
一般情况下,我们在一个项目中调用的接口中协议、域名、端口、编码等都是相同的。当我们创建多个HTTP请求时,由于这些数据是必填项,所以,我们就需要不停地填写相同的数据。如果项目进行过程中出现了更改域名、更改端口号等情况,我们又需要把每一个请求中的数据都做更改,这样就很麻烦。
下面我们就来介绍一种方法将这些相同的参数设置为默认的,每次创建 HTTP 请求时就不用再输入了,这就需要我们配置【HTTP 请求默认值】来实现了
添加方式:线程组->配置元件->HTTP请求默认值
将接口中相同的协议、域名、端口、编码填写在HTTP请求默认值元件中,在接口请求中就不用再填写该信息了,如下图所示
http cookies管理器使用
某些接口提交数据,需要带上登录cookie,才能访问,怎样提取登录cookie呢?
可以先新建一个http的登录请求,放在所有http请求的最前面,然后在线程组下增加一个http cookies管理器放在最上面,做为全局cookies,无需填写内容,http cookies管理器会自动将登录请求中的cookie抓取,给登录请求后面的接口
察看结果树
新建一个察看结果树,里面不需要填写信息