B_03_JMeter基础

一、测试元件

1,Test Plan(测试计划,A级)

用来描述一个性能测试,包含与本次性能测试所有相关的功能。也就是说性能测试的所有内容是于基于一个计划的。

 1.1 参数说明

        1)User Defined Variables,用户定义的变量:

        在测试计划上可以添加用户定义的变量,相当于是全局变量。

        一般添加一些系统常用的配置。如果测试过程中想切换环境,切换配置,一般不建议在测试计划上添加变量,因为不方便启用和禁用,一般是直接添加用户自定义变量组件。

        2)Run Thread Groups consecutively(i.e. one at time),独立运行每个线程组:

        用于控制测试计划中的多个线程组的执行顺序。

        不勾选时,默认各线程组并行、随机执行。

        如果勾选了独立运行每个线程组,可以保证按照顺序执行各线程组。

        补充说明:

        线程组中的取样器的执行顺序:默认是从上到下执行。交替控制器、随机控制器、随机顺序控制器和循环控制器等可以改变取样器的执行顺序。

        3)Run teardown Thread Groups after shutdown of main threads:

        当线程组停止运行时仍继续运行 tearDown 线程组,该选项结合线程组的执行配置使用。

        4)Functional Test Mode,函数测试模式:

        如果选中了此选项,同时监听组件如“查看结果树”配置了保存到一个文件中,那么jmeter会将每次的请求结果保存到文件中。一般不建议勾选。

        5)Add directory or jar to classpath:

        添加文件或jar包,此功能最常用于调用外部jar包。

        当脚本需要调用外部的java文件或jar包时,可以把jar包路径添加到这里,然后在beanshell中直接import进来,并调用jar包中的方法。

2,Thread Group(线程组,B级)
2.1 setup thread group(setUp 线程组)

一种特殊类型的 ThreadGroup,用于在执行常规线程组之前执行一些必要的操作。在 setup thread group 下的线程行为与普通线程组完全相同。不同的是执行顺序---它会在普通线程组执行之前被触发。

应用场景举例:

A、测试数据库操作功能时,用于执行打开数据库连接的操作。

B、测试用户购物功能时,用于执行用户的注册、登录等操作。

2.2 teardown thread group(teatDown 线程组)

一种特殊类型的 ThreadGroup,用于在执行常规线程组完成后执行一些必要的操作。在 teardown thread group 下的线程行为与普通线程组完全相同。不同的是执行顺序---它会在普通线程组执行之后被触发。

应用场景举例:

A、测试数据库操作功能时,用于执行关闭数据库连接的操作。

B、测试用户购物功能时,用于执行用户的退出等操作。

注意:默认情况下,如果测试按预期完成,则TearDown线程组将不会运行。如果你想要运行它,则需要从Test Plan界面中选中复选框“Run tearDown Thread Groups after shutdown of main threads”

2.3 thread group(线程组)

普通线程组。

通俗的讲,一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。多个用户同时去执行相同的一批次任务。每个线程之间都是隔离的,互不影响的。一个线程的执行过程中,操作的变量,不会影响其他线程的变量值。

