一、基本知识
1、JMeter是一个非常优秀的开源性能测试工具。
(1)JMeter工具的扩展性非常好
(2)JMeter工具是开源的
(3)JMeter与商业性能测试工具相比,JMeter工具就像一把瑞士军刀。
2、JMeter基本概念
(1)负载发生器:用于产生负载,通常以多线程或是多进程的方式模拟用户行为。
(2)用户运行器:通常是一个脚本运行引擎,用户运行器附加在线程或进程上,根据脚本要求模拟指定的用户行为。
(3)资源监视器:用于获取测试过程中服务器、负载机的资源数据
(4)报表生成器:根据测试中获得的数据生成报表,提供可视化的数据显示方式
3、测试计划元件
3.1 Test Plan(测试计划):用来描述一个性能测试,包括与本次性能测试相关的所有内容。
3.2 Threads Group(线程组):是在一个Test Plan中需要使用到的线程组。通俗地说,一个Thread Group可以看做是一个虚拟用户组,Thread Group中每个线程都可以理解为一个虚拟用户。Thread Group中包含的线程数量在测试过程中是不会发生改变的。
(1)setup thread group
一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。
(2)teardown thread group
一种特殊类型的ThreadGroup的,可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组。
(3)thread group(线程组)
这个就是我们通常添加运行的线程。通俗的讲,一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。
3.3测试片段(Test Fragment)
测试片段元素是控制器上的一种特殊的线程组,它在测试树上与线程组处于一个层级。它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者被控制器所引用时才会被执行。
JMeter有两种类型的控制器:取样器(sample)和逻辑控制器(Logic Controller),用这些原件来驱动处理一个测试。
3.4 取样器(Sampler)
Sampler:是性能测试中向服务器发送请求、记录响应信息的最小时间单位.
JMeter原生支持多种不同的Samper,如HTTP Request Sampler、FTP Request Sampler、TCP Request Sampler、JDBC Request Sampler等,每一种不同类型的Sampler可以根据设置的参数向服务器发出不同类型的请求。在JMeter的所有Sample中,Java Request Sampler和Beanshell Request Sampler是两种特殊的可定制的Sampler.
3.5 Logic Controller(逻辑控制器)
Logic Controller: 包括两类元件,一类是用于控制Test Plan 中Sampler节点发送请求的逻辑顺序的控制器,常用有 如果(If)控制器、switch Controller、Runtime Controller、循环控制器等。另一类是用来组织可控制Sampler节点的,如事务控制器、吞吐量控制器。
3.6 配置元件(Config element)
Config Element(配置元件):用于提供静态数据的支持。CVS Data Set config 可以将本地的数据文件形成数据池(Data Pool), 而对应的HTTP Request Sampler 和TCPRequest Sampler等类型的配置元件则可以修改Sampler的默认数据。
3.7 定时器(Time)
Timer(定时器):定时器用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段。类似于LoadRunner里面的"思考时间"。JMeter定义了Bean Shell Timer、Constant Throughput Time、固定定时器等不同类型的Timer
3.8 前置处理器(Per Processors)
Per Processors(前置处理器):用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTP URL重写修复符则可以实现URL重写,当URL中有sessionID一类的session信息时,可以通过该处理器发出请求的实际的sessionID.
3.9 后置处理器(Post Processors)
Post Processors(后处理器):用于对Sampler发出请求后得到的服务器响应进行处理,一般用来提取响应中的特殊数据
3.10 断言(Assertions)
Assertions(断言):用于检查测试中响应的数据是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中数据交互是否与预期一致。
3.11 监听器(Listener)
Listener(监听器): 这个监听器可不是用来监听系统资源的元件。它是用来对测试结果数据进行处理和可视化展示的一系列元件。图行结果、查看结果树、聚合报告,都是我们经常用到的元件。
二、线程组参数
添加新的线程组参数,
Test Plan(add)-->Thread Group(Users)
1、线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数
2、Ramp-Up Period(in seconds)准备时长:设置的虚拟用户需要多长时间全部启动。如果线程数是10,准备时长是2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
3、循环次数(Loop Count):每个线程发送请求的次数。如果线程数是为10,循环次数为100,那么每个线程发送100次请求。如果勾选了"永远",那么所有线程会一直发送请求,一到选择停止运行脚本。
4、Delay Thread creation until needed:直到需要时延迟线程的创建
5、调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
持续时间(秒):测试持续时间,会覆盖结束时间
启动延迟(秒):测试延迟启动时间,会覆盖启动时间
启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
结束时间:测试结束时间,持续时间会覆盖它。
三、HTTP请求参数:
添加HTTP请求参数
Thread Group(add)-->Sampler-->HTTP Request
1、Web服务器
协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP
服务器名称或IP:HTTP请求发送的目标服务器名称或IP
端口号:目标服务器的端口号,默认值为80
2、HTTP请求
方法:发送HTTP请求的方法,可用方法包括GET、Post、Head、PUT、OPTIONs、TRACE、DELETE等
路径:目标路径URL路径(URL去掉服务器地址、端口及参数后剩余部分)
Content encoding:编码方式,默认为ISO-8859-1编码,这里配置为utf-8
3、同请求一起发送参数
在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的name=value),注意参数传入中文时需要勾选"编码"。
网友评论