WEB服务压力测试-JMeter

前言

简答的接口 固定的参数可以用之前的AB进行压测,但是复杂点的或者文件上传就要用一些相对功能更强的测试软件,这里推荐用免费的JMeter

Apache JMeter

Apache JMeter - Download Apache JMeter

下载地址:https://archive.apache.org/dist/jmeter/binaries/

解压后, 运行 bin/jmeter.bat

Jmeter 是支持中文的, 启动Jmeter 后,

点击 Options -> Choose Language 来选择语言

推荐下载3.3版本

下载地址:https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-3.3.zip

4.x的主题改成黑色了UI不好看

5.x的日志打印看不清

首先先弄清楚它的层次结构

  • 项目=>线程组=>请求
  • 监听器

也就是说项目下建立线程组,线程组下添加请求,而监听器可以添加上面三个中的任何一个下面

线程组配置

image-20210819145052324

其中

  • 线程数 同时访问的用户数(最大并发数)
  • Ramp-up Period(in seconds) 创建线程的总用时
  • 循环次数

注意

假如线程数为1000 Ramp-up Period为10 实际的并发数是一直递增的,所以要想真正达到想要的并发,一定要提升循环次数。

请求

image-20210819150828738

如果请求是文件上传注意MIME配置

image-20210819151035204

MIME类型对大小写不敏感,但是传统写法都是小写。

1
2
3
4
5
6
7
8
9
10
11
12
13
text/plain
text/html
image/jpeg
image/png
audio/mpeg
audio/ogg
audio/*
video/mp4
application/*
application/json
application/javascript
application/ecmascript
application/octet-stream

响应结果获取

image-20210819155137529

获取响应中的值

image-20210819155347283

后面请求中就可以用${msg}获取

image-20210819160153345

随机变量

添加随机变量

image-20210819163300882

变量配置

image-20210819163201732

注意

  • Variable Name - 用于控制在其它元素中引用该值,形式:${variable_name}

  • Output Format -可选格式,比如000,格式化为001,002,Minimum Value,Maximum Value都设置为1,Number format设置为000,那么格式化后,第一个参数值为001,第二个为002,……,以此类推

    假设format设置为user_000,那么格式化后,第一个参数值为user_001,第二个参数值为user_002,…,以此类推。默认格式为Long.toString()

  • Minimum Value 生成的最小随机数

  • Maximum Value 生成的最大随机数

  • Seed for Random function - 供随机数生成器使用的seed.如果为空,则使用默认的Random构造器。(建议不设置

  • Per Thread(User)? - 如果设置为False,那么所有线程共享同一个随机数生成器,如果设置为True,那么每个线程独享各自的随机数生成器

监听器

添加监听器

image-20210819151344477

上面有很多 其中常用的有

查看结果数

能查看具体请求和响应

image-20210819152119737

用表格查看结果

image-20210819152022901

聚合报告

image-20210819152206345

图形结果

image-20210819152552907