1.线程数的意义
Jmeter采用了线程来模拟用户,即1个线程代表1个用户,线程可以简单理解为计算机处理任务时的一个具体执行人。
一个任务可以由多个人(线程)共同完成,也可以由一个人(线程)来完成,但是至少需要一个人(线程)来完成。在线程组上设置线程数量为10,代表Jmeter会在瞬间启动10个线程来模拟10个用户发起请求。
Ramp-Up时间(秒)值表示启动所有线程所用的时间。
2.循环的意义
默认情况下,Jmeter里的每个线程(用户)只会发起一次请求,执行完成后Jmeter就会停止。这个时间通常很 短。但是在实际场景中,大多数的业务都是持续不断的有用户来请求,这秒有10个用户来请求,下一秒还会有 10个用户。好多系统能够支持短时间内的大量并发请求,但是持续一段时候可能就会挂掉。因此使用Jmeter来 压测时,也必须让Jmeter持续的来模拟新的用户请求,这样才能更贴近实际场景。才能测出更多的问题。 Jmeter里可以设置循环次数,让一个线程(用户)执行完一次请求后,还能继续执行请求,持续产生压力。
循环可以通过设置固定的循环次数和固定循环时间来达到效果。
2.1.固定循环次数
比如设置循环次数1000,代表每个线程连续执行1000次线程组内的请求,10个线程总共执行10000次请求。
2.2.固定循环时间
勾选永远,勾选调度器,设置持续时间,单位为秒。图中设置为180,代表持续每个线程持续执行180秒。
3.线程组的执行逻辑
在做脚本设计时,如果有多种业务同时压测,可以创建多个线程组,每 个线程组上设置不同的线程数,线程组之间是相互独立的。线程组就代 表了不同的人群。可以理解成线程组相当于是公司里的不同部门,每个 部门有若干个员工(线程数),每个部门做的事情是相互独立的,互不 影响。
如果某个业务需要调用多个接口来完成,通常会把多个接口写到同一个 线程组内,代表了一个业务流程,比如“登录-加购物车-下单”。同一 个线程组内的每个线程都会按照从上到下的顺序去执行请求,而且每个 线程之间的工作也是相互独立。
可以理解为销售部的每一个员工,他们 在工作时,都会按照一个“寻找客户-忽悠客户-签合同”的顺序,每个 员工都是在做自己的工作,有自己的客户,相互独立。 因为线程组上通常都设置了循环次数,因此每个线程执行完请求后,会 继续循环下一轮,一直到循环结束。在销售部里面,每个员工签订完一 个客户后,会继续再次"寻找客户-忽悠客户-签合同"的流程。
3.1.线程组和请求设置逻辑
关键逻辑:
一个线程组内的多个请求是顺序执行的;
不同线程组内的请求是并行执行的。
线程组和请求的关系:
如果多个接口之间没有强依赖关系,每个接口单独设置一个线程组;
如果多个接口之间有依赖关系(数据关联),把有关联关系的接口按照顺放在同一个线程组内。
4.特殊的线程组
4.1.setUp线程组
执行全局初始化操作的线程组,在所有线程组前执行。
4.2.tearDown线程组
执行全局结束操作的线程组,在所有线程组之后执行。