JMeter 最早是为了测试 Tomcat 的前身 JServ 的执行效率而诞生的。到目前为止,它的最新版本是2.1.1,它的测试能力也不再仅仅只局限于对于Web服务器的测试,而是涵盖了数据库、JMS、Web Service、LDAP等多种对象的测试能力。在最新的 2.1.1 中,它还提供了对于 JUNIT 的测试。
JMeter 的安装非常简单,从官方网站上下载,解压之后即可使用。运行命令在%JMETER_HOME%/bin 下,对于 Windows 用户来说,命令是 jmeter.bat。运行前请检查JMeter 的文档,查看是否具备相关的运行条件。对于最新版(即2.1.1),需要JDK的版本要求是JDK 1.4。
JMeter 的主要测试组件总结如下:
1. 测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。
2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。
3. 监听器负责收集测试结果,同时也被告知了结果显示的方式。
4. 逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
5. 断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。
6. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
7. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。
8. 定时器负责定义请求之间的延迟间隔。
JMeter的使用非常的容易,在 ONJava.com 上的文章 Using JMeter 提供了一个非常好的入门。
对于jmeter如何进行压力测试,在此篇文章中浅谈一下如何使用jmeter进行压力测试,若有不正确需要阅读者指正。
一、首先创建线程组,并设置线程组参数:
二、添加cookie管理器(若有登录限制的需要用到记录用户信息):
三、添加HTTP请求,为录制http连接使用:
1、如何参加参数化?
还有其他的参数化方式:函数助手(__random和__time表达式)
还有时间的函数表达式,使用方式跟random函数一样:
eg:
__time:获取时间戳、格式化时间
(1)、${__time(yyyy-MM-dd HH:mm:ss:SSS,time)} :格式化生成时间格式 2018-10-26 11:08:23:635
(2)、${__time(,)}:默认该公式精确到毫秒级别, 13位数 1527822855323
(3)、${__time(/1000,)}:该公式精确到秒级别, 10位数 1527822871
(4)、${__time(yyyy-MM-dd,)}:该公式格式化生成的时间为:2018-10-26
(5)、${__time(yyMMdd,)}:该公式格式化生成的时间为:181026
2、如何进行关联?
有人说cookie信息每天都会变,如果想跑脚本的时候,每次都要改cookie信息,那么我像个办法来解决一下:
关于关联可以使用正则表达式:
四、添加查看结果树:
查看结果树,是用来调式脚本来使用查看请求发送情况,一般真正压测的时候不添加,会影响压测结果的:
五、添加聚合报告
聚合报告用来查看压测情况,用写测试报告需要截图:
有关每个参数具体的解释:
- Label:每个Jmeter的element(例如HTTP resquest)都是一个Name属性,这里显示的就是Name属性的值。
- Samples:表示这次测试中一共发出了多少请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100。
- Average:平均响应时间--默认情况下是单个Resquest的平均响应时间,当使用了Transaction Controller时,也可以以Transaction为单位显示平均响应时间。
- Median:中位数,也就是50%用户的响应时间。
- 90%Line:90%用户的响应时间。
- Min:最小响应时间。
- Max:最大响应时间。
- Erro%:本次测试中出现的请求的数量/请求的总数。
- Throughput:吞吐量(tps)--默认情况下标识每秒完成的请求数(Request per Second),当使用了Transaction Controller时,也可以表示类似LoadRunner的Transaction per second数。
- KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Troughput/sec.
eg:
QPS:Queries Per Second,意思是“每秒查询率”,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器(比如是读写分离的架构,就是读的服务器)在规定时间内所处理流量多少的衡量标准。
TPS:TransactionsPerSecond,意思是每秒事务数,一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
六、添加断言:
断言类似Loadrunner的检查点,检查请求响应的结果是否如用户所期盼。
jmeter还有很多功能和使用过程出现的问题都适合咱们在测试工作中使用,咱们稍后在以后的博客文章中陆续与大家分享。