基本构成
1)负载发生器:产生负载,多线程模拟用户行为
2)用户运行期:脚本运行引擎,用户运行器附加在线程上,根据指定脚本模拟指定的用户行为
3)资源发生器:生成测试过程中服务器、负载机的资源数据
4)报告生成器:根据测试中获得的数据生成报表,提供可视化的数据显示方式
主要概念
1)测试计划(Test Plan)
测试计划是根节点,包含本次测试所有相关功能
2)线程组(Threds(Ures))
用来模拟用户负载的组件,主要用来设置运行的线程数(就是模拟多少用户,一线程=一用户)
3)取样器(Sampler)
取样器必须添加在线程组下面。
用来模拟用户操作,向服务器(被测试系统)发出Http请求或java请求等等。接口测试就是用HTTP请求来实现的。
4)逻辑控制器(Logic Controller)
控制取样器的执行次数或执行顺序等
5)前置处理器(Pre Processors)
一般放在取样器之前。在取样器执行发出请求之前,做的一些环境或参数的准备工作。
比如有一个JDBC请求的取样器,要对数据库进行一些操作。需要在前置处理器中,先进行数据库的连接
6)后置处理器(Post Processors)
一般放在取样器之后。用来处理服务器返回的结果。比如接口测试中,上一个请求返回的参数,会当做下一个请求的参数。这时就需要用后置处理器去获取这个值。
7)断言(Assertions)
检查测试得到的响应和预期结果是否一致。判断测试是否通过
8)定时器(Time)
设置取样器的执行时间,可以让请求在一个时间点同时发出等场景
9)测试片段(test fragment)
和线程组同样级别的组件,可以在该组件下放任何测试元件。但一般不会被运行。
测试片段下的元件可以被模块控制器调用。利用它来模块化请求(类似封装)
10)配置元件(Config Element)
通过这个组件可以实现参数化。比如从csv文件中读取数据。为取样器提供数据支持。
11)监听器(Listener)
用来收集测试结果,对测试结果进行处理和可视化的组件
一个测试脚本中必定会有测试计划(打开jmeter默认就会有的),至少一个线程组、取样器、监听器
JMeter负载是通过线程组来驱动的。所以计划中至少要有一个线程组
测试的目的是为了模拟用户的请求,没有取样器脚本没有任何意义
需要使用监听器来知道请求结果。从结果中对问题进行分析。