1. JMeterの導入とインストール
JMeter の概要
- JMeter は、Apache 組織によって開発された Java ベースのストレス テスト ツールです。オープンソース、無料の柔軟なフレームワーク、およびマルチプラットフォームのサポートという利点があります。ストレス テストに加えて、JMeter はアプリケーション インターフェイスのテストにも使用できます。
- JMeter のダウンロード、インストール、起動
ダウンロード:
JMeter 公式 Web サイトにアクセスしてください: https://jmeter.apache.org/download_jmeter.cgi
クリックして Windows バージョンの apache-jmeter-5.1.1.zip をダウンロードします。
インストール:
Dドライブに解凍してご利用ください ディレクトリ構成:
bin ディレクトリ: 起動コマンド
- jmeter.bat は Windows で起動可能なバッチ ファイルです
- Linux での jmeter.sh 実行可能シェル スクリプト
- jmeter.properties: コア構成ファイル (構成中国語エンコーディング)
- lib ディレクトリ: Jmeter が依存する jar パッケージを保存し、プラグインを lib の ext ディレクトリにインストールします。
起動する:
- bin ディレクトリに入り、jmeter.bat ファイルをダブルクリックして jmeter を起動します。
(開けない場合は、動作環境JDKが正しく設定されていない可能性があります。理由: JMeterはJava環境をベースにする必要があります)
- dos に apache-jmeter の bin ディレクトリを入力し、コマンドを実行します。 jmeter も起動できます
3. jmeter の作業環境を構成する
方法: jdkをインストールし、環境変数を設定する
1) jdk をインストールします。これにはバージョン 1.8 以降が必要です。
jdk のインストール中、後で使用できるようにパスをコピーすることを忘れないでください。
2) jdk のシステム環境変数を構成します。
a》java_home: jdkのインストールパス(新規作成が必要)
b》パス: jdk の作業ディレクトリ bin (%java_home%\bin;) を追加します。
(作業パスを編集して追加するだけです)
3) 検証:
A. コマンド javac in dos を入力して、javac コマンドの形式とオプションを表示します。
B. 起動時の bin ディレクトリにある jmeter.bat は正常に開くことができます。
設定インターフェイスは次のように簡体字中国語で表示されます。
2. JMeter を使用してインターフェイス機能のテストを行う
プロセス: テスト計画-「スレッド グループ-」http リクエスト-「応答アサーション-」「アサーション結果-」結果ツリーを参照してください。
テストプランも付属しています。
テスト計画: プロジェクト、特定のプロジェクト - テスト計画に相当
スレッド グループの追加: 関数ポイント、またはインターフェイス、特定のインターフェイス スレッド グループに相当します。
「テスト計画」を右クリック→「追加」→「スレッド(ユーザー)」→「スレッドグループ」をクリックします。
次に、スレッド グループをセットアップできます (通常、パフォーマンス テストを行う場合にのみセットアップする必要があり、インターフェイスはほとんど使用されません)。
スレッドグループパラメータの詳細な説明:
名前: 業務に応じて適切な名前を設定します。インターフェイス テストはインターフェイス名、パフォーマンス テストは機能ポイントです。 2. エラーが発生した場合のアクション: デフォルトは「続行」で、エラーを無視して完了を続行します。 3. スレッド数: 仮想ユーザーの数、デフォルトは 1 で、1 人のユーザーが 1 つのスレッドを占有します。マルチユーザーを同時にテストする場合、ここで同時ユーザーの数、つまり設定するスレッドの数を設定する必要があります。
Ramp-Up Time (秒) : すべての仮想ユーザーを開始するのに必要な時間。意味は次のとおりです: たとえば、スレッド数が 10 で起動時間が 2 秒の場合、2 秒以内に 10 人のユーザーを起動する必要があることを意味し、平均すると 1 秒あたり 5 人のユーザーが起動されます。起動時間は 0 です。これは、同時に起動し、同時であることを意味します。
ループ数: 各ユーザーがパラメータ化などのリクエストを送信した回数。スレッド数が 10 でループ数が 5 の場合、各スレッド (ユーザー) は 5 つのリクエストを送信します。リクエストの総数は 10*5=50 です。「永久」にチェックを入れると、すべてのスレッドは手動で停止されるかスケジューラが設定されるまでリクエストを送信し続けます。
スケジューラ: スレッド グループの起動の継続時間と遅延時間を設定します (スケジューラは、有効にするために永久に続くサイクル数をチェックする必要があります) 継続時間 (秒): テスト継続時間: 24 時間 = 24*3600 秒 起動遅延 (秒):テスト遅延開始時間
HTTP リクエストの追加: テスト ケースのテスト ステップ、XX-HTTP リクエストに相当
「スレッドグループ」を右クリック→「追加」→「サンプラー」→「HTTPリクエスト」
HTTP リクエスト情報を設定します。
基本
2.1. Webサーバー
プロトコル: HTTP リクエストをターゲット サーバーに送信するために使用されるプロトコル。HTTP または HTTPS を使用できます。デフォルトは HTTP です。
サーバー名または IP: HTTP リクエストの送信先となるターゲット サーバー名または IP (例: www.jd.com)
ポート番号: ターゲット サーバーのポート番号。デフォルト値は 80 です。空白のままにできます。https は 443 です。
注: 「サーバー名または IP」に http:// を入力する必要はありません。要求時に自動的に追加されます。
2.2. HTTPリクエスト
メソッド: GET、POST などの HTTP リクエストを送信するためのメソッド。
パス: ターゲット URL パス (サーバー名とパラメータの間の部分)
コンテンツのエンコード: デフォルトのエンコード方式は iso8859 ですが、中国語をサポートするために utf-8 に変更されます。リダイレクトに従う: HTTP リクエストに対する応答が 302/301 の場合、JMeter はターゲット ページへのリダイレクトに従います。
keepAlive を使用する: Keep-Alive メソッドは、jmeter とターゲットサーバー間の HTTP 通信に使用され、長時間の接続を維持し、接続数を減らし、接続時間を短縮します****
2.3. リクエストパラメータ
A) パラメータ: get リクエストによって運ばれるデータリスト、名前と値のペア (パラメータはリクエストと一緒に送信されます)
B) メッセージ本文データ: post リクエストで運ばれるリクエストデータは、辞書に似た json 形式のデータです。
C) ファイルのアップロード: ローカル ファイルのアップロードを要求します。ファイル タイプはファイルである必要があります。注意: 追加されたパラメータに中国語の文字が含まれる場合は、「エンコーディング」をチェックする必要があります。
HTTP リクエストの例: https://www.jd.com/、JD ホームページを開く get リクエスト
応答アサーションを追加
「HTTPリクエスト」を右クリック→追加→アサーション→レスポンスアサーション(リクエスト後のレスポンスが正しいか確認)
設定する必要があるアサーションの内容:
含まれるもの: アプリケーション (そのリクエスト) の範囲、応答フィールド、一致ルール、チェック対象のテスト パターンの追加
3.1. apply to : そのリクエストのアサーションを表しますデフォルトではメインリクエストのみをアサートします(メインサンプルのみ)
3.2. テスト フィールド: 応答テキスト、応答コード、応答情報などを含むアサーションの内容を表します。
3.3. パターン マッチング ルール: include、matching、equal などのアサーションを表現します。一般的には include または equal が使用されます。
3.4. テストモード: ビジネスに従って書かれており、期待される結果として理解できます
4. アサーション結果を追加する
[HTTP リクエスト] -> [追加] -> [リスナー] -> [アサーション結果] を右クリックして、アサーションの結果を表示します。
[アサーション] 別名: チェックポイント
意味: 期待されるデータが実際のデータと一致するかどうかを確認します。
方法: 最初に応答アサーションを追加し、次にアサーションの結果を追加します。これは組み合わせです
アサーションが成功した: アサーション結果にリクエストの名前を示す行が 1 つだけある場合、それは成功を意味します。
アサーションの失敗: アサーションの結果には 2 行があり、2 行目には失敗の理由が表示されます。
5. 結果ツリーを表示します。目的は、リクエストが送信された後の結果を表示することです。
「HTTPリクエスト」を右クリック→「追加」→「リスナー」→「結果ツリーの表示」
クリックしてリクエストを送信すると、image.png の結果は次のようになります。
第 4 章 JMeter は、同時にリクエストを送信する複数のユーザーをシミュレートします
1. 簡単なストレステストの練習
http リクエスト インターフェイス http://localhost:8080/goods/to_list があります。ストレス テストを実行するには、Jmeter を使用する必要があります。テストの手順は次のとおりです。
a. 新しいスレッド グループを作成します。
b. スレッドグループパラメータを設定します。ここでの構成は、10 個のスレッドが同時に開始され、1 回ループします。
c. http リクエストのデフォルト値を追加しました。前の手順で作成したスレッド グループに、新しい http リクエストのデフォルト値を追加します。すべてのリクエストは、設定されたデフォルト値を使用します。これにより、プロトコルが http、IP が localhost、ポートが 8080 に設定されます。
d. ストレス テスト対象の http リクエストを追加します。
下図の最初の赤枠のプロトコル、IP、ポートは設定する必要はありません。手順cで設定したデフォルト値が使用されます。リクエストパスPathのみ設定する必要があります。/goodsを記入してください。 /to_listはこちら。
e. 新しいリスナーを追加して、ストレス テストの結果を表示します。ここでは、集計レポート、グラフ結果、表での結果の表示の 3 つのタイプが追加されていますが、異なる点は、結果が異なる形式で表示されることです。
f. 「実行」ボタンをクリックしてストレス テストを開始し、結果を表示します。
5. システム負荷とパフォーマンスのボトルネックを確認する方法
サーバー上で次のコマンドを実行します。
上
以下の図に示すように、システムの負荷平均が表示されます。1 分間の平均負荷、5 分間の平均負荷、および 15 分間の平均負荷は、それぞれ 1.58、0.50、および 0.23 です。最もリソースを消費するプロセスは mysql であることがわかります。
パラメータを使用してリクエストを作成する方法
1. まず、新しい http リクエストを作成します。
2. リクエストパスを設定し、パラメータを追加します。下図のように「Path」にリクエストパスを入力し「追加」をクリックするとパラメータを追加します tokenというパラメータがあります。
この時点で、パラメーター リクエストが作成されました。[実行] をクリックしてストレス テストを開始します。
3. 複数の変数の設定をシミュレートし、複数のユーザー リクエスト インターフェイスをシミュレートする方法
新しい CSV データ セット構成設定を作成します。
2. 新しい設定ファイル config.txt を作成し、ユーザー情報を設定します。ファイル名は任意に記述します データの各行には userId と userToken の 2 つの値がカンマで区切られており、ここでは 2 人のユーザーの情報を設定しています。
3. 設定ファイルを参照します。Csv Data Set Config の構成ファイル config.txt を参照し、変数名 userId と userToken を定義します。
4. リクエスト内の構成ファイル内の変数を参照します。パラメータのValueを記入する際は、値をがっつり書くのではなく、変数名の形式で記述します、設定ファイル内のユーザーTokenの値を参照したいので、{変数名}の形式で記述しますここでやりたいのは 設定ファイルの userToken の値を参照したいので、変数名の形式で書きます 設定ファイルの userToken の値を参照したいので、{userToken} と書きます。
構成が完了したので、「実行」ボタンをクリックしてストレス テストを開始します。
3. jmeter はマルチユーザーの同時実行をシミュレートします
1. 100 人の実際のユーザー
1 つのアカウントは、同時にログインする 100 の仮想ユーザーと、同時にログインする 100 のアカウントをシミュレートします。
違い
1 つのアカウントを 100 人が同時にログインして使用できます。
100 人、100 アカウントが同時にログインできます。
同じ
プロジェクトの要件に応じて、両方とも 100 人が同時にログインできます。
アカウントソース
「登録」または「作成」アカウント インターフェイスを使用して 100 人のユーザーを作成します。
「クエリ」インターフェイスは、100 個のアカウントのアカウント番号とパスワードをファイルに保存します。
3. 100 個のアカウントとパスワードのファイルを抽出します。
メータースクリプトの全体的なレイアウト
スレッド グループ (レベル 1) ----> リクエストのデフォルト値、リクエスト ヘッダー、http リクエスト、結果ツリーの表示 (レベル 2) ---> 正規表現、BeanShell ポストプロセッサ (レベル 3)。
HTTP リクエストのデフォルト値: システムの一般 IP が保存される場所です (プロトコル: http、サービス名または IP: 127.0.0.1)。
HTTP ヘッダー管理: インターフェイス要求の前に持ち込む必要がある情報。一部のインターフェイスはそれなしでは実行できません (認可、コンテンツ タイプ、受け入れ、ユーザー エージェント)。たとえば、持ち込む必要があるトークンはヘッダーに保存されます。
ログインリクエスト: リクエストメソッド、リクエストパス、メッセージ本文、トークンを抽出するための正規表現
リクエストの作成: リクエストメソッド、リクエストパス、メッセージ本文、ユーザー名をパラメータ化し、複数のユーザーを作成します。
クエリアカウント: リクエストメソッド、リクエストパス、メッセージ本文、ユーザー名とパスワードを抽出するための正規表現、BeanShell ポストプロセッサが戻り値をファイルに保存
(2) クエリリクエスト内の正規表現とBeanShellポストプロセッサ
正規表現抽出----->目的のフィールド内容を取得
BeanShell ポストプロセッサ --> 抽出されたフィールドの内容を指定されたファイル 4.csv に保存します。
FileWriter fs=new FileWriter("D://recent//4.csv",true);
BufferedWriter out =new BufferedWriter(fs);
out.write(vars.get("username")+","+vars.get("id")); //username と id は通常の定義名です
out.write(System.getProperty("line.separator")); //「\n」自動行折り返しと同等
out.close();
fs.close();
スレッドグループのスレッド数は抽出した項目数と同じになるように設定し、スクリプトを実行して100ユーザーのアカウントとパスワードを取得します。
2. 100 ユーザーが同時にログイン
スレッドグループの設定
スレッド数: 同時ユーザー数
ランプアップ時間 (秒): すべてのスレッドを開始するのに必要な時間
0---> は同時並行性を表します。
100---->スレッド数は 100、時間は 100 秒です。1 秒ごとにスレッドを開始することを表します (100/100=1)
ループ数: ループ数
デフォルト値は 1 です。
2--->スレッド数は 100、ループ数は 2 です。200 スレッドの開始を表します。
「永久」にチェックを入れると継続的に実行されるため手動で停止する必要があり、スケジューラと組み合わせて使用することが一般的です。
補足:同期タイマー:
機能: 指定されたスレッド数に達するまでスレッドをブロックし、その後それらをまとめて解放します。これにより、瞬間的に大きな圧力がかかる可能性があります。
同期タイマーを使用する場合、サイクル数は Forever としてチェックする必要があります。
2. マルチユーザーログインをシミュレートする
-->CSVデータファイル設定をスレッドグループに追加
ユーザー アカウントとパスワードを保存するファイルをインポートし、変数に名前を付けて、ログイン時に呼び出します。
呼び出し、パラメータ ${name} を渡します
注: このシステムのアカウントとパスワードは同じであるため、値の 1 列を呼び出すだけで済みます。
/api/v1/oauth/token?username=${name}&password=${name}&scope=all&grant_type=password
テストを実行して結果を表示する
100 人のユーザーが同時にログイン
これからも皆様の「いいね!」が更新の一番の励みになります!