公司项目马上就要涉及性能测试了,所以最近在学习JMeter相关的内容。在此整理一些学习笔记,方便日后回顾。
一.初识JMeter
- JMeter简介
以下引自百科:
JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
JMeter的架构跟loadrunner原理一样,都是通过中间代理,监控&收集并发客户端发现的指令,把他们生成脚本,再发送到应用服务器,再监控服务器反馈的结果的一个过程。但最重要是开源!开源!
-
JMeter与LoadRunner
很久之前曾接触过LoadRunner,用它做过简单的Web性能测试,当时就领略到了LoadRunner的强大和可怕。LR本身提供了丰富的功能、易用的界面、强大的数据分析处理,再结合QTP、ALM,绝对是性能测试的最佳工具。可惜LR昂贵的licence让大多数公司望而却步....这大概是JMeter为什么如此火的直接原因吧!
二、常用测试元件
1.测试计划
一个测试计划描述了一系列需要执行的步骤,相当于一条完整的测试场景。其中包含线程组、逻辑控制器、监听器、定时器、断言等。
2.线程组
虚拟用户组,组内每个线程代表一个用户,每个用户使用相同的脚本。线程组是测试计划的起点,所有逻辑控制器、取样器都必须在线程组之下。
常用配置参数:线程数、线程启动周期、执行脚本的循环的次数
3.配置元件
用来设置测试脚本公用的信息,配合取样器工作。例:添加或修改请求、添加Cookia管理器。
4.控制器
JMeter有两种控制器,分别是:取样器(Sampler)、逻辑控制器
- 取样器:
脚本测试的基础单元,用于发送请求,包括HTTP、FTP、JDBC等。可以给取样器添加元件进一步定制请求。 - 逻辑控制器:
用于控制脚本的执行顺序与逻辑,比如loop循环、if逻辑判断等
5.监听器
用于对测试结果数据进行处理和可视化展示的元件。比如实时展示返回的结果信息,将测试数据导出到文件。所有监听器都保存相同的数据,唯一区别只是数据展示形式。
6.定时器
保存脚本和时间相关的信息。默认发送请求间是没有间歇的,定时器可以添加等待时间。一方面减少服务器单位时间内的请求数量,另外也能模拟用户思考时间,使数据更趋于真实。
7.断言
即检查点,可以检查从服务器获取的响应的正确性。断言支持正则表达式。断言会影响作用域内的所有采样器。
8.前置处理器
在取样器发出请求前执行一些预操作,类似Setup函数。通常用于修改取样器的某些设置。
9.后置处理器
在取样器发出请求后执行一些预操作,类似Teardown函数。通常用于处理服务器的响应数据。
三.JMeter执行顺序规则
1.配置元件
2.前置处理器
3.定时器
4.取样器
5.后置处理器
6.断言
7.监听器
- 脚本执行顺序 既遵循测试树中的分层结构规则,又遵循以上顺序规则。
参考:《零成本实现Web性能测试:基于Apache JMeter》---温素剑