WebサイトのJMeterで負荷テストをすばやく作成する

画像 大規模な顧客サービス向けに設計されたソフトウェアアプリケーションの場合、その信頼性とフォールトトレランスについてストレステストを実施する必要があります。 また、Webサイトは基本的に大規模なサービスシステムであるため、フォールトトレランスを確認することは常に開発の不可欠な部分です。 Webアプリケーションのストレステストにはさまざまなソリューションがあります。 ここでは詳細に説明しませんが、その一部をここで説明します



この記事では、Apache JMeterなどのツールを使用して私の経験を共有したいと思います。 数十種類の同様のツールを試した後、最終的にJMeterに決めました。JMeterの機能は私の目標と目的を十分にカバーしていたからです。 同時に、このソフトウェアツールは非常に高速で軽量です。



JMeterを使用したことがない場合は、最初に基本的なレビュー、たとえばApache JMeterを使用した単純な負荷テストを読むことをお勧めします。 このプログラムを初めて起動したとき、最初に考えたのは、タイピングによって全体を把握することでしたが、結局のところ、これは一般的に非現実的であり、タイピング方法はJMeterには適用できません。 したがって、それを使用する場合は、すぐにマニュアルを開いてください、私を信じて、あなたは何をどのように完全に理解するまで非常に頻繁にそこを見る必要があります。 ここでは、最も明白で重要なもの、つまり実際に負荷テストを作成する方法について説明します。 過去に同じような記事を見つけたことがあれば、このソフトウェアの研究でほぼ1日節約できたでしょう。



さあ、行こう! 楽しみのために、ウェブサイトだけでなく、承認、さまざまなポストリクエストなどを備えた本格的なウェブアプリケーションがあると想像してください。



1. JMeterを起動します。



2.スレッドグループを作成します。



画像



これがメインのワークフローであり、スクリプトを記録し、さまざまなロジックとコントロールを追加します。

次に、テストスクリプト自体を作成する必要があります。 サイトに負荷をかけるためのさまざまなアクションのセット。 スクリプトを手動で作成できます。 これは非常に簡単です。このため、N番目の数のHTTP要求要素を追加する必要があります。これは、スレッドグループ->追加->サンプラー-> HTTP要求として追加されます。 次の図に示すように、設定ウィンドウが表示されます。



画像



適切なフィールドに、Webサイトのアドレス、ポート(必要な場合)、ページへのパスを設定します。 たとえば、次のように:



画像



さらに、クエリのパラメーターを追加できます。 そして、テストスクリプトを作成するこの方法は、単純なサイトでは非常に受け入れられます。 ただし、この場合、承認用の要求パラメーターを記述するのは退屈な作業です。 さらに、サイトをクロールするための一連のアクション、たとえば少なくとも15ページを作成する必要がありますが、この場合もこのオプションは適切ではありません。 もちろん、手作業は私たちのためではなく、良い意味でこのビジネスを自動化する必要があります。 JMeterには、プロキシを介したテストの記録と呼ばれるこのような機会があります。 つまり ブラウザを介してアクションを実行すると同時に、必要なすべてのHTTPリクエスト要素が参加なしで作成されます。 これがどのように行われるかをさらに見ていきます。



3.レコーディングコントローラーを追加します(スレッドグループ->追加->ロジックコントローラー->レコーディングコントローラー)。 この要素は、ブラウザーで行うすべてのアクションを保存します。



4.すぐにHTTP Cookie Managerを追加します(スレッドグループ->追加->構成要素-> HTTP Cookie Manager)。 この要素を使用すると、Cookieを介したセッションの処理が実装されます。 この要素の設定で、パラメーターCookie Policy = compatibilityを設定します。 マニュアルの説明。 この写真を手に入れた



画像



5. HTTPプロキシサーバー要素を追加します。 この要素はテスト中に直接参加しないため、WorkBenchセクションに追加する必要があります(WorkBench->追加->非テスト要素-> HTTPプロキシサーバー)。 テストスクリプトを作成するためにのみ必要です。 ここには、この要素の多くの設定があります。



画像



実際、プロキシサーバーのポート番号を変更するだけで十分です。たとえば、デフォルトポート8080が既に使用されている場合は、8089を入力できます。[ターゲットコントローラー]列に[レコーディングコントローラーを使用]を残すと、プロキシを通過するすべてのリクエストがテスト計画の最初の録音コントローラー。 しかし、現時点では彼は1人しかいないので、このオプションが適しています。 次に、フィルタリング設定に注意することをお勧めします。 これらの設定は、広範なフィルタリング機能を提供します。 別のページにすることも、たとえばすべてのjsスクリプトなどにすることもできます。 など 繰り返しますが、マニュアルではそれらは非常によく説明されています。



