Jmeter (38) - 入門から上級レベルまで - コマンドラインからの JMeter 実行の詳細な説明 (詳細チュートリアル)

1 はじめに

  前回の記事でテスト レポートの生成方法を紹介しましたが、注意深い友人やクラスメートは、Hong Ge が Jmeter を起動して gui ページでテスト レポートを生成するのではなく、設定して保存した後にコマンド ラインを使用してテスト レポートを生成していることがわかります。 GUI ページにあります。テスト レポートです。この記事では、ホン兄弟が、GUI ではなくコマンドラインが使用される理由と、起動時のいくつかのパラメーターの意味を詳しく紹介します。

2. コマンドラインからスクリプトを実行する必要があるのはなぜですか?

  この記事では、コマンド ラインから JMeter を実行する方法を紹介します。まず、コマンド ラインからスクリプトを実行する必要がある理由について説明します。毎日のテスト中に、多数の同時実行が発生すると、jmeterGUI インターフェイスがダウンし、長時間スタックしています。この場合、コマンド ラインを使用してスクリプトを実行する必要があります (非 GUI はモードなしとも呼ばれます)。非 GUI モード、つまりコマンド ライン モードを使用して JMeter テスト スクリプトを実行すると、次のことが可能になります。必要なシステム リソースを大幅に削減します。ポイントは主に以下の3つです。

1) グラフィカル インターフェイスは CPU やメモリなどのリソースをより多く消費するため、印刷機がボトルネックに達しやすくなり、テスト結果に影響を与える可能性があります。

2) グラフィカル インターフェイスは大規模な負荷テストやパフォーマンス テストをサポートしていないため、同時実行数が多いと jmeter がクラッシュします。

3) コマンド ライン テストは継続的インテグレーションをサポートします コマンド ライン メソッドでは、Jenkins にスクリプトを設定して継続的インテグレーションを実装し、自動テストを作成できます。たとえば、Jenkins などの CI ツールに配置します。

3. 具体的な手順

これは主に、スクリプトのコーディング方法を知らない子供や友人を対象としており、まずグラフィカル インターフェイスでスクリプトを正常にデバッグし、次に非 GUI モード (ノー モードとも呼ばれます) でスクリプトを実行できます。

1. jmeter.bat をダブルクリックして、JMeter グラフィカル インターフェイスを開きます。

2. デフォルトのテスト計画でスレッド グループを作成します。

3. サンプラーをスレッド グループに追加し、HTTP リクエストを選択します。

4. スレッド グループの上にビュー結果ツリーを追加します。

5. [実行] をクリックします。保存するかどうかを尋ねるポップアップ ダイアログ ボックスが表示されます。[はい] をクリックして、スクリプトをデスクトップに保存します (Test Plant And Report.jmx)。

6. [結果の表示] ツリーの応答コードが 200 であるかどうかを確認します。

7. テストに合格した場合は、テスト スクリプトに問題がないことを意味するため、ここでは View Results Tree を削除することにします。

8. 現在の JMeter ダイアログ ボックスを閉じます。

9. cmd を開き、cd コマンドを使用して JMeter インストール パスに切り替えます。

例: cd C:\apache-jmeter-3.2\bin

10. コマンドを入力してテストの実行を開始します。

自動テストを学びたい場合は、一連のビデオをお勧めします。このビデオは、Bilibili によって再生されるネットワーク全体でナンバー 1 の自動テスト チュートリアルであると言えます。同時にオンラインに参加している人の数は 1,000 人に達しました、また、収集してさまざまなチャネルで伝達できるメモもあります。マスター技術コミュニケーション: 798478386   

【更新】Bilibili が教える Python インターフェース自動テストの最も詳細な実践チュートリアル大全(実践版最新版)_bilibili_bilibili 【更新】Bilibili が教える Python インターフェース自動テストの最も詳細な実践チュートリアル大全(実践版)最新版)には、1. インターフェース自動化のためにインターフェース自動化を行うべき理由、2. インターフェース自動化の要望の全体像、3. インターフェース自動化のためのインターフェース実践など、合計 200 本のビデオが含まれています。さらにエキサイティングなビデオはこちらUPマスターよりUPアカウントをフォローしてください。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337

 上の画像の赤いボックス内の内容の説明: 

summary =  60 in 00:00:05:在5秒内产生的总请求数是60个,其中的时间段是从脚本运行开始计算到当前时间为止,一般在脚本运行过程中主要关注 “summary=” 信息即可

11.8/s:系统每秒处理的请求数,相当于TPS

