!スマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。EEを中心に趣味や仕事における開発メモを書いています。EE6で取り組んだ初めてのCI」というエントリを書きましたが、図の負荷試験の所は「これから」となってます(^^;本来は画面開発中でも負荷試験を交えながら作るべきなのだと思うのですが、自分自身、開発にかなり時間を割く必要もあって、そういう状況にできませんでした(-_-;言い訳に過ぎないのですが、CIの仕組み入れるのもやっとだった環境なんで...。時間はある!ということでGWを使ってJMeterを触ってみます。ちなみに自分の負荷試験の記憶は「みんなー集まってー。いくよー、いっせーのー、せっ」だったり...(^^;マジです。Formでしたが...。今のVisualStudioだとフォームの自動テストもずいぶん簡単にできるようなので、もうそんなことはしないはず。Web開発ならばなおさら。JMeter関連の参考情報JMeterに関しては詳しい情報が日本語でも揃ってますので、ここでの説明はJMeter+JSFに絞りたいと思います。ちなみに参考にさせて頂いたサイトをまとめておきます。JMeter本家のサイトです。Manualなど、情報は豊富ですね。英語ですが(^^;WEBサイト負荷テストツール7選Web系の負荷試験=JMeter、というイメージしかなかったのですが、コマンドラインツール含めて色々あるんですね。JMeterで負荷試験をしよう!先のサイトにもリンクがありますが、JMeterの詳しい使い方はこの資料を読むのが良さそうです。自分もこれから読んでいきます!※PDF直リンです。画面の操作を記録する最初のサイトにも紹介がありますが、JMeterって画面の操作記録を取って使うことができるんですね...(^^;実は知らなかったのです。このサイトを立ち上げた直後ぐらいに初めてJMeterを少し触ったのですが、それを知らなかったのでえらく苦戦しました。この機能を知ってる、知らない、で負荷テスト工数に大きく差がでそうです。JMeterによる負荷テストJBossアプリをJMeterを利用して性能テストするJSFとJMeterで参考にさせて頂いたサイト。JSFを使ったページの場合、ViewStateの関係で少し工夫がいるんですね。JMeter最後に、上記サイト内からもリンクがありますが、JMeterでJSFのviewStateを設定する方法に関してはApacheのMyFacesのこのページが参考になりました。えーっと、もう自分の記述は不要な気も(^^;するけど、ここからは自分が実際に設定した内容を備忘メモしておきます。興味がある方は以下「続きを読む」でどうぞ~。通常は試験環境などで行ったりするものかと思いますが、まずはお試し、ということでIDE実行でトライしました。あとNetBeansのプロファイラを一緒に使ってみたかったので。2.9で、まずは簡単なログイン画面的なものをサンプルレベルで設けて、単にログインするだけ。いうのをJMeterで行います。サンプルですが一応JSF+EJBでDBから値も取得してます。参考サイトにあるようにプロキシを使うことでブラウザの画面操作から記録が取れるとのことで、「コントロールパネル」->「インターネットオプション」から「接続」タブを選択「LANの設定」を選んでプロキシサーバーのチェックいれますあれ...昨日はこのままテキストが入力になったんだけど...なぜかならない(-_-;仕方ないので詳細設定でHTTPに以下のようにいれました。8080はGlassFishが使うので、8090とか。JMeterで操作記録を取るjmeter.batを叩いて起動します。初期だと「テスト計画」「ワークベンチ」というノードが見えている状態です。「テスト計画」を右クリックしたメニューから「スレッドグループ」を追加します。スレッドプロパティでスレッド数などの設定ができますが、いったんここでは初期のままにしました。続けて「ワークベンチ」を右クリックしたメニューから「HTTPプロキシサーバ」を追加します。先にプロキシのポートを8090にしたので、8080となっているのを書き換えました。この状態でNetBeansからWebアプリケーションを起動してみます。ここではとりあえずデバッグモードで起動しています。当たり前ですがエラー。JMeterでプロキシサーバの設定しただけで起動してないからです。いうわけで、JMeterのHTTPプロキシで「開始」ボタンを押します。再度Webアプリケーションにアクセスすると、無事表示されます。キャプチャするの忘れちゃった...(^^;で、このまま操作記録したい操作を行います。ここでのサンプルはログインページでユーザ名とパスワードを入れてログインボタン押してログインするだけ。JMeterのツリーをみると操作前にとなっているのが、操作後となってスレッドグループに操作が記録されていけばOKです。展開すると以下のような感じ。ログインしたので、プロキシサーバを「停止」して、最初に設定したインターネットオプションのプロキシ設定も元に戻します。忘れがちなので注意です!記録した操作を実行してみる記録は無事できたので、実行してみます。負荷をかけるのではなく、ちゃんとHTTPの会話ができるかどうかの確認です(^^;リクエストを確認するため、スレッドグループにリスナーの「結果をツリーで表示」を入れました。緑の開始ボタン(またはメニューから開始)を押します。すると以下の警告が出ます。ここまで設定したものを保存しておいてちょ、ってことで、保存しときます。302となってました。ちなみにGlassFishをみるとなんかエラーなってますね。ビューの復元ができない、と。JSFで生成されたxhtmlをみると末端にviewStateというタグがあって、乱数みたいな値が入ってます。こいつが復元データとして利用されるので、上手く設定しないと駄目ということのようです。MyFacesのサイトを参考に以下追加します。JMeterにあるように入れてみます。これを利用して、実際のPOST情報を書き換える必要があります。スレッドグループの中の操作情報でログイン情報をPOSTするものを選びます。Parameters、というタブにポスト情報が並んでいるのですが、ここにjavax.faces.ViewStateというのがあって、乱数みたいな値が入ってます。この値を、先ほど正規表現で抽出された値の変数に変えます。それからもう1つ、セッションID情報がcookieにあるので、HTTPクッキーマネージャを追加しました。こいつは単に追加するだけで大丈夫でした。再度実行!!!レスポンスが変わり、成功したっぽい!で、GlassFishの自前のログをみると、ちゃんとログイン成功になっていました(>_<)あとは統計とかグラフとかここまでの設定、実行で、うまくログインすることができるようになったので、あとはスレッド数や期間、ループ回数などを設定して、本格的に負荷をかけることができます。リスナーの統計レポートやグラフ表示を追加することで分析もできる!NetBeansのプロファイラ起動に負荷かけてモニタリングなんかも。今回は簡単なログインサンプルでやりましたが、実アプリだとまだ色々壁があるんだろうなぁ(^^;頑張らねば。ヶ月)長らくC#屋でした。EEを触ることになりました。Web開発も初めてです。日々の勉強メモとしてブログ作成。デビュー当時から堀北真希さんを愛するエンジニアです。現在は乃木坂46が大好きです。Blog|ブログを報告する。