初识Jmeter
结构
Jmeter就是先建立线程池,多线程运行取样器(Sampler),产生大量负载,运行过程中用断言验证结果正确与否,用监听器记录测试结果。
取样器如果有参数化需求,交由X2中的前置处理器或配置元件完成。
如果有关联需求,交由后置处理器完成。如果要模拟运行场景,就设置线程组。模拟并发场景,利用定时器设置,控制业务的执行逻辑,用控制器完成。
X1到X5用来模拟负载,统称谓Y1,也可说是模拟用户请求。
Y2用断言来验证结果,看结果对不对。
Z收集负载的结果,可在线程组内也可在线程组外。
X1
取样器(Sampler)用来模拟用户操作,发送请求,支持多种协议。
断言(Assertions),预设结果,用以与实际结果,看运行是否正确。
监听器(Listener),添加结果监听,可供再次分析,或展示结果。
测试计划是根节点,其下可以有多个Thread Group,起始可配setUp Thread Group和tearDown Group。在每个Group下可创建其它节点,模拟各类实际行为。辅之以参数配置,完成复杂的场景设计。
X2
Pre Processors 准备环境和参数,比如发送数据库请求就得先连接数据库。
Config Element 为模拟大量用户操作,往往要做参数化,这就交由配置元件完成。Jmeter还提供了函数,用来动态生成数据。总之就是为Sampler预备数据。
Post Processors 用来处理服务器的返回结果,
X3
Logic Controller 模拟业务逻辑
X4
Timer 控制请求的发送时间,比如模拟大量请求并发
X5
就是模拟大量用户,一个线程对应一个用户
其它
Test Fragment 其下可以放任何测试元件,但一般不会运行。用来备份元件,或是被模块控制器调用。
Non Test Elements
原理
setUp与tearDown分别为开始与结束,可以在当中做些初始化和收尾的工作,可以不用,会在Group之前执行,非并发。(Thread Group为并发执行)
中间的Thread Group为主体请求。
新建请求,Jmeter本身是基于协议层的,所以这里都是不同的请求协议
设置请求的各个参数,无他。
在测试计划中添加View Results Tree和Summar Report,监听请求。
点击运行,可以在Tree中查看结果。这里发起了3次请求,绿色即表明请求成功。
左侧可以选择请求结果的表示形式,右侧Request选项卡有请求的具体信息,Response Data则为响应数据。
可以选择正则测试器,对请求结果进行正则匹配,如<title>(.*)</title>。用正则就可以设置测试点,取变量,做关联等其它 操作。
这是对线程的设置。性能测试的思想就是看服务端如何响应请求,这里就是在设置线程数,运行区间,循环次数等。
逻辑控制器是为了模拟各类场景。新建一个控制器作为父节点,在其下创建request作为子节点,就可控制其行为。