1. 使用方法
    1. 簡単な使用方法
      1. 1.jmeter.batを起動
      2. 2.スレッドグループの追加
        1. テスト計画→追加→スレッドグループ
          1. スレッド数(≒クライアント数)などを設定する
      3. 3.リクエスト初期値設定の追加
        1. スレッドグループ→追加→設定エレメント→HTTPリクエスト初期値
          1. サーバ、ポートなどの共通を設定しておく
      4. 4.サンプラーの追加
        1. スレッドグループ→追加→サンプラー→HTTPリクエスト
          1. パスなどを指定する
      5. 5.リスナーの追加
        1. スレッドグループ→追加→リスナー→(見たい結果に合わせて選択)
      6. 6.実行(Ctrl+R)
      7. 7.リスナーが更新されるため参照
    2. プロキシサーバとして ブラウザ操作からシナリオ作成
      1. 1.jmeter.batを起動
      2. 2.スレッドグループの追加
      3. 3.リクエスト初期値設定の追加
        1. ホストなどの共通を設定しておくと後から変更が簡単
      4. 4.記録コントローラの追加
      5. 5.HTTPプロキシサーバの追加
        1. 対象となるコントローラに4.を指定(デフォでも可能だが1つにまとめたほうが楽)
        2. ヘッダが不要なら「HTTPヘッダの取り込み」を取り込まないとする
        3. 画像, js, cssが不要なら除去パターンに.*\.pngのように指定する
      6. 6.ブラウザのプロキシを5.のサーバに設定変更する(デフォならlocalhost:8080)
      7. 7.HTTPプロキシサーバ画面の開始を押下し、ブラウザで操作開始
      8. Tips
        1. 「HTTPヘッダの取り込み」とすると、サンプラーごとにヘッダが設定される
        2. 「全てのイメージとアプレットを繰り返しダウンロードする」のチェックを行った場合、 サンプラーの該当項目にチェックが入って作成される
          1. プロキシでブラウザ記録した場合、全ての項目のサンプラーが作成されるため チェックを行わないか、記録対象を絞る必要がある。
        3. IEの場合であれば、Fiddlerなどで実際にリクエストを比較する方法もあり
    3. リモート実行 複数台のPCでの実行
      1. 実行する側
        1. jmeter-server.batを実行しておく
      2. 管理する側
        1. 1.jmeter.propertiesのremote_hostsに実行するサーバを指定する
        2. 2.jmeter.batで通常通り起動する
        3. 3.シナリオを作成
        4. 4.実行時にリモート開始を実行する
      3. Tips
        1. ファイルからパラメータを取得している場合には、実行する側の環境に必要
  2. Tips
    1. リスナーのクリア
      1. メニューから実行→全て消去
    2. リクエスト、レスポンスの確認
      1. リスナーに「結果をツリーで表示」で確認
    3. 複数のサンプラーでの共通設定
      1. 設定エレメントの「HTTPリクエスト初期値設定」を利用
    4. Cookie利用
      1. 設定エレメントの「HTTPクッキーマネージャ」を追加
    5. 前画面の内容を利用
      1. 正規表現抽出
      2. HTMLリンクパーサ
    6. 動的パラメータ利用
      1. 関数の__StringFromFile
        1. 1行1ファイル1項目のみ
      2. 関数の__CSVRead
        1. 1行ファイル複数項目
      3. 設定エレメントのCSV Data Set Config
      4. カウンタ利用
      5. ユーザパラメータ利用
    7. SSL
      1. javaのバージョンによっては設定不要
      2. オプション→SSLマネージャから%JAVA_HOME%\lib\security\cacerts
    8. 一定時間継続実行させたい
      1. 無限ループと、スケジューラを利用
      2. ループし続けるため、負荷がとてもかかる
        1. タイマなどで制限を掛ける
    9. ファイルに日付を含めたい
      1. time関数を利用
      2. result_${__time(YMDHMS)}.txt
    10. 保存したjmxを開くとツリーが展開されたまま
      1. jmeter.propertiesの設定で回避可能
    11. キーボードショートカット
      1. Ctrl+O
      2. Ctrl+S
      3. Ctrl+L
      4. Ctrl+.
      5. Ctrl+E
        1. 消去
      6. Ctrl+Shift+E
        1. 全て消去
      7. Ctrl+R
        1. 実行
      8. Ctrl+-
        1. ツリー展開
      9. Ctrl+Shift+-
        1. ツリー折りたたみ
  3. 設定
    1. jmeter.batの設定
      1. ヒープサイズ
        1. set HEAP=-Xms256m -Xmx256m
        2. 足りない場合には、OutOfMemoryError発生
    2. 起動時オプション
      1. 共通
        1. -h:ヘルプ
        2. -v:バージョン
        3. -p:プロパティファイル
        4. -q:追加のプロパティファイル
        5. -t:テスト計画ファイル指定
        6. -l:結果ファイル指定
        7. -s:サーバ
      2. プロキシ関連
        1. -H:プロキシホスト
        2. -P:ポート
        3. -N:プロキシ利用しないホスト
        4. -u:ユーザ
        5. -a:パスワード
      3. プロパティ関連
        1. -D:Javaシステムプロパティ
        2. -J[プロパティ名]:ローカル、${__P(プロパティ名)}で参照可能
        3. -G[プロパティ名]:全てのリモートで共有
        4. -L:ログのプライオリティ
      4. CUI関連
        1. -n:コンソール実行
        2. -j:ログ
        3. -r:remote_hosts設定のサーバに対してテストを実行
        4. -R:リモートサーバ一覧
        5. jmeter-n.cmdにテスト計画ファイルをドラッグ
    3. 設定ファイル
      1. jmeter.properties
        1. 共通
          1. language
        2. Look and Feel configuration
          1. jmeter.laf
          2. GUI設定
        3. Results file configuration
          1. jmeter.save.saveservice.timestamp_format
          2. jmeter.save.saveservice.url
          3. jmeter.save.saveservice.requestHeaders
          4. jmeter.save.saveservice.output_format
        4. Remote hosts and RMI configuration
          1. remote_hosts
          2. リモート実行時のサーバ
          3. server_port
        5. Miscellaneous configuration
          1. onload.expandtree
          2. jmx読み込み後のツリー展開
          3. jmeter.expertMode
        6. CookieManager
          1. CookieManager.delete_null_cookies
          2. null値クッキー
          3. CookieManager.save.cookies
          4. クッキーを保存(jmeter内で参照できるようにするか)
  4. JMeterの項目
    1. テスト計画
      1. 各スレッドグループを別々に実行
        1. 未チェック時は、スレッドグループを並行実行
        2. チェック時は、上から順番に実行
    2. スレッド
      1. スレッドグループ
        1. スレッド数
          1. クライアント数
        2. Ramp-Up期間
          1. スレッド数を全て生成するまでの期間
        3. ループ回数
          1. 各スレッドの繰り返し数
        4. 無限ループ
        5. スケジューラ
          1. 持続時間
      2. setUp
        1. 全体の前処理
      3. tearDown
        1. 全体の後処理
    3. ロジックコントローラ
      1. ForEach
      2. If
        1. 条件を満たせば実行
      3. Include
        1. 他のjmxを取り込む
      4. Runtime
        1. 実行時間の間子を実行
      5. Switch
      6. While
        1. 評価式がtrueの間
      7. インタリーブ
        1. このうち1つを実行
        2. ループ時には上から順に実行
      8. シンプル
        1. まとめるため
      9. スループット
        1. 指定回数、指定%実行する
      10. トランザクション
      11. モジュール
        1. 断片
      12. ランダム順序
        1. ランダムな順番で子を1回のみ実行
      13. ループ
        1. 指定回数実行
      14. 一度だけ実行される
        1. ログインなどで利用
      15. 乱数
        1. 子の内1つを実行
        2. 毎回ランダム実行
      16. 記録
    4. 設定エレメント
      1. CSV Data Set Config
        1. CSV読み込み
        2. Filename:ファイルパス
        3. Variable Names:他で利用するときの変数名(${}で利用)
      2. HTTPクッキーマネージャ
        1. セッション利用時には必要
        2. COOKIE_クッキー名で参照可能
        3. 値nullは保存されない
      3. HTTPヘッダマネージャ
      4. HTTPリクエスト初期値設定
        1. サーバ名
        2. ポート番号
        3. プロトコル
      5. HTTP認証マネージャ
        1. Basic認証時
      6. カウンタ
      7. ユーザ定義変数
        1. 他で参照可能な値を定義
    5. タイマ
      1. 定数スループット
        1. ターゲットスループット
          1. 1分間のリクエスト数
        2. Calculate Throughput based on
          1. ターゲットスループットの範囲
          2. this thread only
          3. all active threads
      2. 定数
      3. ガウス乱数
        1. 偏差
          1. オフセットの偏差
        2. 遅延時間オフセット
          1. 各リクエスト間の平均間隔
      4. 一様乱数
    6. 前処理
      1. HTMLリンクパーサー
      2. ユーザパラメータ
        1. 他で参照可能な値を定義
    7. サンプラー
      1. HTTPリクエスト
        1. サーバ
        2. ポート
        3. プロトコル
        4. パス
        5. 自動リダイレクト
          1. リダイレクトを無視
        6. リクエストで送るパラメータ
          1. パラメータを定義
        7. 全てのイメージとアプレットを繰り返しダウンロードする
          1. 含まれているjs,css,画像などをリクエストする
          2. ソースの中で<script src=""としていてもリクエストする
          3. コメントなどもリクエストする
    8. 後処理
      1. 正規表現抽出
        1. レスの内容を取得し、次のリクエストに利用可能
    9. アサーション
      1. 検証可能
    10. リスナー
      1. シンプルデータライタ
        1. timeStamp:開始時刻
        2. elapsed:レス時間
        3. responseCode
        4. threadName
        5. success
        6. bytes
        7. grpThreads
        8. allThreads
        9. Latency
      2. Summary Report
        1. Label
        2. #Samples:サンプル数
        3. Average:レス時間平均
        4. Min:レス時間最小
        5. Max:レス時間最大
        6. Std.Dev.:標準偏差
        7. Error%:エラー割合
        8. Throughput:単位時間当たりの平均PV数
        9. KB/sec:1秒あたりの平均転送KB
        10. Avg.Bytes:レスコンテンツの平均容量
      3. 統計レポート
        1. Median:レス時間の中央値
        2. 90%Line:全サンプルの90%が収まる値
        3. ※他はSummary Report参照
      4. グラフ表示
      5. スプラインビジュアライザ
        1. 全リクエストの10%毎のポイントからスプライン関数を利用し曲線を描く
      6. メーラービジュアライザ
        1. 基準値以上失敗した場合に、メール送信
      7. Tips
        1. リスナー自体が重いため、シンプルデータライタ利用後、後から読み込ませる
    11. Non-Testエレメント
      1. HTTP Mirror Server
      2. HTTP プロキシサーバ
        1. プロキシとして動作してブラウザ操作からテストシナリオ作成可能
        2. Attempt HTTPS Spoofing
          1. サブトピック 1
        3. Test plan content
          1. 対象となるコントローラ
          2. ツリーの中から指定
          3. グループにする
          4. 取得したサンプラーをグルーピングしたりする
          5. HTTPヘッダの取込
          6. ヘッダを取り込む
        4. HTTPSamplersettings
          1. Type
          2. 自動リダイレクト
        5. 挿入するパターン
          1. 指定したもののみ
          2. .*\.jspなど
        6. 除外するパターン
          1. 取り込まないパターン
          2. .*\.gifのように指定
      3. Property Display
        1. jmeter.propertiesの内容確認
  5. プラグイン(拡張)
    1. stataggvisualizer
      1. Throughput(hits/sec), Average Response Timeのグラフを利用可能
      2. 消去が動作しない
      3. 結果のxml, csvなどを読み込めない
  6. 関数
    1. Ctrl+Fで関数ダイアログが表示
    2. counter
    3. time
      1. 日時
    4. Random
      1. 乱数
    5. StringFromFile
      1. ファイル読み込み
    6. CSVRead
      1. CSVファイル読み込み
    7. XPath
    8. カスタム関数作成
      1. AbstractFunction実装
      2. xxx.functionsパッケージ時に作成