6.ブラウザの設定で、プロキシアドレスとポートを指定する必要があります。 ブラウザがブラウザを介してインターネットにアクセスしていることを確認します。これを行うには、ページがロードされないようにしながら、インターネット上の任意のサイトにアクセスします。 次に、HTTPプロキシサーバー設定ウィンドウの[スタート]ボタンをクリックして、プロキシを起動する必要があります。 その後、ブラウザを介して、テストされたサイトのページを開き、ログインし、さまざまなアクションを実行し、異なるページにアクセスすると、スクリプトが既にレコーディングコントローラー要素に保存され始めます。 記録したスクリプトがすでに深刻で、サイトが熱くならないようになっていることに気付いたら、プロキシを停止します。

およそ次の写真を受け取りました:



画像



要素の名前は言うまでもないかもしれません。 したがって、テストの進行をさらに簡単に監視できるようにするために、これらの要素の名前を変更することは理にかなっています。



7.スレッドグループ要素の設定で、スレッドの数、反復の数、およびウォームアップ時間を選択します。 たとえば、次の設定を設定します。



画像



つまり、テストは10スレッドで行われ、強制的に停止されるまで永久に続きます。 ウォームアップ時間を30秒に設定しました。 つまり、スレッドは30秒以内に均等に開始されます。 3秒ごとに、新しいスレッドが開始されます。



8.テスト結果を観察し、進行状況を監視するには、いくつかの監視要素を追加する必要があります。 通常、結果ツリーの表示、テーブルでの結果の表示、グラフの結果、概要レポートを追加します。 彼らが示すように、あなたはあなた自身でそれを理解できると思います。 私が注意しているのは、View Results Treeの非常に便利な要素です。ここでは、リクエストとレスポンスのすべてのパラメーターと内容を確認できます。



画像



したがって、すべてが正常に機能することを確認できます。



それだけです! したがって、数分でサイトの負荷テストを作成できます。

最後に、Apach JMeterに実装されている便利な機能をいくつか紹介します。



デフォルト設定


すべてのHTTP要求要素の設定を構成する場合は、HTTP要求のデフォルト設定の特別なセットを追加することでこれを行うことができます(記録コントローラー->追加->構成要素-> HTTP要求デフォルト)。 外観では、このウィンドウはHTTPリクエストに非常に似ています。 ここで設定したすべてのパラメーターは、このセットの他のすべての要素で使用されます。 これは多くの状況で便利です。たとえば、異なるポートに複数のWebサイトがデプロイされていて、定期的にどちらか一方をテストする必要がある場合です。 すべてのリクエストに対して1つのポートを編集しないように、HTTPリクエストのデフォルトの1か所のみでポートを変更します。 所有していない場合は、他の全員が使用します。



ファイルからユーザーのリストをロードする


このタスクも簡単で明白です。 長い間苦労しているWebリソースで、すべてのボタンをランダムにクリックする一連の怒っているユーザーを設定する必要がある場合は、CSV Data Set Config要素(スレッドグループ->追加->構成要素-> CSVデータセット)を追加します。構成)。



画像



表示されるウィンドウで、名前、ファイルへのパス(プロジェクトファイルの横に配置する場合は1つの名前を指定するだけ)、および変数の名前を指定します。 これらの名前は自分で指定します。リクエストを作成するときに将来使用されます。 たとえば、user \ password bundleの場合、USER、PASSという2つの変数名を指定しました。

csvファイル自体は次のようになります。

userName1、pass1

userName2、pass2

userName3、pass3



さて、ユーザーをdzhimetrの入り口に提出しました。 次に、必要に応じてフックするように彼に指示する必要があります。 これが行われたので、承認を担当するHTTP Request要素を探しています。 原則として、リクエストのパラメータ、つまり、ブラウザを介してスクリプトを記録するときに入力したユーザー名とパスワードが含まれます。 特定のユーザー名とパスワードの値の代わりに、この形式の変数名を$ {USER}、$ {PASS}に置き換えます。

私にとってはこのように見えます:



画像



その後、JMeterはこれらのクレジットを異なるストリームに周期的に使用するため、サイトに非常に現実的な負荷がかかります。



それだけです、ご清聴ありがとうございました!



All Articles