SaaSでいこう!なブログ

無償で試せる負荷テスト SaaS、CA BlazeMeter(通称:JMeter on クラウド)の使い方や技術Tipsなど

(Private Location を試す前準備として)APIキーの生成

お疲れ様です。さて今回は、BlazeMeterでAPIキーの生成方法をご紹介します。APIキーは、BmazeMeterの諸機能にAPIからアクセスしたいとき必要になります。なぜいま記事にしたかというと、さしあたって次回、負荷をかけたい対象サーバがFireWallの内側(オンプレミスサーバ)に対して BlazeMeter で負荷をかける方法(Private Location)を紹介したいと思っており、そこでAPIキーが必要になるため、前準備として紹介します。

1.APIキーを生成

BlazeMeterの画面右側「Settings」をクリック、次いで左メニューから「API Keys」をクリック。まだ1つも生成していないので「You currently have no API keys」と出ています。その下、青い「+」アイコンをクリックすると、APIキーが生成されます。

f:id:hironishino:20170808161639p:plain

Nameのフィールドに適当な名前を与え、「Generate」をクリック

f:id:hironishino:20170808161936p:plain

2.シークレットキーの保管

APIキーが生成され、以下画面が表示されます。ここで!API Key Secret(赤枠内)を必ずコピペして保管しておいてください。API Key Secret は、この画面を閉じた後は永遠に見ることができません!

f:id:hironishino:20170808162115p:plain

これでAPIキーの生成は完了です。

実際にAPIキーを(APIコールで)使用するときは、コピペしておいた「API Key Secret」と「API Key Id」の2つの情報が必要になります。

 

今回はわざわざ解説するまでもない簡単な内容でしたが(汗)、API Key Secret だけは二度と表示できないので、そこだけ要注意です。

 

負荷テスト実行中に JMeter パラメータ値を動的に変更

みなさまお疲れ様です。さて、当ブログでシリーズでお届けしております CA BlazeMeter チュートリアルですが、前回(CA BlazeMeter で JMeter テストを実行 - SaaSでいこう!なブログ)までで、いわゆる Hello World レベルまで漕ぎ着けましたので、今回はTips的なことを書いてみたいと思います。

JMeterの変数(プロパティについて)

JMeterスクリプトの中に変数を定義できます。${ABC}のような感じに書きます。変数の中でもプロパティというのがあり、${__P(ABC)}と書きますが、このABCの値をコマンドライン実行時引数でスクリプト外部から与えることができます。もしこの値をテスト実行中に動的変更できれば、例えば「ターゲットスループット」の値をプロパティにしておき、実行中に徐々にスループットを高めていくことで、性能キャパシティの上限を容易に見つけることができます。

私の知る限りJMeter単品ですと実現が難しいと思うのですが、CA BlazeMeterであればいとも簡単に実現できますのでご紹介します。

 

1.JMeterスクリプトJMX)にターゲットスループットを設定

JMeterJMXを開き、「定数スループットタイマ」を追加します。下図は、前回記事(CA BlazeMeter の Chromeプラグインで JMeter スクリプト(JMX)を速攻で生成 - SaaSでいこう!なブログ)でレコーディング生成したJMXJMeter 3.2で開いています。

f:id:hironishino:20170721162837p:plain

ターゲットスループット(サンプル数/分)の欄に、${__P(HITS)}と入力(アンダーバーは2回連続で)

f:id:hironishino:20170721153350p:plain

