ASP.NET アプリケーションの過負荷試験を JMeter で行う。
ASP.NET と JMeter の相性が悪い?
かどうかは知りませんが、「ASP.NET JMeter」とかで検索すると、ネガティブな記事が多いですね。まあ、ポストバックって機構がリクエストを投げまくるのが得意な JMeter とはちょっと相性悪そうですが、できないってことはない。
ポストバック画面での POST リクエストの勘所
まずは雛形を作りましょう
正直 JMeter の設定を手動で作っていくなんてやってられません。
Web ブラウザの操作をそのまま記録する
記録コントローラと HTTP プロキシサーバーを使えば Web ブラウザでの操作をそのまま JMeter のテスト計画として生成できます。
ただし、ここで記録したものを実行しても残念ながら失敗してしまいます。
必要な値を抜いて雛形を加工する
つまり、上述したような値を各処理のレスポンスから抜いて、次のリクエストに渡す必要があります。
HTTP Request サンプラーの後処理に入れる
HTTP Request で GET やら POST の処理を行うと思います。(最初はさすがにGETかな)
その「後処理」に値を抜く処理を挟むわけですね。
XPath で抜く
「後処理」には「XPath Extractor」があります。
例として EventValidation の値
例) //*[@id="__EVENTVALIDATION"]/@value
ちょっとした事
ユーザー定義変数・ユーザーパラメータを使う
私の場合は検証環境・本番環境と複数のサイトにたいして実行する必要があったので、一気に書き換えられるように定義を残しておきました。
まとめ
今は Visual Studio にもテスト用にエディションがあるので、ライセンスを持っている方はそちらを使えばもっと楽に過負荷試験も実施できるのではないかと思います。
JMeter は今回紹介した方法からさらに、For コントローラで繰り返しを書いたりと過負荷試験までの道のりは長かったりします。