前言
在上篇文章中,我們詳細介紹了 Taurus 的常規和 docker 安裝,這篇我們一起來看下如何入門使用 Taurus 結合 JMeter做壓測。
運行現有 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 # 控制檯
使用 YAML 創建 JMeter 腳本
如果你不想使用 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 23716 Dec 28 12:18 bzt.log
-rw-r--r--. 1 root root 6572 Dec 28 12:18 effective.json
-rw-r--r--. 1 root root 5336 Dec 28 12:18 effective.yml
-rw-r--r--. 1 root root 83 Dec 28 12:18 error.jtl
-rw-r--r--. 1 root root 877 Dec 28 12:15 example.yml
-rw-r--r--. 1 root root 436 Dec 28 12:15 jmeter-bzt.properties
-rw-r--r--. 1 root root 0 Dec 28 12:15 jmeter.err
-rw-r--r--. 1 root root 2858758 Dec 28 12:18 jmeter.log
-rw-r--r--. 1 root root 365 Dec 28 12:18 jmeter.out
-rw-r--r--. 1 root root 484169 Dec 28 12:18 kpi.jtl
-rw-r--r--. 1 root root 815 Dec 28 12:15 merged.json
-rw-r--r--. 1 root root 608 Dec 28 12:15 merged.yml
-rw-r--r--. 1 root root 7810 Dec 28 12:15 modified_requests.jmx
-rw-r--r--. 1 root root 5704 Dec 28 12:15 requests.jmx
-rw-r--r--. 1 root root 23 Dec 28 12:15 system.properties
文件說明:
- bzt.log :Taurus 日誌。包含 Taurus 的全部輸出,對於故障排除非常有用;
- effective.json:最終的 Taurus JSON 格式的配置文件。它包含合併的輸入文件,配置默認值,任何覆蓋的屬性等;
- effective.yml:與
effective.json
相同,但採用 YAML 格式。Taurus 不會在 YAML 和 JSON 之間進行區分,並且能夠使用任何格式,因此任何一種都很好; - errors.jtl:啓用了所有診斷字段的 XML 格式的 JMete 結果文件。能夠在“ 查看結果樹”監聽器中查看完整的請求和響應詳細信息;
- example.yml:通過命令行提供給 Taurus 的 YAML 配置文件;
- jmeter-bzt.properties:任何 JMeter 屬性覆蓋;
- jmeter.log:一個非常默認的 JMeter 日誌文件;
- kpi.jtl:主要結果文件,其名稱代表關鍵績效指標,其中包括:
- 採樣器時間戳,標籤和持續時間
- 響應消息和代碼
- 採樣器是否成功
- 連接和延遲指標
- 活動線程號
- merged.json:Taurus 配置文件。它包含合併的,用戶提供的配置文件(YAML或JSON),但未應用默認值或替代值;
- merged.yml:與上述相同,但採用 YAML 格式;
- modified_requests:與
requests.jmx
相同,並且通過 YAML 由 Taurus 驅動的更改; - requests.jmx:將 YAML 配置文件轉換爲
JMeter.jmx
格式; - system.properties:有效的 JVM 系統屬性。
如前所述,就 JMeter 而言,Taurus提供以下報告:
- 運行時的摘要控制檯
- 測試結束時的統計數據;
- 2個.jtl 結果文件:
- CSV-適用於成功的採樣器;
- XML-包含請求/響應的完整詳細信息的失敗採樣器;
因此,kpi.jtl
和 errors.jtl
用於結果分析,而其他用於調試目的。
注意:
內網環境下,可以將最新的 JMeter 版本(帶有最新的插件)下載到
〜/ .bzt / jmeter-taurus文件夾
(如果使用自定義插件,則還有一個選項可以指定現有的 JMeter 位置。
小結
Taurus 的全部思想–提供一種統一的簡化方式來配置和運行自動化測試,並以最有效的形式表示結果。整體上大概有下面幾個步驟:
- 根據提供的
example.yml
準備JMeter.jmx
腳本; - 開始實際的 JMeter 壓測;
- 在文本控制檯中顯示實時統計信息和基本的 ASCII 圖;
- 測試完成後將摘要打印到控制檯;
- 將 JMeter 測試結果保存爲開箱即用,且由
JMeter Plugins
提供的 JMeter 監聽器可以理解的格式。
示例腳本:
https://github.com/zuozewei/PerformanceTest-Examples/tree/master/taurus