gatling tutorial getting started with gatling load testing
このガトリングビデオチュートリアルでは、機能、インストール手順、ガトリングシミュレーションレコーダーの使用例など、ガトリングの包括的なレビューを提供します。
Gatlingは、Scalaに基づくオープンソースのテストフレームワークです。最近では、過去3年間で300万回以上ダウンロードされ、人気が高まっています。
オープンソースとしても、エンタープライズバリアントとしても利用できます。 ガトリング最前線 より多くの統合とガトリングチームからのサポートがあります。ただし、すべての実用的なユースケースは、無料でオープンソースのGatlingコミュニティエディションを使用して作業できます。
学習内容:
ガトリングビデオチュートリアル
ガトリングを始めるために必要な手順を見てみましょう。このチュートリアルの一部として、ガトリングの重要な機能のいくつかについても説明します。
ガトリングの紹介に関するビデオチュートリアルは次のとおりです。
インストール
ガトリングは2つの異なる方法でインストールできます。これは次のように説明できます。
#1) Gatlingをスタンドアロンツールとして使用すると、公式のGatlingを使用して、インストーラー/アプリケーションを簡単にインストールできます。 ウェブサイト インストール手順に従います。
インストールされたzipフォルダーにはシェルファイルとバッチファイルの両方が含まれているため、GatlingはWindows、MacOS、Linux / Unixなどのさまざまなオペレーティングシステムでの使用に適しています。
インストーラーは、JavaベースのGatlingスクリプトレコーダーに他なりません。このレコーダーは、ツールのブラウザーを介してユーザーアクションを記録し、ロードしてテストする必要のあるスクリプトまたはシナリオに変換できます。これについては、次のセクションで詳しく説明します。
#二) Gatlingをインストール/使用する別の方法は、Maven / GradleまたはScalaビルドツールを介してパッケージとして使用することです。
ここで注意すべき重要な点は、GatlingスクリプトはすべてScalaベースであるため、Scalaベースのプロジェクトを作成するには、Maven / GradleやSBTなどのビルドツールでインポートできるGatlingライブラリを使用できることです。
ガトリングの特徴
これらは次のとおりです。
#1)非同期アーキテクチャと軽量スレッド
Gatlingは、Akkaツールキットに基づく高度なアーキテクチャを備えており、完全に非同期です。これにより、各スレッドが1人のユーザーに対応するJMeterなどの他のパフォーマンステストツールと比較して優位に立つことができます。
ここでは、アクターモデルを介したメッセージングアーキテクチャを備えているため、単一のスレッドで複数のユーザーをシミュレートできます。
一言で言えば、ガトリングテストは、Jmeterなどの他のツールと比較して、マシンごとに多数の同時ユーザーを処理できるため、CPUとRAMを大幅に節約できます。
推奨読書=> アクターモデルとガトリングの非同期アーキテクチャ
#2)ドメイン固有言語はテストを読みやすくします
ガトリングスクリプトはScalaで記述されており、使いやすいDSLを備えているため、スクリプトが非常に読みやすく、エラーが発生しにくくなっています。 Gatling DSLの詳細については、を参照してください。 ここに 。
#3)プロトコルにとらわれないサポート
Gatlingは、HTTP、HTTPS、Webソケットなどのさまざまなプロトコルをサポートしています。また、SQLクエリ/スクリプトの負荷テスト用の拡張機能もあります。
#4)レポートとアサーション
Gatlingは、実行されるシナリオの詳細なHTMLレポートを作成するためのサポートをすぐに提供し、シナリオ内の個々のリクエストにアサーションを適用する機能も備えています– 例えば、 応答時間、JSONコンテンツの検証など。
#5)フレンドリーなGUIベースのテストレコーダー
Gatlingには、Webブラウザでユーザーアクティビティまたはユーザーアクションを記録することによってシミュレーションスクリプトを生成できる、使いやすいグラフィカルテストレコーダーが付属しています。生成されたスクリプトはScalaベースのスクリプトであり、将来実行される可能性があり、要件に応じて変更できます。
テスト中のアプリケーションとサンプルスクリプトの記録
サンプルシミュレーションの作成には、 Gatlingが公式に提供するホスト型アプリケーション
Gatlingのシミュレーションレコーダーを使用して、負荷の作成とパフォーマンステストの実行を開始します。先に進む前に、テストをロードするシナリオについて説明しましょう。
このシナリオは、負荷テストを試みているユースケースです。これは基本的に、テストする必要のあるシナリオまたは一連のステップにユーザーアクションを模倣することを意味します。
例えば、 ユーザーがAmazon.comなどのeコマースWebサイトにアクセスして商品を検索し、カートに追加して、最後に支払い情報をチェックアウトするとします。
このユーザーアクション全体は、次のような個々のステップを含む単一のシナリオです。
- ウェブサイトAmazon.comに移動します。
- ページが読み込まれるのを待っています。
- 商品検索バーから商品を検索します。
- カートに商品を追加します。
- カートに行き、製品をチェックアウトします。
- 支払いをする。
この完全なシナリオの負荷テストをシステムまたはサーバーの観点から行うには、バックエンドサーバーに対して行われるのはコレクションまたは一連のAPI呼び出しにすぎないことを理解する必要があります。これが、パフォーマンステストで必要なことです。
この例では、Gatlingがホストするアプリケーションで以下のシナリオを使用します。
#1) 案内する ガトリングホストアプリケーション 。
#二) 「新しいコンピュータを追加する」をクリックします。
#3) 次の図に示すように、ドロップダウンから(コンピュータ名)を(Apple)、(会社名)を(AppleInc)として選択します。
#4) 詳細を入力したら、(このコンピューターを作成)をクリックします。
ガトリングレコーダーをセットアップし、最初のスクリプトを記録する
このセクションでは、前のセクションで説明したシナリオのシミュレーションを作成するためにガトリングテストレコーダーを設定する方法について説明します。
非常に単純な形式のガトリングシミュレーションレコーダー、HTTPプロキシを使用します。Fiddlerやchrome Httpプロキシなどの他のHTTP記録ツールに精通している必要があります。したがって、ガトリングレコーダーは変換の追加機能に似ています。テストシミュレーションスクリプトへの記録。
それでは、最初にガトリングレコーダーの設定方法を見てみましょう。
#1) Gatling zipフォルダーをインストールしたら、Gatlingをインストールする場所にフォルダーを解凍します。
ソフトウェアテスト履歴書サンプル2年の経験
#二) このステップの後、–という名前の2つの環境変数を設定する必要があります。 GATLING_HOME (ガトリングホームディレクトリ用)および GATLING_CONF (Gatlingのconfigフォルダーの場所用)。
OSの種類(Windows、Mac、Linuxなど)に応じて、 これらの環境変数を以下の値に設定します。
GATLING_HOME = {gatling-install-directory}
例:
GATLING_HOME=/Users/username/gatling-charts-highcharts-bundle-3.3.0/
GATLINE_CONF = {gatling-install-directory} / conf
例:
GATLING_CONF=/Users/username/gatling-charts-highcharts-bundle-3.3.0/conf
変数を検証するように設定したら、ターミナルで次のコマンドを押すだけです– エクスポート|グリップ「GATLING」 出力には、設定した2つの環境変数が表示されます。
#3) これらの環境変数を設定したら、Gatlingスクリプトレコーダーを起動する必要があります。 WindowsベースのOSの場合、Gatlingインストールで提供されるバッチファイルがあり、Linux / MacOSベースのOSの場合、シェルファイルが提供されます。
以下は、binフォルダーのファイル構造です。
#4) そのため、OSの種類に応じて、実行中のレコーダーに対して実行するファイルの種類を選択できます。ここで使用するファイルは2つあることに注意してください。
- Gatling.sh / Gatling.batファイル– シミュレーションスクリプトを実行します。
- Recorder.sh /recorder.batファイル– ガトリングシミュレーションレコーダーを実行/開く。
#5) レコーダスクリプトを実行して、ガトリングレコーダを開きます。 Mac / Linuxターミナルを使用してシェルスクリプトを実行します(またはWindowsバッチファイルを直接実行します)。
. /$GATLING_HOME/bin/recorder.sh
#6) 環境変数が適切に設定されている場合、上記のコマンドはガトリングスクリプトレコーダーを開く必要があります。
# 7) レコーダのHttp / httpsポート(デフォルトの選択は8000または8080)に注意してください。これは、GatlingのHttpトラフィックプロキシリスナーが構成されているポートです。都合に合わせてこのポート番号を変更できます(またはデフォルト値で続行できます)。
vrヘッドセットで見るビデオ
#8) 次に、このポートをリッスンするようにChromeプロキシを構成しましょう。つまり、基本的に、ブラウザからこのプロキシリスナーまたはレコーダーを介してHttpトラフィックをルーティングします。
これに従ってください リンク 異なるOSのChromeにプロキシを設定します。
#9) ポートが構成されたら、シナリオを実行します。 ガトリングホストアプリケーション。
#10) シナリオの実行を開始する前に、結果のテストスクリプトのパッケージ名とクラス名を構成してから、スクリプトレコーダーの(開始)ボタンをクリックするだけでプロキシリスナーを開始する必要があります。
#十一) プロキシレコーダが起動するとすぐに新しいウィンドウが表示され、基本的に、シナリオがブラウザで実行されたときに発生するすべてのリクエストがキャプチャされます。
#12) 案内する ガトリングホストアプリケーション ブラウザで。
リクエストがレコーダウィンドウに記録されていることがわかる場合は、ブラウザのプロキシ設定が正しく、実行中のテストシナリオに従ってガトリングレコーダがリクエストを記録できることを意味します(手順#に戻らない場合) 7ブラウザ/システムのプロキシ設定を修正します)。
#13) セットアップが正常に機能していることを確認したら、(クリア)をクリックしてレコーダーからすべてを削除し、 以下に説明するようにシナリオの実行を開始します。
- 案内する ガトリングホストアプリケーション
- 「新しいコンピュータの追加ボタン」をクリックします。ブラウザのURLが次のようになっている新しいコンピュータフォームにたどり着くようにしてください http://computer-database.gatling.io/computers/new
- 次に、フォームの値に–コンピュータ名をApple、会社名を「Appleinc」とドロップダウンから入力します。
- 「このコンピュータを作成する」をクリックすると、にリダイレクトされます ホームページ
- これは、Gatlingスクリプトレコーダーを使用して自動化スクリプトを実行および作成するシナリオ全体です。上記の手順を実行すると、レコーダーは行われているすべてのHTTP呼び出しをキャプチャし、次のようになります。
- 記録されたスクリプトには、いくつかの「一時停止」コマンドもあることに注意してください。これらは、レコーダーがユーザーのアクションを模倣するためにキャプチャする「思考時間」、つまり要求の間にかかる時間に他なりません。これらの値は、スクリプトが実行されると、実際の値に応じて構成/変更できます。
#14) スクリプトの作成を完了するには、レコーダーウィンドウの(停止して保存)をクリックします。
#15) シミュレーションスクリプトは、ガトリングレコーダの設定画面に表示されるディレクトリまたはシミュレーションフォルダに作成する必要があります。
シミュレーションスクリプトを理解する
実行されたシナリオのスクリプトが作成されたら、シミュレーションフォルダーに移動してスクリプトを開きます。
スクリプトは、レコーダーを起動する前に指定されたものと同じ構造のパッケージとして作成されることに注意してください。この場合は、次のようになります。 com.learn.gatling クラス名は 「addProduct」。
AddProduct.scalaファイルを開いて、スクリプトのさまざまなセクションを調べてみましょう。
これは次のように説明できます。
#1)セットアップ構成 :つまり、 httpプロトコルとヘッダー –このセクションでは、次のようなスクリプトのデータの全体的な構成が行われます。
- プロトコルのタイプ– Httpまたはhttps、
- 後続のリクエストで使用されるbaseUrlなどの他のもの。
- ヘッダー情報–一般的なヘッダー情報と個々のリクエストで送信されるヘッダー。 以下のコードスニペットのheader_0とheaders_2を参照してください。
val httpProtocol = http .baseUrl('http://computer-database.gatling.io') .inferHtmlResources(BlackList('''.*.js''', '''.*.css''', '''.*.gif''', '''.*.jpeg''', '''.*.jpg''', '''.*.ico''', '''.*.woff''', '''.*.woff2''', '''.*.(t|o)tf''', '''.*.png''', '''.*detectportal.firefox.com.*'''), WhiteList()) .acceptHeader ('text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8, application/signed-exchange;v=b3') .acceptEncodingHeader('gzip, deflate') .acceptLanguageHeader('en-GB,en-US;q=0.9,en;q=0.8') .upgradeInsecureRequestsHeader('1') .userAgentHeader('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36') val headers_0 = Map('Proxy-Connection' -> 'keep-alive') val headers_2 = Map( 'Origin' -> 'http://computer-database.gatling.io', 'Proxy-Connection' -> 'keep-alive')
#2)シナリオの定義: これには、実際のシナリオと、ブラウザウィンドウで実行されていたシナリオを再作成するために実行する必要のあるリクエストの順序が含まれています。
また、ここで注意すべき重要な点は、完全なURLではなく、リクエストの相対URLについて説明したことです。これは、使用するためです httpプロトコル構成 シナリオ構成データが定義されているポイント#1で説明しました。
val scn = scenario('AddProduct') .exec(http('request_0') .get('/computers') .headers(headers_0) .resources(http('request_1') .get('/computers/new') .headers(headers_0))) .pause(4) .exec(http('request_2') .post('/computers') .headers(headers_2) .formParam('name', 'apple') .formParam('introduced', '') .formParam('discontinued', '') .formParam('company', '1'))
#3)シナリオの実行: このセクションは、シナリオのセットアップ手順を含む最も重要なセクションです。
ここでの注入構成は、ユーザー/スレッドの数、つまり、このシナリオをテストするための負荷です。
ユーザー数のデフォルト値は常に1であり、シナリオを実行する前にこれを変更できます。
また、ポイント#1で説明したhttpProtocol定義も使用していることに注意してください。この定義には、実行するシナリオのすべての基本構成が含まれています。
setUp(scn.inject(atOnceUsers(1)))。protocols(httpProtocol)
次のチュートリアルでは、注入とロードの構成に関する詳細を見ていきます。
シミュレーションスクリプトを使用したテストの実行
次に、レコーダーを使用して作成されたこのシミュレーションスクリプトを使用してシナリオを実行する方法を説明します。作成される結果のスクリプトは、実際には、ブラウザーを介して実行されたシナリオに関する詳細を含むScalaベースのクラスです。
Gatling ScriptExecutionのビデオチュートリアルは次のとおりです。
Gatlingのインストールには、このシミュレーションの実行に使用できるシェルスクリプト(Windowsユーザーの場合はバッチスクリプト)が付属しています。
作成したシミュレーションを実行するには、以下の手順に従ってください。
#1) Gatlingインストールのbinフォルダーに移動するか、単に–に移動します。 $ GATLING_HOME / bin
#二) Linux / Mac osの場合はGatling.shファイル(Windowsユーザーの場合はGatling.batファイル)を実行します。
#3) シミュレーションフォルダに複数のスクリプトファイルが存在する場合、スクリプトは、ユーザーが実行するシミュレーションを選択するようにユーザーに促します(これをシミュレートするには、異なるパッケージで同じシナリオを作成し、Gatlingスクリプトを実行するときに次のことができます。 2つの異なるスクリプトが表示されることを確認してください)。
#4) シミュレーションが選択されます(または、使用可能なシミュレーションスクリプトが1つしかない場合は、フォルダーに存在するシミュレーションがデフォルトに設定されます)。
#5) スクリプトは、オプションの実行の説明を追加するように要求するようになりました。これを無視してEnterキーを押すだけで、シミュレーションの実行を開始できます。
#6) シミュレーションの実行中に、実行レポートが端末に出力され、シナリオの実行が完了すると、応答時間、合計要求、成功/失敗などのパラメーターの要約ビューが表示されます。
# 7) ガトリングは、シナリオの実行完了時に、実行されたシナリオに関して多くの異なるデータポイントを含む詳細なHTMLベースのレポートも生成します。
次のチュートリアルでは、生成されたレポートの詳細を調べます。
ガトリングを使用する利点
Gatlingは、幅広いGatling DSLを活用する優れたパフォーマンス自動化テストスイートを構築するために、多くの機能豊富な機能を提供し、支援に対するコミュニティのサポートを拡大し、クエリに回答します。
ここで重要なのは、JMeterのような他のツールとは異なり、Gatlingは急な学習曲線を必要としますが、その代わりに、堅牢で完全に機能する一連のパフォーマンスおよび負荷テストシミュレーションスクリプトを作成するための多くのプログラミング機能を提供します。
これらの利点のいくつかは次のとおりです。
- 軽量であり、スレッドがユーザーと同等である他のほとんどのパフォーマンスツールとは異なり、単一のスレッドを複数のリクエストに使用できます。
- 複数のリクエストに単一のスレッドを使用すると、Gatlingは、単一のマシン上でも、より多くのスケーリングとより大きな負荷を生成できます。
- ガトリングは、シミュレートする必要のある大きな負荷がある場合に分散モードで実行する機能を提供します。
- HTTP以外の多くの他のプロトコルのサポートを提供します。例えば、Websocket、MQTT、JDBCなどはすべて、Gatlingを使用してパフォーマンステストを行うことができます。
- Gatlingは、機能豊富なDSL –ドメイン固有言語を提供します。これは、構文が簡単で、シミュレーションスクリプトを作成するために組み合わせると強力な機能を提供します。
- また、構造のループ、思考時間のシミュレーション、目的のRPSを超える要求の調整など、多くの複雑なシミュレーション制御機能を提供します。
- すぐに使用できる豊富なレポート機能があり、要件に応じてカスタマイズすることもできます。
結論
このチュートリアルでは、選択した負荷テストツールとしてガトリングを使用する基本について触れました。表現力豊かなDSLとHTTPプロトコルの優れたサポートにより、Gatlingは急速に人気を博しており、多くの人が選択するツールとして使用されています。
また、サンプルのシミュレーションスクリプトを使用して、ガトリングレコーダーとガトリングスクリプトランナーについて学習しました。これは、ガトリングスクリプトエグゼキューターを使用して将来実行できるシミュレーションスクリプトを記録するという基本的な概念を理解するのに役立ちました。
次のチュートリアルでは、GatlingスクリプトをScalaプロジェクトとして作成する方法について説明します。つまり、レコーダーを使用せずに、Gatlingがシミュレーションの実行を完了したときに生成されるレポートテンプレートを理解します。