4.1.負荷試験の実行
負荷試験の実行には以下の3つの形式があります
- シナリオ選択形式 事前に作成したシナリオを用いた試験
- シナリオファイルのアップロード形式 以前の試験履歴から生成されるシナリオファイルをアップロードすることにより、試験設定を再現
- シナリオファイルのzipファイル利用 zipファイルに含まれるシナリオファイルをアップロードすることにより、試験設定を再現
- GitHubリポジトリ選択形式 シナリオファイルのGitHubリポジトリを用いた試験 GitHubとアカウント連携する必要があります
シナリオ作成後、シナリオを選択肢して実行タブで負荷試験内容の項目を入力してシナリオ実行を押下すると負荷試験が実行されます。
シナリオ/アクションリストid: どのシナリオを実行させるかを指定します負荷試験: 試験時に利用するツールを指定します同時実行ユーザー数: 同時アクセスさせるユーザー数を指定しますユーザー増加時間: 同時実行ユーザー数になるまでの時間を指定します(開始直後は1ユーザー)負荷テスト時間: 負荷試験を行う時間を設定します対象ホスト: 試験試験をかける対象のホストを指定しますワーカー数: 負荷試験のツールを実行するサーバーの台数を設定します
この形式ではJMeterまたはLocustのシナリオファイルをアップロードして負荷試験を実行することができます。 Mx.Loadからダウンロードしたシナリオファイルを再利用することとも、他の場所で作成したファイルを使用することも可能です。
負荷試験のシナリオファイルをアップして実行タブからシナリオをアップロードすると、シナリオファイル内容にファイルの内容が表示されます。必要に応じてここで編集を行います。
その後、シナリオ実行を押下すると負荷試験が実行されます。
ファイルアップロードを伴う試験では、シナリオファイル以外にアップロード用の外部ファイルが別途必要になります。 外部ファイルを利用するには次のようにします。
- シナリオ内のファイルパスにファイル名のみ記述する
- 事前に同名のファイルを リソースのアップロード からアップロードしておく
例えばJMeterでは以下のように、
File.pathにファイル名のみを指定します。<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Sample Request" enabled="true"> <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs"> <collectionProp name="HTTPFileArgs.files"> <elementProp name="sample.txt" elementType="HTTPFileArg"> <stringProp name="File.mimetype">text/plain</stringProp> <stringProp name="File.path">sample.txt</stringProp> <stringProp name="File.paramname">user[file]</stringProp> </elementProp> </collectionProp> </elementProp>また、GUIインターフェイスを用いる場合は以下のように
Files Uploadタブに記載することで試験で使用することができます。![]()
この形式ではシナリオファイルを複数のファイルで管理している場合にzipファイルによるシナリオファイルをアップロードもサポートしています。
JMeterでの実行の場合、.jmxのシナリオファイルに加えて、テストで使用する各種ファイルをzipにまとめることにより負荷試験が実行可能です。
例えばシナリオファイル.jmxと.jpgや.csvなどをzipファイルにまとめることができます。
test_jmeter.zip
└ sample_scenario.jmx
└ dummy.png
└ users.csv
なお、複数のjmxファイルを配置すると正常に動作しませんので、単一のjmxファイルのみをzipに含めてください。
各ファイルの利用方法は、前述の「外部ファイルを利用する方法」を参考にしてください。各ファイルへのアクセスは、jmxファイルからの相対パスとなります。
Loucstでの実行の場合、.pyのシナリオファイルをzipにまとめることにより負荷試験が実行可能です。
例えば複数のシナリオファイルの.pyをzipファイルにまとめることができます。
test_locust.zip
└ main.py
└ scenario1.py
└ scenario2.py
zipでの実行ではメイン実行の.pyファイルを用意します。(上記の例ではmain.pyがメイン実行ファイルです)
メイン実行ファイルでそれぞれ分割しているシナリオの.pyファイルをimportして扱います。(上記の例ではmain.pyで「scenario1.py, scenario2.py」をimportしています)
メイン実行ファイルを用意した上でシナリオ毎に.pyファイル分割してzipに圧縮して頂くことで利用が可能です。
なお、メイン実行ファイルはアップロードされたzipファイル内から検索をするため、以下の注意点があります。
.pyファイル内に「__main__」の記載がある場合はそのファイルがメインの実行ファイルとして扱われます。
- 「
__main__」記載がある.pyファイルが複数ある場合は正しくメインファイルが実行されず正常に動作しない場合があります、「__main__」記載はメインファイル1つのみ用意ください。
.pyファイル内に「__main__」の記載が無い場合は各ファイルを検索しimportで他ファイルを全て宣言しているファイルを探し該当するファイルをメインの実行ファイルとして扱われます。- 上記に該当しない場合はデフォルト設定としてファイル名が「
main.py」ものがメインの実行ファイルとして扱われます。
以上に該当しない場合はメイン実行ファイルを用意していないと扱われ、正しく負荷試験が行えません。
以下はLocust/Jmeterに関わらず、ファイル圧縮に伴う注意点です。
- .zip以外の圧縮形式はサポートしておりません。
- zipファイルの圧縮ではシナリオや実行に関係の無いファイルを含めないようにしてください。
zipファイルは解凍時に試験用ファイルが直下に解凍されることが条件となります。具体的には、下記のように解凍時にディレクトリが解凍され階層が増えてしまう場合は動作の対象外となります。
invalid_test_dir.zip
invalid_test_dir/ # 階層が多い
└ main.py
└ scenario1.py
└ scenario2.py
GitHubリポジトリ選択形式で実行するには、GitHubとアカウント連携する必要があります。
サイドメニューのアカウントを選択して表示されるアカウント画面から、外部サービスのGitHubを設定を押下すると、GitHubの画面に遷移します。
遷移先の画面でAuthorize buuurst-devを押下し、アカウント連携を行います。
Mx.Loadの画面に遷移し、SNSアカウントでメールアドレスが非公開となっていますと表示された場合、GitHubユーザーページのEdit profileより、メールアドレスの公開を行なってください。
任意のリポジトリを作成し、リポジトリのルート階層にシナリオファイルを作成します。ファイル名は任意の名前で構いません。
負荷試験のGitHubリポジトリを指定して実行タブにて、Organization、リポジトリ、ブランチを選択します。
パラメータを設定し、シナリオ実行を押下すると負荷試験が実行されます。
負荷試験実行時はアクセス送信元のIPアドレス35.79.136.243から負荷試験対象ホストにアクセスされます。