jmeter简单使用教程

  • 一、jmeter 下载安装
  • 二、Jmeter运行
  • 三、jmeter简单压测实操
  • 四、并发测试思路及常见场景
  • 常见压测思路
  • 4.1 使用CSV Data Set Config 来参数化
  • 4.2 添加http request
  • 4.3 后置处理器——正则表达式提取器

一、jmeter 下载安装

进入官网下载:http://jmeter.apache.org

JMETER压测sdk的java实现 jmeter压测教程_JMETER压测sdk的java实现


建议下载4.0以上的版本,对应jdk1.8。然后就进行解压。

二、Jmeter运行

进入解压文件的bin目录下,点击jmeter.bat开始运行

JMETER压测sdk的java实现 jmeter压测教程_正则表达式_02

进入此界面说明安装成功,且环境配置正确

JMETER压测sdk的java实现 jmeter压测教程_jmeter_03


注意,jmeter初始默认是英文界面,可以通过修改配置参数来实现每次启动都进入中文界面

JMETER压测sdk的java实现 jmeter压测教程_正则表达式_04


将jmeter.properties文件中,language=en改为language=zh_CN,保存参数配置后,重启jmeter即可生效。

三、jmeter简单压测实操

  1. 新建一个线程组

JMETER压测sdk的java实现 jmeter压测教程_链路_05

  1. 设置线程数

5个线程,2秒内同时启动,循环1次

  1. 设置http请求

JMETER压测sdk的java实现 jmeter压测教程_响应时间_06


JMETER压测sdk的java实现 jmeter压测教程_正则表达式_07


在http请求中,设置具体的请求参数,具体内容如上图。

  1. 为线程添加监听器。

JMETER压测sdk的java实现 jmeter压测教程_链路_08


常规设置2项:察看结果树 和 聚合报告。

JMETER压测sdk的java实现 jmeter压测教程_链路_09


添加好线程后,就可以跑一次脚本,查看是否能够成功运行,在察看结果树中,绿色的请求表示请求成功。

JMETER压测sdk的java实现 jmeter压测教程_正则表达式_10

  1. 基本知识:
  • Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”。今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅。
    如果大家都是做Web应用的性能测试,例如只有一个登录的请求,那么在Aggregate Report中,会显示一行数据,共有10个字段,含义分别如下。
  • Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
    #Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
  • Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
  • Median:中位数,也就是 50% 用户的响应时间
  • 90% Line:90% 用户的响应时间
  • Note:关于 50% 和 90% 并发用户数的含义,请参考下文
  • Min:最小响应时间
  • Max:最大响应时间
  • Error%:本次测试中出现错误的请求的数量/请求的总数
  • Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
  • KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
  • 吞吐量:是指在没有帧丢失的情况下,设备能够接受的最大速率。
  • 存储的最小单位是字节Byte,对于存储单位,有以下几个单位,GB、MB和KB,那么这三者之间的换算关系是:1GB=1024MB,1MB=1024KB,1KB=1024Bytes。
    Bit :“位”,称为bit,也就是比特,有的时候也称为位。一个字节为8位二进制表示。 Byte:“字节”,一个字节就是8比特。
  • Mbps (million bits per second 兆位/秒)
    代表每秒传输1,000,000比特。该缩写用来描述数据传输速度。例如:4Mbps=每秒钟传输4M比特。
    数据传输速率的单位,字母b(bit)是比特和字母 B (Byte)是字节。
  • 吞吐量与带宽的区分:吞吐量和带宽是很容易搞混的一个词,两者的单位都是Mbps.先让我们来看两者对应的英语,吞吐量:throughput ; 带宽: Max net bitrate 。当我们讨论通信链路的带宽时,一般是指链路上每秒所能传送的比特数。我们可以说以太网的带宽是10Mbps。但是,我们需要区分链路上的可用带宽(带宽)与实际链路中每秒所能传送的比特数(吞吐量)。我们倾向于用“吞吐量”一次来表示一个系统的测试性能。这样,因为实现受各种低效率因素的影响,所以由一段带宽为10Mbps的链路连接的一对节点可能只达到2Mbps的吞吐量。这样就意味着,一个主机上的应用能够以2Mbps的速度向另外的一个主机发送数据。
  • 方差和标准差都是用来描述一组数据的波动性的(集中还是分散),标准差的平方就是方差。方差越大,数据的波动越大。

四、并发测试思路及常见场景

常见压测思路

  1. 写脚本 或者录制脚本
  2. 使用用户自定义参数
  3. 场景设计
  4. 使用控制器,来控制 模拟多少用户。
  5. 使用监听器, 查看测试结果

4.1 使用CSV Data Set Config 来参数化

在一台电脑用Jmeter模拟多个用户,同时去使用并发时,可能会涉及到多个账号密码(或者其他类似的不同测试数据)

  • 新建测试数据:data.csv 输入些数据,用逗号分隔。

JMETER压测sdk的java实现 jmeter压测教程_响应时间_11

  • 启动Jmeter, 先添加一个线程, 然后添加一个CSV Data Set Config (Add -> Config Element -> CSV Data Set Config)
  • 设置csv数据文件匹配规则

4.2 添加http request

设置请求body,与csv文件参数对应,使用${}来匹配参数

JMETER压测sdk的java实现 jmeter压测教程_正则表达式_12

4.3 后置处理器——正则表达式提取器

JMETER压测sdk的java实现 jmeter压测教程_响应时间_13


在http-request中添加后置处理器->正则表达式提取器

一般可以用来提取接口的返回值,例如登录成功后,接下来调用的接口,需要用到token值。

正则表达式在Jmeter的用处非常广,包括常用的正则表达式提取器,还有其一些函数或者配置元件之类的。

JMETER压测sdk的java实现 jmeter压测教程_正则表达式_14


举个例子:

一般用法:元字符+限定符

匹配手机号:13800138001

写法如:\d{11},\d+,[0-9]{11},.{11} 等

可以搜索 在线正则表达式 网站查看匹配结果

JMETER压测sdk的java实现 jmeter压测教程_响应时间_15


实际运用,如图:

JMETER压测sdk的java实现 jmeter压测教程_JMETER压测sdk的java实现_16

本文章初步介绍了jmeter怎么使用,该工具非常强大,本文尚未提到,实际工作中遇到的场景建议百度or去jmeter官网查看:https://jmeter.apache.org/usermanual/component_reference.html