JMXを別名で保存します。(例:MY-TEST2.JMX

2.編集後の JMeterスクリプトを CA BlazeMeter にアップロード

下図のように CA BlazeMeter にアップロードおよび設定をします。
(※この画面の出し方や設定の意味が判らない方(いきなりこのページにジャンプしてこられた方)は、過去記事(CA BlazeMeter の Chromeプラグインで JMeter スクリプト(JMX)を速攻で生成 - SaaSでいこう!なブログ)で解説していますのでそちらを参照ください)

f:id:hironishino:20170721154040p:plain

今回はSandBoxを使いましょう。これなら無償アカウントのテスト実行回数は消費されません。(という話について詳しくは過去記事:無償アカウントの制限 - SaaSでいこう!なブログを参照)

3.CA BlazeMeter のオプション設定で、JMX内のプロパティを設定

JMeter Properties」をクリック

f:id:hironishino:20170721154715p:plain

 

KEY欄にHITS、VALUE欄に6.0を入力し、「Apply」クリック

f:id:hironishino:20170721154940p:plain

これはつまり、初期値は 6ヒット//スレッド(スレッド=バーチャルユーザだと思ってください)のターゲットスループットで負荷テストがスタートすることになります。あとで実行中にこの値を5倍にしてみて変化を見てみたいと思います。

これで設定終わりです。「Save」をお忘れなく。

f:id:hironishino:20170721155948p:plain

4.負荷テスト実行

f:id:hironishino:20170721160121p:plain

f:id:hironishino:20170721160824p:plain

実行モニタを見ていると、だいたい「2ヒット/秒」前後のスループットになっています。さっき 6 で設定したのに何故?かというと、

  • 先ほどの設定は「/分」 → ここでの表示は「/秒」
  • 先ほどの設定は1VUあたり → ここでは全VUの合計(20VUで実行中)

という違いがあるからです。換算すると、

  6 × 20VU ÷ 60s = 2 (hits/s)

ということで、目論見どおりのスループットになっております。

5.ターゲットスループット値をテスト実行中に動的変更

テスト実行中(テスト期間3分ですから急いでくださいね!)に、「Remote Control」をクリック

f:id:hironishino:20170721161435p:plain

ポップアップが表示されますので、初期値「6.0」を、5倍の「30.0」に書き換えて「Send」をクリック

f:id:hironishino:20170721161542p:plain

f:id:hironishino:20170721161653p:plain

実行モニタを見てみると・・・

f:id:hironishino:20170721162132p:plain

確かにターゲットスループットが動的変更されたことがわかります。ちなみにスループットが5倍になっても応答時間(右グラフのオレンジ線)には変化がないことから、性能キャパシティはまだ充分にある、と判断できそうですね。

今回はパラメータ動的変化の一例としてターゲットスループットを取り上げましたが、JMeter はプロパティ変数をいたるところで使えるわけですから、いろいろな応用が可能ですね。

 

CA BlazeMeter で JMeter テストを実行

いままでの記事は、CA BlazeMeter の無償アカウントサインアップ手順やChromeプラグインを使ったJMeterスクリプトJMX)の超簡単生成など事前準備な話ばかりでしたが、いよいよJMeterテストを実行してみます。

では早速、CA BlazeMeter にサインインします。

f:id:hironishino:20170719093216p:plain

こんなダッシュボードが出ます。CA BlazeMeterのメイン画面です。メニューバーにある「Create Test」をクリック。

f:id:hironishino:20170719093417p:plain

いろいろ面白そうなテストタイプがあって興味をそそられますが、今回は JMeter テストをクリック

f:id:hironishino:20170719093527p:plain

JMeterテストのコンフィギュレーション画面が開きます。まずは手元のJMXファイルをドラッグドロップでアップロードします。
(上図は前回記事CA BlazeMeter の Chromeプラグインで JMeter スクリプト(JMX)を速攻で生成 - SaaSでいこう!なブログChromeプラグインJMX生成&ダウンロードした直後の状態なのでダウンロードにJMXファイルがありますが、ふつうにWindowsエクスプローラからドラッグドロップでもOKです)

ここで簡単に画面の説明をしておきます。まず画面右側はLoad Configuration(負荷設定)ペインです。以下に拡大。

f:id:hironishino:20170719093934p:plain

この設定を言葉で言うと、

  • 20人のユーザが20分間、無限繰り返しでWeb操作(JMeterスクリプト)を行う。
  • いきなり最初から20人アクセスではなく開始後300秒かけて徐々に20人に到達する(ランプアップ)。
  • 負荷は、米国アイオワ州にあるGoogleクラウドサーバのインスタンスからかかる(ロードジェネレータ)

