Apache JMeter是一款开源性能测试工具,全部功能使用Java编写,可用于进行性能测试。JMeter最初被设计用于Web应用测试,之后被扩展至多个测试领域。

Apache jmeter 可以用于对静态资源的和动态资源(包括WebServices(SOAP/REST)、动态Web语言(PHP、Java、ASP.NET、文件、及其它内容)、Java对象、数据库及数据查询、FTP服务器等等)进行性能测试。它可以用于对服务器、集群,网络 或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。

本篇文章主要介绍一下JMeter的安装及基本使用方法。

1.安装

JMeter的官方网址为http://jmeter.apache.org/

下载地址为http://jmeter.apache.org/download_jmeter.cgi

JMeter目前的最新版本为2.13,对应的Java版本需要至少为Java6。下载完成后,直接解压缩,在jmeter的bin目录下,找到jmeter.bat文件,双击运行

主界面如图所示

2.基础知识

程序运行以后,我们可以看到,JMeter是以测试计划的形式组织测试的。在测试计划上点击右键,选择“添加”,我们可以看到,JMeter主要包含了以下内容的组件:

线程组(Threads) - 代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,所有请求均需要被线程组包含。

测试片段(Test Fragment) - 测试片段是一种特殊类型的控制器,它在测试计划中与线程组同级。测试片段与线程组的区别在于:在一个测试计划中,线程组自身是会被执行的,而测试片段自身并不会被执行。只有当测试片段被一个模块控制器引用,或被包含在一个控制器中时,才会被执行。简单的说,我们可以将线程组理解为入口函数,将测试片段理解为私有函数,测试片段只有在被调用时,才会被执行。

配置元件 – 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。

定时器 -定义请求之间的延迟间隔。

前置处理器、后置处理器 - 负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。

断言 - 用来判断请求响应的结果是否如用户所期望的。它可以用来检查测试的有效性,隔离问题域,在确保功能正确的前提下执行压力测试。

监听器 - 负责收集测试结果,同时以多种方式进行显示。

我们先添加一个线程组,右键进行查看,线程组下包含了另外两个组件:

逻辑控制器 - 可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

采样器(Sampler) - 用于发送各种请求,并以该请求为基础,进行性能测试。

3.简单示例

下面我们以单一网址的并发访问为例,使用JMeter进行一个简单的性能测试。

1)建立线程组

在建立好测试计划后,首先我们建立一个线程组,并进行如下设置

其中,

线程数-表示JMeter将发起多少个线程进行目标访问

Ramp-Up Period – 表示JMeter将在多长时间(以秒为单位)内将这些线程发起完毕

循环次数 – 表示JMeter将对当前的线程组进行多少次循环访问

2)建立采样器(Sampler)

向线程组中添加一个Http请求的采样器

配置如下(JMeter的大量并发访问会被某些网站认定为恶意攻击而进行屏蔽,这里建议选用自己的网站或在localhost上进行操作)

3)添加监听器

这里我们添加一个“图形结果”和一个“用表格查看结果”。

4)运行测试,查看结果

运行测试,查看图形结果,我们可以看到所有访问的数据量、访问时间平均值、中值、访问的偏离量(访问时间与中值时间的差)、吞吐量。

查看表格结果,我们可以看到我们所发起的线程、开始时间、采样时间、状态(是否访问成功)、访问传输的数据量、访问延时、以及访问时间等内容。

5)结果分析

通过监听器获得的结果,可以进行导出,之后我们再对这些结果做进一步的数据分析,即可估算衡量我们网站的性能情况。

下一篇文章,将对如何使用变量对被访问url进行配置做介绍。