私の連絡先情報
郵便メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
前回の調査では、JMeter を使用して、Agileone システムのプロトコル レベルのインターフェイス テストを完了しました。また、パフォーマンス テスト テクノロジーの中核は、マルチスレッド テクノロジーを使用してプロトコル リクエストを送信し、システムにアクセスする多数のユーザーのシミュレーションを完了することであることもわかっています。 JMeter の本来の設計目的は、実際にはパフォーマンス テストです。たとえば、テスト計画を作成するときの最初のステップは、スレッド グループを作成することです。この実験では、JMeter を使用して Phpwind のログインと投稿のパフォーマンス テストを完了する方法を説明します。
目的
(1) JMeter の連想検索の使い方をマスターする。
(2) JMeter でのスレッドの設計と使い方をマスターします。
(3) JMeter でのテストレポートの使い方をマスターします。
実験プロセス
Phpwind 用に testuser_1 から testuser_100 まで合計 100 人のユーザーを作成したため、実際のシナリオをより適切にシミュレートするために、パフォーマンス テスト プロセス中にユーザーのランダム ログインを実装する必要があります。
(1) 「HTTP リクエスト」サンプラーを作成し、「DoLogin」という名前を付け、対応するログイン POST リクエスト パラメータを入力します。
(2) サンプラーの「応答アサーション」と「結果ツリーの表示」を作成します。以降のリクエストも同様です。
(3) サンプラー用の「プリプロセッサ」を作成し、1 から 100 までの乱数を実装します。
(4) 最終的に実装されたテスト リクエストは次のとおりです。
Phpwind に投稿するときは、値が乱数である「verify」フィールドを指定する必要があるため、正規表現を使用して応答内の対応する値を関連付ける必要があります。この部分はインターフェイス テストの実装プロセスで習得されています。ここでは主に JMeter で実装する方法を見ていきます。
(1) 「HTTPリクエスト」サンプラーを追加し、「/phpwind/post.php?fid=2」にGETリクエストを送信してレスポンスを取得します。
(2) サンプラーにポストプロセッサを追加し、「正規表現抽出」に設定し、以下の設定を行います。
(3) 上記の入力フィールドの簡単な説明:
a) 参照名: 次のリクエストで参照されるパラメータの名前。verifycode を入力すると、${verifycode} を使用して参照できます。
b) 正規表現: 括弧内には抽出する内容が含まれており、これを適用するのが得意です。
c) テンプレート: $-$ で引用されます。設定した正規表現で複数の値が見つかった場合、シーケンス番号はどの値を処理するかを示します。
d) 数字のマッチング: 0 はランダムな値を表し、1 はすべての値を表します。通常は 0 を入力するだけです。
e) デフォルト値: パラメータが値を取得できない場合は、パラメータが取得できるようにデフォルト値が指定されます。
(1) サンプラーにユーザーパラメータを設定し、関数アシスタントを使用して投稿タイトルとコンテンツの乱数を生成します。
(2) 前の手順で取得した verifycode を、POST リクエストボディの verify フィールドの値として使用します。
(3) 最終的に生成されたテスト リクエストは次のとおりです。
デフォルトでは、JMeter はインターフェイス テストと同様に、現在要求されているページのダウンロードのみを担当し、ページの他の追加リソースはダウンロードしません。これは明らかに実際の状況と一致しません。したがって、HTTP サンプラーの「詳細」タブで、「HTML ファイルからすべての含まれるリソースを取得する」をチェックする必要があります。
この実行では、前の Java スクリプトと同じシナリオ設計に従います。50 ユーザー、10 秒ごとに 5 人の同時ユーザー、各ユーザーが 100 回実行されます。具体的な設定は以下のとおりです。
上記の設定の「ランプアップ期間 (秒)」パラメータを 100 秒に設定すると、2 秒ごとにスレッドを追加することになりますが、カスタム スレッドのように頻度を任意に定義することはできませんが、このような設定は 10 秒ごとに一貫しています。 5 人の同時ユーザーの効果に本質的な違いはありません。
実行回数の設定に加えて、パフォーマンス テスト プロセスの合計実行時間も設定できます。上図の下部にある「スケジューラー」にチェックを入れ、期間を設定します。 1 時間継続して実行する必要がある場合、その値を 3600 秒に設定するだけで済みます。
思考時間は、実際のユーザー シナリオをシミュレートするために必要な設定です。 JMeter が提供する「タイマー」コンポーネントは、ユーザーの思考時間をシミュレートするために使用されます。JMeter には、より一般的に使用される「ガウス ランダム タイマー」が付属しています。JMeter でタイマーを作成するには、次の手順に従います。サンプラーは思考時間を設定します。
(1) サンプラーを右クリックします。たとえば、「DoLogin」をクリックして、新しい「ガウス ランダム タイマー」を作成します。
(2) オフセットを 2000 ミリ秒に設定し、固定遅延オフセットを 4000 ミリ秒に設定します。その機能は、4 秒プラスマイナス 2 秒の範囲内で乱数を生成することです。つまり、ランダムな一時停止時間は 2 秒から 6 秒の間です。
JMeter タイマーの使用方法の詳細
ランデブー ポイントの概念は、パフォーマンス テスト ツール LoadRunner によって最初に提案されました。その機能は、スレッドのグループがリクエストを送信した後、すべてのスレッドが特定の時点に同期されるまで全員が集まり、その後リクエストを一緒に送信することです。ランデブー ポイントの使用は実際のシナリオと一致しませんが、主にサーバーの同時実行テストに使用されます。
JMeter では、「同期タイマー」タイマーを使用して、ランデブー ポイントの処理を完了できます。たとえば、次の図は、サンプラー「DoPost」の同時テスト戦略を実装する方法を示しています。
(1) グループ化するシミュレートされたユーザーの数: この値は、コレクション ポイントのスレッド数に対応します。ここでは 50 に設定します。これは、コレクションが次のリクエストを一緒に送信する前に 50 個のスレッドを待機する必要があることを意味します。ここで 0 に設定すると、スレッド グループによって設定されたすべてのスレッドのコレクションを使用することを意味します。
(2) ミリ秒単位のタイムアウト: ここで 10000 に設定します。これは、ランデブー ポイントのタイムアウトが 10 秒であることを意味します。つまり、すべてのスレッドが 10 秒間待機していない場合、スレッドはそれ以上待機しません。収集を完了したスレッドは、次のリクエストを直接送信します。
実際、Java のネイティブ スレッド開発では、2 つの同期メソッド「wait()」と「notifyAll()」を使用して、ランデブー ポイントのシミュレーションを完了することもできます。
JMeter には、テスト レポートを表示するための組み込みコンポーネントも多数ありますが、最も一般的に使用されるのは、特定のスレッド グループに対して作成された「集計レポート」です。たとえば、現在の Phpwind パフォーマンス テストの結果を以下に示します。
上の図から、各サンプラーの実行数、応答時間のさまざまな数学的統計 (平均、中央値、90% 値、最小値、最大値)、トランザクション エラー率、ネットワーク帯域幅のスループット、合計応答サイズ、合計がわかります。リクエストのサイズやその他のデータ。サーバー側のパフォーマンス指標を監視することに加えて、これらの指標は基本的に、パフォーマンス テストの基本データを分析するのに十分です。
思考訓練
(1) JMeter の他のコンポーネントの使用法をよく理解してください。
(2) JMeter を使用してプロジェクトのパフォーマンス テストを完了し、発生した問題を 1 つずつ解決します。
(3) JMeter のパフォーマンス テストと、ネイティブ Java を使用して独自に開発したパフォーマンス テストを比較して、類似点と相違点を確認します。
最後に、私の記事をよく読んでくださった皆様に感謝を申し上げたいと思います。ファンの増加と注目を見て、それは決して貴重なものではありませんが、使用できる場合は直接受け取ることができます。
次の面接の質問は、アリババ、テンセント、バイトなどの一流インターネット企業の最新の面接資料であり、バイトの上司の中にはこのセットを終えた後に権威ある回答をした人もいます。面接情報に基づいて、誰もが満足のいく仕事を見つけることができると思います。