圣泉山人 后端开发工程师

JMeter

2016-03-10

什么是JMeter?

JMeter 是 Apache 的开源项目,是使用 java 编写的一款压力测试工具

为什么使用JMeter?

常用的压力测试工具,比如 Apache 的 ab 工具,虽然使用简单,但是功能也相对较弱,而且命令行界面也不是很友好。而 JMeter 的功能则更加强大,具备如下优点:

  • 能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过JDBC)
  • 可以在压力测试的同时进行结果预判
  • 更友好的结果统计方式,比如图形、报表等方式
  • 测试脚本维护方便,保存脚本文件后可以复制复用

如何使用JMeter?

安装环境要求:

Java版本 :JMeter要求充分满足JVM1.3或更高。

操作系统 :JMeter可以在当前任何一个已经部署了Java的操作系统上运行。

安装JMeter

以 Windows 下的安装为例:

1、安装 JDK

2、为 JDK 配置环境变量,能在命令行运行 java 命令即可

3、下载并安装 JMeter

4、安装好后为 JMeter 配置环境变量

6、完成后运行 bin 目录下的 jmeter.bat 即可打开

启动后界面如下:

img

选项解释

  • 测试计划 : 描述要测试的内容和过程,是其他测试原件的容器,一个JMeter应用只能建立或者打开一个测试计划

  • 线程组 : 模拟一定请求数量的并发用户,可以理解为一个线程即是一个用户

  • 配置元件 :维护Sampler需要的配置信息,根据实际需要修改请求的内容。主要特点是可以把一些Sample的共同配置放在一个元素里面方便管理

  • 定时器 : 负责定义请求之间的延迟间隔

  • Sample : 表示客户端发送某种格式或者规范的请求到服务端,比如HTTP请求

  • 监听器 : 收集测试结果,设置显示结果的方式,比如图形结果、表格报告、统计到测试的TPS,响应时间等关键测试数据

  • 逻辑控制器 :类似一个HOOK,自定义发送请求的行为逻辑,与取样器Sampler结合来模拟复制的请求序列

  • 断言 : 用来判断响应的结果是否是逾期一样,可以确保功能正确的前提下执行压力测试

  • 前置处理器和后置处理器 : 在请求开始前前和完成后工作,一般用来修改请求的设置,和处理相应数据的设置

USAGE

比如服务端有如下脚本: localhost/test/test.php

$res = 0;
$n = $_REQUEST["num"];

if (!is_numeric($n)) {
	echo 'error param',PHP_EOL;
	exit;
}

$res = 0;
for ($i = 0; $i <= $n ; $i++) { 
	$res += $i;
}

echo $res;

1、建立测试计划

运行 JMeter 后,会默认建立一个测试计划,也只能建立或者运行一个测试计划,接下来开始填充内容

2、添加线程组

image

image

  • 线程数 : 要开启的线程数量即要模拟的用户数量
  • Ramp-Up Period(in seconds):在多少秒内完成指定线程数量的建立,比如设置为10秒,线程数量设置为20,则每隔 0.5秒 建立一个线程,如果设置为 0 ,表示立即建立所需线程,即并发
  • 循环数

3、添加取样器(Sample)

如图添加好 HTTP 请求,并配置相应路径及参数

image

image

4、添加监听器

添加常用监听器:图形结果、Summary report 、查看结果树

image

5、结果查看

点击运行后,通过添加的监听器查看结果即可

image

image

JMeter 结合 BadBoy 的使用

BadBoy 提供了屏幕录制和回放功能,以及丰富的图形结果分析功能,这里用它来录制 JMeter 脚本使用。

1、下载 BadBoy 并完成安装

img

2、录制 JMeter 脚本

  • 点击红色圆点按钮开始录制

  • 在地址栏输入要录制的站点url

  • 在右侧窗口中操作站点里面想要测试的功能

  • 点击黑色方框按钮终止录制

  • 点击 File -> Export to JMeter 导出脚本

3、使用脚本

JMeter 中导入脚本,并添加线程组以及监视器等后运行即可


上一篇 PHPDocumentor

下一篇 Exception

Comments

Content