JMeter :是一款很优秀的开源性能测试工具。
从性能工具的原理划分:
Jmeter工具和其他性能工具在原理上完全一致,工具包含4个部分:
(1)负载发生器:通过多线程模拟并发,对目标产品产生负载。
(2)用户运行器:通常是一个脚本运行引擎,用户运行器附加在线程或进程上,根据脚本要求模拟指定的用户行为。
(3)资源生成器:生成资源数据用于服务器、负载机的测试。
(4)报表生成器:根据测试中霍地的数据生成报表,提供可视化的数据显示方式。
测试计划元件
Test Plan (测试计划):是创建测试任务的最大单位,包含了本次性能测试所有的相关功能,本次性能测试的所有内容都是基于同一个计划。
接下来我们再看一下计划下面有哪些功能模块(右键单击“测试计划”弹出菜单)。
Threads(Users)线程 用户
我们可以看到是有三种不同的线程组的,但是虽然名字不一样我们创建之后的界面是完全一样的,setUp theread Group 与terDown Thread Group 是新版本的JMeter新增的选项,我们看一下有什么用。
1) setup thread group
用于执行预测试操作的ThreadGroup。线程的行为和正常的线程组元件没有什么区别,唯一不同的是这些类型的线程会在执行测试前进行定期线程组的执行。
2) teardown thread group
用于执行测试后操作的ThreadGroup。线程的行为同样和正常的线程组元件没有什么区别,唯一不同的是这些类型的线程会在执行测试后进行定期线程组的执行。
这么说你可能还是不太明白他们和普通的线程组到底有什么不同,如果你有使用过loadrunner你就应该知道,loadrunner的脚本除了action里面是真正的我们要执行的脚本核心内容,还有初始化“环境”的初始化脚本和测试完毕后对应的清除信息的脚本块,从本质上看这里的setup thread group 和 teardown thread group和他们是一样的。
3) thread group(线程组)
这个就是我们的核心内容所在了,这个就是我们添加的运行的线程,通常叫他线程组,线程组中的每一个线程我们都可以理解成我们模拟出来的虚拟用户,线程组中包含的线程数量在测试执行的过程中是不会发生改变的。
测试片段(Test Fragment)
测试片段是在2.5版本之后新加的一个选项。他是控制器上的一个特殊的线程组,它在测试树上与线程组处于同一层。但是它与线程组又有所不同,因为它不会被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。
控制器
JMeter有两种类型的控制器:取样器(sample)和逻辑控制器(Logic Controller)。
取样器(Sampler)
取样器(Sample)是我们在性能测试过程中向服务器发送请求,记录响应信息等的最小单元,JMeter是支持很多种sampler的,这一点他非常强大,比如HTTP Request Sampler 、 FTP Request Sample 、TCP Request Sample 、JDBC Request Sampler 等都是完美支持的。
逻辑控制器(Logic Controller)
逻辑控制器包含可两类元件,一类是用于控制test plan 中 sampler 节点发送请求的逻辑顺序的控制器,常用的有 如果(If)控制器 、switch Controller 、Runtime Controller、循环控制器等。另一类是用来组织可控制 sampler 来节点的,如 事务控制器、吞吐量控制器。
配置元件(Config Element)
配置元件(config element)用于提供对静态数据配置的支持,比如HTTP cookie管理器可以静态的保存cookie用来保持前后请求的关系。CSV Data Set config 可以将本地数据文件形成数据池(Data Pool),而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配制无件则可以修改Sampler的默认数据。
定时器(Timer)
定时器(Timer)可以设置每个操作之间的等待时间,类似于LoadRunner里面的“思考时间”,等待时间是我们在性能测试中常用的控制客户端QPS的手段。JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。
前置处理器(Per Processors)
顾名思义,用来在请求实际发出之前对请求进行特定的处理,比如可以定义一个用户参数为随机数,我们在实际请求中就可以使用这个随机数,达到批量发不同请求的目的。
后置处理器(Post Processors)
与前置处理器对应,后置处理器用于对Sampler 发出请求后得到的服务器响应进行处理,一般我们在这里提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。比如正则表达式提取器可以正则匹配响应中的参数并提取出来。
断言(Assertions)
断言是用来检查测试中得到的响应数据是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。
监听器(Listener)
监听器是用来对测试结果数据进行处理和可视化的元件。其中图形结果、查看结果树、聚合报告都是我们经常用到的元件。
我们已经基本了解了JMeter的基本常用元件,我们的性能测试工作也主要是使用这些元件来完成测试任务。