在上篇文章中,我们详细介绍了 Taurus 的常规和 docker 安装,这篇我们一起来看下如何入门使用 Taurus 结合 JMeter 做压测。
Taurus 能够支持现有 JMeter(或 Grinder 或 Gatling 或 Selenium)测试引擎的能力, 同时也能够支持直接解析原生脚本,如 JMeter JMX文件。其默认执行引擎是 JMeter,因此,如果已经使用 JMeter创建了 JMX 文件,那么使用 Taurus 可以很容易地运行,只需使用 bzt 命令以及 JMX 路径即可。
我在这里简单使用示例脚本: build-web-test-plan.jmx
执行命令:
bzt example.jmxbzt build-web-test-plan.jmx -o modules.jmeter.version=5.2.1```
将能够看到包含所有 Taurus 报告的全屏仪表板。该仪表板具有 ASCII 图,可显示有关测试的关键统计数据和各种指标。
测试后摘要报告如下所示:
注意:这里我使用可以使用 -o 参数从命令行覆盖配置选项,因为默认配置的 JMeter 版本为 5.1 会报 404 无法下载的错误,因为镜像网站已经不存在了。
报错信息如下:
镜像地址:https://mirrors.tuna.tsinghua.edu.cn/apache/jmeter/binaries/
上面我们演示了直接运行 JMX 文件,但对于 YAML,将 JMX 文件 传入 Taurus 也是一个相当简单的过程:
编写 exist_jmx_conifg.yml
:
settings:
env:
BASE_DIR: /home/taurus/taurus_container_scripts # 脚本目录
artifacts-dir: /home/taurus/taurus_container_artifacts/simple1/%Y-%m-%d_%H-%M # path where to save artifacts, default is %Y-%m-%d_%H-%M-%S.%f
execution:
- scenario: simple1 # 场景名称
scenarios:
simple1:
script: '${BASE_DIR}/build-web-test-plan.jmx'# 脚本
modules:
jmeter:
download-link: 'https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-{version}.zip'# 下载地址
version: 5.2.1# 版本号
reporting:
- module: final-stats # 摘要报告
- module: console # 控制台
如果你不想使用 JMeter 创建脚本,还可以使用 Taurus 的简单配置语法将测试场景使用 YAML 或 JSON 来描述 JMeter 脚本,这就是我们想要的 test as code。
例如,一个简单的测试,其中有 10 个并发用户,启动时间为 1 分钟,持续时间为 2.5 分钟,并使用 HTTP GET 请求访问 example.com
网站,看起来很简单:
编写 example.yml
脚本:
settings:
env:
BASE_DIR: /home/taurus/taurus_container_scripts # 脚本目录
artifacts-dir: /home/taurus/taurus_container_artifacts/simple1/%Y-%m-%d_%H-%M # path where to save artifacts, default is %Y-%m-%d_%H-%M-%S.%f
scenarios:
my_scenario:
requests:
- label: Home
url: / #路径
method: GET #请求方式
execution:
- concurrency: 10#并发线程数
ramp-up: 1m# 启动时间
hold-for: 2m30s# 持续时间
scenario: # 测试场景
default-address: http://www.example.com/ # 请求地址
requests:
- include-scenario: my_scenario # 场景名称
reporting:
- module: final-stats # 摘要报告
- module: console # 控制台
modules:
jmeter:
download-link: 'https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-{version}.zip'# 下载地址
version: 5.2.1# 版本号
bzt example.yml
按下 Enter 键后,Taurus 引擎将开始执行测试。
这是 Taurus 测试执行的显示方式:
测试后摘要报告如下所示:
生成的过程文件如下:
[root@localhost 2019-12-28_12-15]# ll
total 3352
-rw-r--r--. 1 root root 23716Dec2812:18 bzt.log
-rw-r--r--. 1 root root 6572Dec2812:18 effective.json
-rw-r--r--. 1 root root 5336Dec2812:18 effective.yml
-rw-r--r--. 1 root root 83Dec2812:18 error.jtl
-rw-r--r--. 1 root root 877Dec2812:15 example.yml
-rw-r--r--. 1 root root 436Dec2812:15 jmeter-bzt.properties
-rw-r--r--. 1 root root 0Dec2812:15 jmeter.err
-rw-r--r--. 1 root root 2858758Dec2812:18 jmeter.log
-rw-r--r--. 1 root root 365Dec2812:18 jmeter.out
-rw-r--r--. 1 root root 484169Dec2812:18 kpi.jtl
-rw-r--r--. 1 root root 815Dec2812:15 merged.json
-rw-r--r--. 1 root root 608Dec2812:15 merged.yml
-rw-r--r--. 1 root root 7810Dec2812:15 modified_requests.jmx
-rw-r--r--. 1 root root 5704Dec2812:15 requests.jmx
-rw-r--r--. 1 root root 23Dec2812:15 system.properties
文件说明:
effective.json
相同,但采用 YAML 格式。Taurus 不会在 YAML 和 JSON 之间进行区分,并且能够使用任何格式,因此任何一种都很好;requests.jmx
相同,并且通过 YAML 由 Taurus 驱动的更改;JMeter.jmx
格式;如前所述,就 JMeter 而言,Taurus 提供以下报告:
因此, kpi.jtl
和 errors.jtl
用于结果分析,而其他用于调试目的。
注意:
内网环境下,可以将最新的 JMeter 版本(带有最新的插件)下载到
〜/.bzt/jmeter-taurus
文件夹(如果使用自定义插件,则还有一个选项可以指定现有的 JMeter 位置。
Taurus 的全部思想-即提供一种统一的简化方式来配置和运行自动化测试,并以最有效的形式表示结果。
整体上大概有下面几个步骤:
example.yml
准备 JMeter.jmx
脚本;JMeterPlugins
提供的JMeter 监听器可以理解的格式。示例脚本:
https://github.com/7DGroup/JMeter-examples/tree/master/taurus