こんな感じです。ちなみにJMX内にも同様の設定が(スレッドグループに)ありますが、CA BlazeMeterはデフォルトではそっちは見ず、こっちの設定を見ます。(2017/07/25追記:JMX側の設定を優先する方法はこちら

あと「SandBox Mode」のチェックボックスをオンにすると、SandBoxというシェアード(共有)のロードジェネレータが使われます。これを選ぶ意義はライセンス上のテスト回数が「目減り」しないことに尽きます(過去記事:無償アカウントの制限 - SaaSでいこう!なブログを参照)。お試し実行目的にもってこいです。
一番上の「Run as Functional API test」は最近追加された機能で、負荷テストではなく機能テストを行うモードです。機能テストはそのうち別の記事にしたいと思っていますが、端的な違いを言うと、テスト結果として要求/応答電文まで収集してくれる点です。

画面説明を続けます。画面左下はオプション設定です。

f:id:hironishino:20170719095927p:plain

項目名でだいたいどんなオプションか直感でわかると思いますが、ここはオプションなので、何も設定しなくてもとりあえず動きます。使い込んでいくうちに、これらを上手く使っていくことになると思います。1つだけ紹介しておくと、「JMeter Properties」はJMX内のプロパティ(${__P(HIRO)}みたいな)をここから設定できます。しかも負荷テスト実行の最中に、この値をブラウザから動的に書き換え可能です!例えばJMX内のターゲットスループットの値をプロパティにしておけば、CA BlazeMeter は負荷テストの最中に、「もうちょっとスループットを上げてみよう」みたいな動的な調節ができちゃう(詳細はコチラということです。これは JMeter だけでは実現が難しいところなので、CA BlazeMeter の特徴の1つだと思います。
その他のオプションとしては、APM連携も面白いです。これは本当に面白いので、そのうち独立した記事にしようと思っています。ネットワーク帯域エミュレーションは、モバイル端末からの負荷を模擬させるとき便利そうです。

 

・・・さて画面の説明で長々と書いてしまいました。JMeterテスト実行手順に戻ります。

すでにJMeterスクリプトJMXファイル)はアップロード済みですか?下図のようになっていればOKです。
f:id:hironishino:20170719101801p:plain

画面左上の「Enter name」というところに、「MY-FIRST-TEST」と入力

f:id:hironishino:20170719101951p:plain

負荷設定の「Originate load from:」プルダウンで、せっかくなのでTokyoのAWSインスタンスを選んでみます。(テスト回数は消費されます。でもまあ10回もあるのですから気にせずどーんといきましょう!w)

f:id:hironishino:20170719102313p:plain

 

スライダーの設定項目はデフォルトでも良いのですが、せっかちな私は20分も待ってられないので、Durationを3(分)、ランプアップを20(秒)にしました。

f:id:hironishino:20170719102635p:plain

「Save」をクリック

f:id:hironishino:20170719102903p:plain

いよいよテスト実行です。実行ボタン(緑の三角ボタン)をクリック

f:id:hironishino:20170719103053p:plain

「Launch Servers」をクリック

f:id:hironishino:20170719103219p:plain

あなたの負荷テストのために(有償アカウントだと、あなたのためだけに)AWSの東京リージョンのインスタンスが起動している最中です。100%になるまで3分くらいかかります。

f:id:hironishino:20170719103639p:plain

インスタンスが起動したら、負荷テストが始まります。グラフやメトリックはリアルタイムで表示されます。ステキですね!

f:id:hironishino:20170719103904p:plain

テストが終了すると、メールにも結果サマリが届きます。
ブラウザからテスト結果サマリを見てみましょう。画面右上の「Exective Summary」をクリック

f:id:hironishino:20170719105206p:plain

これを保存しておけば、テストエビデンスになりますね。

これで CA BlazeMeter を使った初めての JMeter テストは完了です。
かなり簡単だと思いませんか?テストはテスト自体が重要なのであってテストツールは息をするみたいに簡単あたりまえに使えるべきだと思っているのですが、けっこうそれに近いんじゃないかなと私的には思います。

 

おまけ

f:id:hironishino:20170719105724p:plain

1回分消費!w

 

CA BlazeMeter の Chromeプラグインで JMeter スクリプト(JMX)を速攻で生成

CA BlazeMeter は通称「JMeter on クラウド」とも言われてまして、BlazeMeterお試しに際して、まずは  JMeter スクリプト(拡張子がJMXのファイル)を用意したいと思います。

ところでみなさんは、どのようにJMXを生成していますか?JMeterのWebプロキシー機能でレコーディング生成されている方も多いかと思います。今回ご紹介するのは、もっと簡単お手軽にJMXを生成する方法で、Chromeプラグインを使って直接JMXをレコーディング生成します。

まずはChromeを使って、Google検索で「blazemeter chrome」あたりのキーワードで検索してください。おそらく最上位に、

f:id:hironishino:20170718154210p:plain

こんなChromeウェブストアがヒットすると思います。

f:id:hironishino:20170718154337p:plain

このChromeプラグインは CA BlazeMeter が無償で公開しています。太っ腹ですね。ではさっそく「Chromeに追加」してみてください。

f:id:hironishino:20170718154617p:plain

こんなボタンが現れたと思います。とりあえず押してください。

f:id:hironishino:20170718160456p:plain

JMXスクリプト生成機能を使うにはCA BlazeMeterへのログインが必要です。「Login」をクリックして、以前の記事(サインアップ - SaaSでいこう!なブログ)でサインアップしたアカウントでログインしてください。

 

f:id:hironishino:20170718160652p:plain

ログインすると、「Hi あなたの名前」という表示になります。隣の「×」はログアウトです。準備完了したのでJMXを生成していきましょう。

 

1.Chromeでレコーディングしたいサイトにジャンプ

どこでも良いのですがとりあえず今回は http://blazedemo.com を使いましょう。
(このサイトはCA BlazeMeterお試し用に公開されているサイトです)

 

2.プラグインのボタンをクリック

f:id:hironishino:20170718160846p:plain

  1. 「ENTER THE NAME OF THE TEST」に何か適当な名前を入力(上図ではMY-TEST)
  2. レコーディング「」ボタンをクリック
  3. ここから打鍵していきます。
    ・「Find Flights」をクリック
    ・遷移した画面(フライト一覧)でどれかの「Choose This Flight」をクリック
    ・「Your Flight XXX to YYY has been reserved」画面に遷移する。
    ・画面左上の「Travel The World」クリックしてトップ画面に戻る
  4. プラグインボタンに、下図のように数字が表示されていると思います。これは今の打鍵操作に伴って3つのHTTPリクエストを記録しましたよ、の意味です。

    f:id:hironishino:20170718155840p:plain

  5. ここまでの内容でJMX生成したいと思います。プラグインボタンを押します。
  6. レコーディング停止ボタン「」をクリック

    f:id:hironishino:20170718161052p:plain

  7. 「.jmx」ボタンをクリック

    f:id:hironishino:20170718161158p:plain

  8. JMXファイルがダウンロードされます。これでJMX生成完了です。

    f:id:hironishino:20170718161347p:plain

 

JMXですから、もちろんのことお手元のJMeterで開いて編集可能です。
また、このJMXを CA BlazeMeter にアップロードすれば、すぐにクラウドから負荷テストを実行することもできます。その手順は次の記事(CA BlazeMeter で JMeter テストを実行 - SaaSでいこう!なブログ)でご紹介したいと思います。

 

 

 

 

 

 

 

CA BlazeMeter のマニュアル

インターネットでばばーんと公開されています。

http://guide.blazemeter.com

f:id:hironishino:20170718151115p:plain

残念ながら今のところ英語のみです。ただ、語学堪能なGoogle先生の力を借りると・・・

f:id:hironishino:20170718151258p:plain

おおお!なかなかいい感じに翻訳されますね。賢いぞGoogle先生。ちなみにこの「入門」というセクションですが、かなりわかりやすいです。ぜひ眺めてみてください。
(正直これがあれば、私のブログなんて存在価値無いんじゃないかと思っちゃったりするのですが・・・誰か私を励ましてくださいw)

無償アカウントの制限

無償で試せるCA BlazeMeterですが、無償アカウントには一定の制限があります。

  • テスト実行は10回まで
  • テスト実行時間は最大20分まで
  • バーチャルユーザー(負荷掛けの多重度)は50まで
  • レポート保持期間は7日まで
  • 使えるロードジェネレータはシェアード(共有)のみ

無償利用は基本的に評価目的だと思うので、これら制限はあまり問題にはならないと思いますが、1つ目(テスト実行は10回まで)は、いろいろ試していくうちにうっかり枯渇してしまわないように、少し気をつけたほうが良いかもしれません。

この枯渇に関してですが、(そのうち詳しく触れようと思いますが)ロードジェネレーターで「Sandbox」を選んでおくと、この10回が消費されません。すてきですね!でもそのかわり、Sandboxは不特定多数のユーザにより共有されますので誰かが盛大に負荷掛けしていると影響を受けるかもしれない(結果が精緻とはいえない)のと、ロケーション(東京とか北米とか)も選べません。・・・が、まずは慣れるためなので問題なしでしょう。

最後の項目(使えるロードジェネレータはシェアードのみ)は何のことかというと、テスト実行回数の枯渇を伴う実行(つまりSandbox以外のリアルなロードジェネレータを選択)した場合でも、そのロードジェネレータは確かにそのロケーションのものですがインスタンスは共有になるという意味で、結果の精緻さにはやはり専用インスタンス(つまり有償版)の出番ということになります。

 

現在のテスト実行回数の残りを確認する方法

f:id:hironishino:20170718142313p:plain

CA BlazeMeterにサインインして画面右上の「▼」「Settings」、画面左メニューの「Billing」をクリックすると、上の画面が表示され、「Remaining Tests」のところに残数が出ます。拡大したのが下図です。ちなみに先述した無償アカウントの制限もここで確認できます。

f:id:hironishino:20170718142636p:plain

 

各プランの詳細

上の画面で「Upgrade」をクリック、次いで「Compare Plans」リンクをクリックすると、以下のようなプラン別の差異を確認できます。無償アカウントは「Free」です。

f:id:hironishino:20170718150201p:plain

 

 

サインアップ

CA BlazeMeter を無償でお試しするためにはサインインが必要ですので、まずは新規サインアップをしましょう。電子メールアドレスさえあれば3分とかからず完了します

1.http://www.blazemeter.com にアクセスし、「SIGN IN」をクリック

f:id:hironishino:20170718131629p:plain

 

2.「SIGN UP」をクリック(もちろん、Googleアカウントでサインインされても構いませんが、ここでは新規サインアップする手順を紹介します) 

f:id:hironishino:20170718131740p:plain

 

 3.名前、苗字、電子メールアドレスを入力し「SIGN UP」クリック

f:id:hironishino:20170718132611p:plain

 

4.サインアップ完了。ここでいきなりURLを入力して速攻お試し負荷テストも可能ですが、楽しみは後にとっておいて「Skip Wizard」をクリック

f:id:hironishino:20170718133021p:plain

 

5.サインイン状態でBlazeMeterメイン画面が表示されます。

f:id:hironishino:20170718133638p:plain

 

6.ここで「あれ?パスワードを設定していないゾ?」とお感じになられたかもしれません。その通りで、登録した電子メールアドレスのアクティベートが必要です。以下のようなメールが届いているはずです。

f:id:hironishino:20170718133916p:plain

 

7.メールの「set your password」をクリック

f:id:hironishino:20170718134134p:plain

 

8.設定したいパスワードを入力して「UPDATE PASSWORD」クリック。(ある程度強度の高いパスワードでないと怒られます。詳細は画面の説明を参照)

f:id:hironishino:20170718134330p:plain

 

これでサインアップは完了です。
次回はさっそくBlazeMeterを使ってJMeterテストを行っていきたいと思います。