Avg:   83:平均响应时间

Min:   43:最小响应时间

Max:  248:最大响应时间

Err:     0 (0.00%):错误数/率

Active: 100:活动的线程数

4. コマンドラインパラメータ

4.1 コマンドを実行するための一般的な形式

jmeter -n -t [jmx スクリプトのパス] -l [テスト出力ファイルのパス]

パラメータの説明:

-n: 表示 non gui mode,就是非图形化模式
 
-t: 即testplan,后跟要运行的jmeter脚本的路径和脚本名称。
 
    若指定路径下没有指定名称的脚本,则自动创建。
 
    若没有路径只写脚本名称,则默认是在当前目录查找或创建。
 
-l: 后跟输出结果文件路径和结果文件名称。
 
    若指定路径下没有指定名称的脚本,则自动创建,可以生成csv或者jtl文件。
    
    若只写脚本名称,则默认是在当前目录查找或创建。
 
示例:jmeter -n -t testplan.jmx -l test.jtl
 
示例含义:以命令行模式运行当前目录下的testplan.jmx文件,并在当前目录下输出日志文件test.jtl

その他のパラメータ:

jmeter -n -t test.jmx -R 10.6.5.31,10.6.5.32 -l log.jtl

jmeter -n -t test.jmx -l  log.jtl -H 192.168.1.1 -P 8080
 
-r/R 远程执行 -> 启动远程服务,即分布式执行多台压力机
 
-H 代理主机 -> 设置 JMeter 使用的代理主机
  
-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
 
使用-R指定节点时,要首先在这些节点上启动jmeter-server的服务

試験結果:

デスクトップに html.cvs ファイルが生成されます。このファイルはちょうど 60 行で、内容は次のとおりです。

写真

5.Linux システムは jmeter コマンドラインを実行します

編集したスクリプトを Linux にコピーする

1. 次のコマンドを使用してスクリプトを実行します。

jmeter -n -t bugfree-create.jmx -l test.jtl 

注: Jmeter の環境変数が設定されていない場合、スクリプト実行時にカレント ディレクトリが jmetet の bin ディレクトリ配下にあるかどうかを確認する必要があります。

動作図:

2. 実行結果の表示

(1) スクリプトを実行して生成された test.jtl ファイルを Windows システムに移動します (注: Windows にインストールされた Jmeter と JDK は Linux と互換性がある必要があります)

(2) 以下に示すように、Windows システムで Jmeter を開き、スレッド グループを作成し、そのスレッド グループにリスナーを追加します。

 (3) インターフェイスの参照ボタンをクリックし、ファイルを任意の場所に追加して、以下に示すようにスクリプト テスト レポートを表示します。

6. Windows システムで jmeter コマンド ラインを実行します。

Windows でのコマンド ラインの実行は、cmd コマンド ライン ツールを通じて実行されることを除いて、Linux での場合と同じです。また、ホン兄弟が紹介した前回の記事は、Windows での Jmeter コマンド ラインの実行に関するものでしたが、ホン兄弟はここでは詳しく説明しません。

7. まとめ

ストレス テストに jmeter を使用すると、一定期間後にメモリ オーバーフロー outfmenmory エラーが報告され、jmeter がフリーズしました。まず、jmeter に JVM_ARGS="-Xmx2048m -Xms2048m -Xmn256m -XX:PermSize=128m -Xss256k" を追加してみてください。 but その結果、実行時間は増加しましたが、最終的にはメモリ オーバーフローが報告されました。Baidu がネチズンの提案に従って次の設定を変更した後、jmeter はスタックしなくなりました。

1. Windows 環境で、 jmeter.bat を変更します

set HEAP=-Xms256m -Xmx256m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
改为:
set HEAP=-Xms256m -Xmx1024m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

経験によれば、ヒープは最大でも物理メモリの半分に設定されており、デフォルト設定は 512M です。ヒープが物理メモリの半分を超えると、Java がより多くのメモリを消費するため、jmeter の実行が遅くなるか、さらにはメモリ オーバーフローが発生する可能性があります。そしてより多くのCPUを占有します。

注: JDK32 ビット コンピュータの Xmx は 1500m を超えることはできません。最大値は 1378m です。それ以外の場合は、Jmeter の起動時にエラーが報告されます。

2. Linux 環境で、jmeter.sh を変更します。

java $JVM_ARGS -Xms1G -Xmx5G -XX:MaxPermSize=512m -Dapple.laf.useScreenMenuBar=true -jar `dirname $0`/ApacheJMeter.jar "$@"

