《2022年Jmeter入门教程 .pdf》由会员分享,可在线阅读,更多相关《2022年Jmeter入门教程 .pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Jmeter 基础之 -jmeter基础概念JMeter 介绍: 一个非常优秀的 开源的性能测试 工具。优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来。从性能工具的原理划分:Jmeter 工具和其他性能工具在原理上完全一致,工具包含4 个部分:(1) 负载发生器:用于产生负载,通常以多线程或是多进程的方式模拟用户行为。(2) 用户运行器:通常是一个脚本运行引擎,用户运行器附加在线程或进程上,根据脚本要求模拟指定的用户行为。(3) 资源生成器:用于生成测试过程中服务器 、负载机的资源数据。(4) 报表生成器:根据测试中霍地的数据生成报表,提供可视化的数据显示方式。测试计划元件Tes
2、t Plan ( 测试计划 ) :用来描述一个 性能测试 ,包含与本次 性能测试 所有相关的功能。也就说本的性能测试的所有内容是于基于一个计划的。下面看一下一个计划下面都有哪些主要的功能模块( 右键单击“测试计划”弹出菜单) 。Threads (Users)线程 用户名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - 虽然有三个添加线程组的选项,名字不一样,创建之后,其界面是完全一样的。之前的版本只有一个线程组的名字。现在多一个s
3、etUp theread Group 与 terDown Thread Group 1) setup thread group 一种特殊类型的 ThreadGroup 的,可用于执行预测试操作。 这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。2) teardown thread group. 一种特殊类型的 ThreadGroup 的,可用于执行测试后动作。 这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组。可能你还是不太理他们与普通的线程组有什么不同。如果您用过 junit,想必你不会对 se
4、tup ,teardown 这 2 个字眼陌生。即时每用过,也没关系。熟悉 loadrunner的应该知道, loadrunner的脚本除了 action里是真正的脚本核心内容, 还有初始化“环境”的初始化脚本和测试完毕后对应的清除信息的脚本块。那么这里 setup thread group 和 teardown thread group 就是分别指这两部分。 其实从本质上来看,他们并没有什么不同。3) thread group(线程组). 这个就是我们通常添加运行的线程。通俗的讲一个线程组, ,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执
5、行过程中是不会发生改变的。测试片段 (Test Fragment) 测试片段是在 2.5 版本之后新加的一个选项。测试片段元素是控制器上的一个种特殊的线程组,它在测试树上与线程组处于一个层级。它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。控制器JMeter 有两种类型的控制器:取样器(sample) 和逻辑控制器 (Logic Controller),用这些原件来驱动处理一个测试。取样器 (Sampler) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
6、 - - - 第 2 页,共 14 页 - - - - - - - - - 取样器 (Sample) 是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 原生支持多种不同的sampler ,如 HTTP Request Sampler 、 FTP Request Sample 、TCP Request Sample 、JDBC Request Sampler 等,每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。( 在 jmeter 的所有 sampler 中,Java Request Sampler 和 Beanshell Requ
7、est Sampler 是两种特殊的可定制的 Sampler ,后面会深入讨论。 ) 逻辑控制器 (Logic Controller) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 逻辑控制器,包括两类无件,一类是用于控制test plan 中 sampler 节点发送请求的逻辑顺序的控制器,常用的有如果(If)控制器 、switch Controller 、Runtime Controller、循环控制器等。另一类是用来组
8、织可控制 sampler 来节点的,如事务控制器、吞吐量控制器。配置元件 (Config Element) 配置元件 (config element)用于提供对静态数据配置的支持。CSV Data Set config 可以将本地数据文件形成数据池 (Data Pool),而对应于 HTTP Request Sampler 和 TCP Request Sampler 等类型的配制无件则可以修改Sampler 的默认数据。 ( 例如, HTTP Cookie Manager 可以用于对 HTTP Request Sampler 的 cookie 进行管理 ) 定时器 (Timer) 名师资料总结
9、 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - 定时器 (Timer) 用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手端。类似于 LoadRunner里面的“思考时间”。 JMeter 定义了 Bean Shell Timer、Constant Throughput Timer 、固定定时器等不同类型的Timer。前置处理器 (Per Processors) 用于在实际的请求发出之前对即将发出的请求进行特殊处理。
10、例如,HTTP URL 重写修复符则可以实现 URL重写,当 RUL中有 sessionID 一类的 session 信息时,可以通过该处理器填充发出请求的实际的 sessionID 。后置处理器 (Post Processors) 用于对 Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据( 类似LoadRunner测试工具 中的关联概念 ) 。例如, XPath Extractor 则可以用于提取响应数据中通过给定XPath 值获得的数据。断言(Assertions) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
11、 - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点, 用以保证性能测试过程中的数据交互是否与预期一致。监听器 (Listener) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - 这个监听器可不是用来监听系统资源的元件。它是用来对测试结果数据进行处理和可视化展示的一系列元件。图行结果
12、、查看结果树、聚合报告。都是我们经常用到的元件。到此,我们已经简单了解了jmeter 的基本组成原件,我们后序的性能测试工作也就是使用这些元件来完成测试任务。JMeter 基础之一一个简单的性能测试上一节中,我们了解了jmeter 的一此主要元件,那么这些元件如何使用到性能测试 中呢。这一节创建一个简单的 测试计划来使用这些元件。该计划对应的测试需求。1)测试目标网站是 和 tt- 2)测试目的是该网站在负载达到20 QPS 时的响应时间。QPS 解释QPS : Query Per Second 每秒查询率。是一台查询服务器每秒能够处理的查询次数。在因特网上,作为域名系统 服务器 的机器的性能
13、经常用每秒查询率来衡量。为了达成预期的测目的,需要需要在jmeter 中建立一个测试计划。因为本次测试仅要求完成对 和 tt- 两个博客首页请求,因此只需要使用HTTP Request Sampler 即可。建立测试计划启动 jmeter 后,jmeter 会自动生成一个空的测试计划,用户可以基于该测试计划建立自己的测试计划。添加线程组一个性能测试 请求负载是基于一个线程组完成的。一个测试计划必须有一个线程组。测试计划添加线程组非常简单。在测试计划右键弹出下拉菜单( 添加-Threads(Users)-线程组 ) 中选择线程组即可。jmeter 中 每个测试计划至少需要包含一个线程组,当然也可
14、以在一个计划中创建多个线程组,那么多个线程组之间又会怎样的顺序执行( 串行还是并行 )?在测试计划下面多个线程是并行执行的,也就是说这些线程组是同时被初始化并同时执行线程组下的Sampler 的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - 线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds)、循环次数。线程数:虚拟用户数。 一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也
15、就是设置多少个线程数。准备时长: 设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为 10 ,那么需要 10 秒钟启动 20 个线程。也就是每秒钟启动2 个线程。循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为 100 ,那么每个线程发送100 次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。设置合理的线程数对于能否达到测试目标有决定性的影响。在本例中,要求得到网站首页在20 QPS 负载情况下的响应时间, 如果如果线程数量设置的过小,则很可能无法达到设定的QPS 要求。另外,设置合理的循环次数
16、也很重要, 除了上面介绍的固定循环次数与永远外 ; 也可以灵活的选择设定测试运行时间。勾选“调度器”,进行调度器配置。添加 HTTP请求添加完成线程组后,在线程组上右键菜单(添加-Sampler-HTTP请求) 选择 HTTP 请求。对于 jmeter 来说,取样器 (Sampler) 是与服务器进行交互的单元。一个取样器通常进行三部分的工作:向服务器发送请求记录服务器的响应数据记录相应时间信息名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - -
17、- - - - 一个 HTTP请求有着许多的配置参数,下面将详细介绍:名称:本属性用于标识一个取样器,建议使用一个有意义的名称。注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。服务器名称或 IP :HTTP请求发送的目标服务器名称或IP 地址。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - 端口号:目标服务器的端口号,默认值为80 。协议:向目标服务器发送HTTP请求时的协议,可以是http 或者是 https ,默
18、认值为 http 。方法:发送 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
19、 for HTTP POST :当发送 HTTP POST 请求时,使用 Use multipart/from-data方法发送,默认不选中。同请求一起发送参数: 在请求中发送 URL参数,对于带参数的URL ,jmeter 提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对( 对应RUL中的 名称 1=值 1)。同请求一起发送文件:在请求中发送文件,通常,HTTP 文件上传行为可以通过这种方式模拟。从 HTML 文件获取所有有内含的资源:当该选项被选中时,jmeter 在发出 HTTP 请求并获得响应的 HTML 文件内容后,还对该HTML 进
20、行 Parse 并获取 HTML 中包含的所有资源 ( 图片、flash等) ,默认不选中,如果用户只希望获取页面中的特定资源,可以在下方的Embedded URLs must match 文本框中填入需要 下载的特定资源表达式,这样,只有能匹配指定正则表达式的URL指向资源会被 下载。用作监视器:此取样器被当成监视器,在Monitor Results Listener 中可以直接看到基于该取样器的图形化统计信息。默认为不选中。Save response as MD5 hash? :选中该项,在执行时仅记录服务端响应数据的MD5 值,而不记录完整的响应数据。 在需要进行数据量非常大的测试时,建
21、议选中该项以减少取样器记录响应数据的开销。在这里我们添加两个HTTP请求,分别用于对 和 tt-发送请求。设置 QPS 限制本次性能测试的需求中提到测试的目的是“了解博客的首页在负载达到20 QPS 时的响应时间”,因此需要控制向博客首页发送请求的负载为20QPS 。一种可行的方法是逐步调整测试计划中的线程计算的数量以及为取样器(Sampler) 添加定时器(Timer) ,以使 HTTP取样器发出的请求的 QPS保持在 20 个左右。但这种方法耗时耗力,需要经过多次尝试才能达到 ; 另一方法,完全通过设置定时器来控制QPS , 一旦取样器的响应时间发生改变(网 络环境发生改变 ) ,就需要重
22、新调整定时器的等待时间。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14 页 - - - - - - - - - Jmeter 提供了一个非常有用的定时器,称为Constant Throughput Timer ( 常数吞吐量定时器 ) ,该定时器可以方便地控制给定的取样器发送请求的吞吐量。右键点击 ,弹出菜单 ( 添加- 定时器 -Constant Throughput Timer)选择 Constant Throughput Timer Constant Thr
23、oughput Timer 的主要属性介绍:名称 :定时器的名称Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,因此,对应测试需求中所要求的20 QPS ,这里的值应该是1200 。Calculate Throughput based on :有 5 个选项,分别是:This thread only :控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 target Throughput 乘以矣线程的数量。All active threads : 设置的 target Throughput 将分配在每个活跃线程上
24、,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。All active threads in current thread group :设置的 target Throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和All active threads选项的效果完全相同。All active threads (shared ):与 All active threads 的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。All cative threads in
25、current thread group (shared ):与 All active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 14 页 - - - - - - - - - 如上图,该元件仅作用于 ,设置定时器的 Target throughput为 1200/分钟(20 QPS),设置 Calcula
26、te Throughput based on 的值为 All active threads 。当然, Constant Throughput Timer 只有在线程组中的线程产生足够多的request 的情况下才有意义,因此,即使设置了Constant Throughput Timer的值,也可能由于线程组中的线程数量不够,或是定时器设置不合理等原因导致总体的QPS不能达到预期目标。添加监听器 (Listener) 脚本的主要部分设置完成后, 需要通过某种方式获得性能测试中的测试结果,在本例中, 我们关心的是请求的响应时间。Jmeter 中使用监听器元件收集取样器记录的数据并以可视化的方式来呈
27、现。Jmeter 有各种不同的监听器类型,因为上HTTP请求,我们可在添加聚合报告,更为直观的查看测试结果。添加聚合报告,右键点击线程组,在弹的菜单( 添加- 监听器 - 聚合报告 ) 中选择聚合报告。运行脚本添加完成聚合报告后,我们来运行脚本,稍后介绍聚合报告的参数。在运脚本之前,我们来查看一下,各个元件的参数设置:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 14 页 - - - - - - - - - - 线程组:线程数: 20 准备时长: 10 循环次数: 1
28、0 - HTTP 请求:名称: 。服务器名称或 IP : 端口号: 80 Implementation : java协议: http 方法: GET 路径: / - 常数吞吐量定时器:Target throughput(in samples per minute):1200.0 Calculate Throughput based on :All active threads - 点击工具栏上的运行按钮,或者点击菜单栏“ 运行 - 启动 ” 或者使用快捷键ctrl+r 来运行程序。聚合报告分析查看聚合报告的运行结果:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - OK! 到此一次完整的性能测试结束,如果你从中有所收获,推荐一记! 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -