线程组(Thread Group)
添加线程组
测试里每个任务都需要线程处理,所有后来的任务必须在线程组下面创建。通过点击菜单栏的 编辑 -> 添加 -> Threads(Users) -> 线程组,来建立线程组
线程组参数
线程数(Number of Threads(users)):模拟用户数
创建线程数时间(Ramp up Period):表示在这段时间内创建完所有的线程。例如有8个线程,Ramp Up=200秒,线程的启动时间间隔为 200/8=25秒,这样的好处是,一开始不会使服务器有太大的负载
循环次数(Loop Count):循环创建的次数,默认1次
逻辑控制器
定义
自定义JMeter发送请求的行为逻辑,与Sampler结合使用模拟复杂的请求序列
取样器(Sampler)
添加取样器
在新创建的线程组上右键-添加-取样器-选择需要的取样器
配置元件
定义
维护Sampler需要的配置信息,根据实际需要修改请求的内容
前置处理器和后置处理器
在请求之前或之后修改数据。前置处理器常用来修改请求的数据,后置处理器常用来处理响应的数据。
定时器:负责定义请求之间的延迟间隔
断言
定义
用来判断请求响应的结果是否如用户所期望的。可以隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效测试非常有用
监听器
定义
对取样器的请求结果进行显示,并统计一些数据(如吞吐量、KB/S等),负责收集测试结果,同时设定结果显示的方式
测试步骤
- 建立测试计划
测试计划描述执行测试过程中JMeter的执行过程和步骤,完整的测试计划包括一个或者多个线程组(Thread Groups)、逻辑控制器(Logic Controller)、实例产生控制器(Sample Generating Controller)、监听器(Listener)、定时器(Timer)、断言(Assertions)等
模拟50个用户请求百度首页
- 添加线程组
右击测试计划,在弹出的快捷菜单中依次选择 添加 -> Threads(Users) -> 线程组,按照测试计划依次填入以下参数,线程数为50,Ramp Up=0,循环次数=4。
- 添加取样器
右击线程组,选择 添加 -> Sampler -> HTTP请求。在 Basic 选项卡处的Web服务器处,服务器名称设为 www.baidu.com(域名和IP地址),端口设为 443,协议设为 https,路径设为 /,方法设为GET,如果为POST,需要在Parameters处,填入POST的参数名称和值。
- 添加监听器
右击线程组,选择 添加 -> 监听器 -> 图形结果,然后再 添加 -> 监听器 -> Summary Report,再 添加 -> 监听器 -> 察看结果树
- 启动
点击主菜单里的启动按钮即可
- 查看结果
只需要查看监听器就可以看到测试结果。图形结果和Summary Report分别以图表和表格的形式,指出了样本数、吞吐率、偏离、中值等重要指标。
注意:压力测试结果的可靠性很大程度上依赖测试软件自身的性能。JMeter有Java开发,受限于JVM,自身内存消耗比较大,同时提供的压力不是很大。为了保证测试的准确性,需要把测试环境和被测试环境分开。如果需要更大的压力,应考虑使用CurlLoader