3. JDKのビット数を確認する場合

# java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)

如果是64位的话,最后一行会显示64-Bit
#java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

8.展開

8.1 設定ファイルの変更

初めてコマンド ラインを使用してテスト スクリプトを実行する場合、表示される出力は次のようになります。

写真

この情報は、実行が成功したことのみを示します。このテストの結果をもっと知りたいのですが、どうすればよいですか? これは、jmeter.properties 構成ファイルを変更することで解決できます。


#---------------------------------------------------------------------------
# Results file configuration
#---------------------------------------------------------------------------

# This section helps determine how result data will be saved.
# The commented out values are the defaults.

# legitimate values: xml, csv, db.  Only xml and csv are currently supported.
#jmeter.save.saveservice.output_format=csv

# The below properties are true when field should be saved; false otherwise
#
# assertion_results_failure_message only affects CSV output
#jmeter.save.saveservice.assertion_results_failure_message=true
#
# legitimate values: none, first, all
#jmeter.save.saveservice.assertion_results=none
#
#jmeter.save.saveservice.data_type=true
#jmeter.save.saveservice.label=true
#jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
#jmeter.save.saveservice.response_data=false
# Save ResponseData for failed samples
#jmeter.save.saveservice.response_data.on_error=false
#jmeter.save.saveservice.response_message=true
#jmeter.save.saveservice.successful=true
#jmeter.save.saveservice.thread_name=true
#jmeter.save.saveservice.time=true
#jmeter.save.saveservice.subresults=true
#jmeter.save.saveservice.assertions=true
#jmeter.save.saveservice.latency=true
# Only available with HttpClient4
#jmeter.save.saveservice.connect_time=true
#jmeter.save.saveservice.samplerData=false
#jmeter.save.saveservice.responseHeaders=false
#jmeter.save.saveservice.requestHeaders=false
#jmeter.save.saveservice.encoding=false
#jmeter.save.saveservice.bytes=true
# Only available with HttpClient4
#jmeter.save.saveservice.sent_bytes=true
#jmeter.save.saveservice.url=true
#jmeter.save.saveservice.filename=false
#jmeter.save.saveservice.hostname=false
#jmeter.save.saveservice.thread_counts=true
#jmeter.save.saveservice.sample_count=false
#jmeter.save.saveservice.idle_time=true

# Timestamp format - this only affects CSV output files
# legitimate values: none, ms, or a format suitable for SimpleDateFormat
#jmeter.save.saveservice.timestamp_format=ms
#jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS

# For use with Comma-separated value (CSV) files or other formats
# where the fields' values are separated by specified delimiters.
# Default:
#jmeter.save.saveservice.default_delimiter=,
# For TAB, one can use:
#jmeter.save.saveservice.default_delimiter=\t

# Only applies to CSV format files:
# Print field names as first line in CSV
#jmeter.save.saveservice.print_field_names=true

# Optional list of JMeter variable names whose values are to be saved in the result data files.
# Use commas to separate the names. For example:
#sample_variables=SESSION_ID,REFERENCE
# N.B. The current implementation saves the values in XML as attributes,
# so the names must be valid XML names.
# By default JMeter sends the variable to all servers
# to ensure that the correct data is available at the client.

# Optional xml processing instruction for line 2 of the file:
# Example:
#jmeter.save.saveservice.xml_pi=<?xml-stylesheet type="text/xsl" href="../extras/jmeter-results-detail-report.xsl"?>
# Default value:
#jmeter.save.saveservice.xml_pi=

# Prefix used to identify filenames that are relative to the current base
#jmeter.save.saveservice.base_prefix=~/

# AutoFlush on each line written in XML or CSV output
# Setting this to true will result in less test results data loss in case of Crash
# but with impact on performances, particularly for intensive tests (low or no pauses)
# Since JMeter 2.10, this is false by default
#jmeter.save.saveservice.autoflush=false
将上面的内容复制到user.properties文件中,然后注释打开,并且值修改成true,就会打开该条记录,jmeter就会将对应的信息输出到我们指定的jtl文件中(不过这样会在压测过程中产生大量的日志文件,真正压测时,最好不要开太多的日志记录),然后可以在结果文件中查看详细的信息。但是我们想在脚本执行的过程中实时查看结果信息,要怎么做呢?同样是将jmeter.properties文件中一下内容复制到user.properties文件中修改配置文件jmeter.properties。
#---------------------------------------------------------------------------
# Summariser - Generate Summary Results - configuration (mainly applies to non-GUI mode)
#---------------------------------------------------------------------------
#
# Comment the following property to disable the default non-GUI summariser
# [or change the value to rename it]
# (applies to non-GUI mode only)
summariser.name=summary
#
# interval between summaries (in seconds) default 30 seconds
#summariser.interval=30
#
# Write messages to log file
#summariser.log=true
#
# Write messages to System.out
#summariser.out=true

# Ignore SampleResults generated by TransactionControllers
# defaults to true
#summariser.ignore_transaction_controller_sample_result=true

 

上記の 3 つの構成項目 summariser.name、summariser.interval、summariser.out を開き、jmeter を保存して再実行すると、次の図に示すように、シェルに統計情報が表示されるはずです。

注: Jmeter の環境変数が設定されていない場合、スクリプト実行時にカレント ディレクトリが jmetet の bin ディレクトリ配下にあるかどうかを確認する必要があります。

Remote engines have been started
    Waiting for possible shutdown message on port 4445
    summary +   3036 in     3s = 1001.6/s Avg:    25 Min:    14 Max:    58 Err:  3036 (100.00%) Active: 61 Started: 58 Finished: 0
    summary +  25670 in  10.3s = 2494.7/s Avg:    61 Min:    11 Max:   190 Err: 25670 (100.00%) Active: 261 Started: 258 Finished: 0
    summary =  28706 in  13.1s = 2192.0/s Avg:    57 Min:    11 Max:   190 Err: 28706 (100.00%)
    summary +  27300 in  10.3s = 2654.9/s Avg:   129 Min:    10 Max:   407 Err: 27300 (100.00%) Active: 461 Started: 458 Finished: 0
    summary =  56006 in  23.1s = 2426.7/s Avg:    92 Min:    10 Max:   407 Err: 56006 (100.00%)
    summary +  27200 in  10.4s = 2606.1/s Avg:   202 Min:    10 Max:   528 Err: 27200 (100.00%) Active: 660 Started: 657 Finished: 0
    summary =  83206 in  33.1s = 2512.8/s Avg:   128 Min:    10 Max:   528 Err: 83206 (100.00%)
    summary +  26300 in    11s = 2478.3/s Avg:   284 Min:    11 Max:   702 Err: 26300 (100.00%) Active: 861 Started: 858 Finished: 0
    summary = 109506 in  43.1s = 2541.1/s Avg:   166 Min:    10 Max:   702 Err: 109506 (100.00%)
    summary +  26200 in    11s = 2439.0/s Avg:   355 Min:    10 Max:   866 Err: 26200 (100.00%) Active: 1000 Started: 997 Finished: 0
    summary = 135706 in  53.1s = 2556.0/s Avg:   202 Min:    10 Max:   866 Err: 135706 (100.00%)

ここでのエラー率は 100% ですが、通常の状況では 0% になるはずです。

ここに表示される情報は、GUI インターフェイスの集計レポート コンポーネントによって表示される情報と同等です。情報には主に「概要 +」と「概要 =」の 2 種類があり、他の項目も同様です。

summary +   4386 in 00:00:30:在30秒内增加了4386个请求,其中时间间隔由配置文件中的interval统计频率的值决定

summary =  27455 in 00:03:12:在3分12秒内产生的总请求数是27455个,其中的时间段是从脚本运行开始计算到当前时间为止,一般在脚本运行过程中主要关注 “summary=” 信息即可

146.2/s:系统每秒处理的请求数,相当于TPS

Avg:   684:平均响应时间

Min:   201:最小响应时间

Max:  1499:最大响应时间

Err:     0 (0.00%):错误数/率

Active: 100:活动的线程数

 

8.2 ファイルパス

1. コマンドラインのファイルパス

例: jmeter -n -t testplan.jmx -l test.jtl

デフォルトでは、JMeter は現在のディレクトリでスクリプト ファイルを検索し、現在のディレクトリにログを記録します。たとえば、上記のコマンドを C:\tools\apache-jmeter-3.0\bin ディレクトリで実行すると、JMeter はこのディレクトリで test.jmx スクリプトを検索し、実行結果をこのディレクトリに保存します。スクリプトが別のディレクトリにあり、実行結果を別のフォルダに置きたい場合は、次のように絶対パスを使用して JMeter に指示する必要があります。

C:\tools\apache-jmeter-3.0\bin>jmeter -n -t e:\addCustomer.jmx -l e:\addCustomer.jtl

おすすめ

転載: blog.csdn.net/Faith_Lzt/article/details/132791470