2.4 参数说明

        1)Action to be taken after a Sampler error,取样器错误后要执行的动作:

        Continue:忽略错误,继续执行

        Start Next Thread Loop: 忽略错误,线程当前循环终止,执行下一个循环。

        Stop Thread:当前线程停止执行,不影响其他线程正常执行。

        Stop Test:整个测试会在所有当前正在执行的线程执行完毕后停止

        Stop test now:整个测试会立即停止执行,当前正在执行的取样器可能会被中断。

        2)Number of Threads,线程数

        线程数也就是并发数,1线程数 = 1用户数,每个线程将会完全独立的运行测试计划,互不干扰。多个线程用于模仿对服务器的并发访问。

        3)ramp-up period ,用于设置启动所有线程所需要的时间。

        如果选择了10个线程,并且 ramp-up period 是100秒,那么JMeter将使用100秒使10个线程启动并运行。每个线程将在前一个线程启动后10(100/10)秒后启动。又或者比如线程数为100,ramp-up period为5秒,那么相当于用时5秒达到100线程数,平均每秒启动20个线程。

        当这个值设置的很小、线程数又设置的很大时,在刚开始执行时会对服务器产生很大的负荷。另外,如果把时间设置为Ramp-Up Period=0,其实也并不会一起并发所有线程,如果要实现真正意义上的同时并发,可引入Synchronizing Timer定时器,在Number of Simulated Users to Group by选项中设置并发数。

        注:确定一个合理的 Ramp-up:

        假如线程数=100,点击率=10次/s,则 ramp-up = 100/10 = 10s。

        4)Loop Count,循环次数:

        该项设置线程组在结束前每个线程循环的次数,如果次数设置为1,那么JMeter在停止前只执行测试计划一次。

        如果勾选你了永远(infinite),那么线程会无限循环执行。

        5)Same user on each iteration,表示每个迭代都用相同的线程。

        默认值:默认是勾选

        举例1:比如线程数为1,循环次数为5,那么创建好1个线程后,每次循环迭代都用这个线程,直到测试结束。如果不勾选,那么每次循环会销毁之前的线程,再创建1个新的线程,测试结束总共会经过5次创建销毁线程,浪费了计算机资源,线程多了甚至可能会影响性能测试结果,所以默认是勾选的。

        举例2:这1个线程中有登录操作,加入cookie后,这个线程5次迭代下来用的都是这一个cookie

        6)Delay Thread creation until needed,延迟创建线程直到需要

        默认情况下,测试开始的时候,所有线程就被创建完了。勾选此项后,取样器开始执行时才会被创建

        7)调度器

        Duration,表示多少秒后,结束测试;

        Startup delay,表示点击开始执行计划后,延迟多少秒,才真正开始执行。

        注,调度器和循环次数的关系:

        循环次数有固定值且 ≠ -1,持续时间不会生效,以循环次数为准

        循环次数设置为永远或 -1 时,持续时间才会生效

3,Sampler(取样器,C级)

        取样器(Sample)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 原生支持多种不同的sampler ,如 HTTP Request Sampler 、 FTP  Request Sample 、TCP  Request Sample 、JDBC Request Sampler 等,每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。

4,Logic Controller(逻辑控制器,B/C级)

       逻辑控制器,包括两类元件,一类是用于控制test plan 中 sampler 节点发送请求的逻辑顺序的控制器,常用的有 如果(If)控制器 、switch Controller 、Runtime Controller、循环控制器等。另一类是用来组织可控制 sampler 来节点的,如 事务控制器、吞吐量控制器

5,Config Element(配置元素,B/C级)

       配置元素用于提供对静态数据配置的支持。CSV Data Set config 可以将本地数据文件形成数据池(Data Pool),而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配置元素则可以修改Sampler的默认数据。

6,Timer(定时器)

       定时器(Timer)用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手端。类似于LoadRunner里面的“思考时间”。JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。

7,Pre Processors(前置处理器,B/C级)

       用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTP URL重写修复符则可以实现URL重写,当RUL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID。

       User Parameters(用户参数)是可以提供全局设置的前置处理器,其他元件引用的方法是“${变量名}

8,Post Processors(后置处理器,B/C级)

       用于对Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。例如,XPath  Extractor 则可以用于提取响应数据中通过给定XPath 值获得的数据。

       正则表达式

9,Assertions(断言)

       断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。

10,listener(监听器)

       用来对测试结果数据进行处理和可视化展示的一系列元件。 图形结果、查看结果树、聚合报告,都是经常用到的元件。

       测监视器的作用范围是监视同级以下的Samples:

       聚合报告1=聚合报告+聚合报告3。

二、压测任务需求确认

1,固定接口参数进行压测还是进行接口参数随机化压测?

2,要求支持多少并发数?

3,TPS(每秒钟处理事务数)目标多少?响应时间要达到多少?

       “Summary Report” 的 Throughput 可以认为是 TPS;

       JMeter Plugins Manager 安装 “Basic Graphs” 插件,然后在线程组里添加一个 “Transactions per Second ” 监听器。该监听器会显示 TPS 的实时折线图;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值