一.jmeter工具组成部分:
1.资源生成器:用于生成测试过程中服务器,负载机的资源代码;
2.用户运行器:通常是一个脚本运行引擎,根据脚本的要求模拟指定用户行为,(lr中的controller)
3.报表生成器:根据测试中,实时的生成报表,提供可视化的数据显示方式。(lr中的analysis)
4.负载发生器:用于产生负载,通常以多线程或者多进程的方式模拟用户行为(lr中的load Generators)
二:TestPlan(测试计划):用来描述一个性能测试,包含与本次性能测试所有的相关的功能,也就是说本次性能测试的所有的内容是基于一个计划的(相当于lr中的一个测试场景)
1.线程用户:(Threads users):
setUp thread group:
一种特殊类型的ThreadGroup 的,可用于执行预测试的操作,这些线程的行为完全像一个正常的线程组,不同的是,这些类型的线程是在测试之前进行的;类似(lr的init())
tearDown thread group:
一种特殊类型的ThreadGroup 的,可用于执行测试后的操作,这些线程的行为完全像一个正常的线程组,不同的是,这些类型的线程是在测试之后进行的;类似(lr的end())
3)thread group(线程组)
这个就是我们通常添加运行的线程,可以看做一个虚拟的用户组,线程组中的每个线程都可以理解为一个虚拟用户,线程组中包含的线程数量在测试执行的过程中是不会发生改变的,类似于(lr的action())
三:测试片段(test Fragment)
测试片段是控制器上的一种特殊的线程组,他在测试树上与线程组处于同一层级,他与线程组有所不同的是,他不被执行,除非他是一个模块控制器,或者被控制器所引用时候,才会被执行:
3.1:线程组的8类可以执行的元件:
1.配置元件:(config Element)
配置元件用于:提供对静态数据的配置的支持,如:CSV Data Set config 可以将本地的数据文件形成数据池(Data pool)
2.定时器(Timer)
定时器,用于操作之间设置等待的时间,等待时间是性能测试中,常用的控制客户端QPS(服务器处理的请求数/S,)的手段,类似lr中的思考时间,
如上是jmeter 的定时器:这里不再列举;
3.:前置处理器:(Pro Processors)
用于在实际的请求发出去之前对即将发生的请求,进行特殊处理,例如:HTTP,URL重写修饰符则可以实现URL重写,当URL中有sessionid,一类的session信息时候,可以通过该处理器填充发出请求的实际sessionID;
4.后置处理器(post Processors)
用于对sampler 发出请求后得到的服务器响应进行处理,一般来提取响应中的特定的数据,(类似lr中的测试中的关联的概念)
5.断言(Assertions)
断言用于检测,测试中得到的相应的数据是否等于预期结果,断言一般用来设置检查点,用于保证性能测试过程中的数据是否和预期结果一致;
6.监听器:
用于对测试结果数据,进行处理和可视化展示的一系列的元件,例如:图形结果,查看结果树,聚合报告,都是我们经常用到的元件,注意:这里监听可不是用来监听系统资源的;
7.取样器:(sample)
取样器,是性能测试过程中,向服务器,发送请求,记录响应信息,记录响应时间的最小单元,jmeter 支持多种不同的sampleer,如:HTTP request sampler,FTP Request sampler ,TCP,JDBC,等等,每种不同的取样都可以根据不同的设置参数,向服务器,发出不同类型的请求;
8.逻辑控制器:
逻辑控制包括2种:
一类:用于控制testplan中的sampler 节点发送请求的逻辑顺序控制器,常用的有if控制器,switch controller,runtime controller,循环控制器,另一类是用来组织可控制sampler节点的,如:事务控制器,吞吐量控制器;