性能工具之Taurus使用(入門篇)

前言

在上篇文章中,我們詳細介紹了 Taurus 的常規和 docker 安裝,這篇我們一起來看下如何入門使用 Taurus 結合 JMeter做壓測。

性能工具之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       # 控制檯

使用 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.jtlerrors.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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章