私はネイサンとフレディにある程度同意しません。「AJAX テスト」は、HTTP 要求が行われるという点で実際には違いがないという彼らの意見は正しいです。しかし、それはそれほど単純ではありません。Why Load Testing Ajax is Hardに関する Ajaxian.com の私の記事を参照してください。
JMeter、Pylot、および The Grinder はすべて、HTTP 要求を生成するための優れたツールです (個人的には Pylot をお勧めします)。しかし、基本的には、ブラウザーとして機能したり、JavaScript を処理したりすることはありません。つまり、記録的な速さで見たトラフィックを再生するだけです。これらの AJAX リクエストがそのセッションに固有のものである場合、それらは大量に再生するのに適していないか正しくない可能性があります。
実際には、ブラウザーにプッシュされるロジックが増えるほど、従来の負荷テスト ツールを使用してトラフィックを適切にシミュレートすることが (不可能ではないにしても) はるかに難しくなります。
私の記事では、Google のホームページのようなものをテストする際に、何千もの異なる検索用語をクエリする場合 (負荷テストの重要な目標) をテストすることがいかに難しいかを示す簡単な例を示しています。JMeter/Pylot/Grinder でそれを行うには、ツールのネイティブ言語で AJAX コードの一部 (この場合は jQuery を使用) を効果的に書き直すことになります。
ユーザーが認識した応答時間を測定することが目標である場合は、さらに複雑になります (これは、結局のところ、間違いなく最も重要なことです)。Comet/「Reverse Ajax」 (ソケットを長期間開いたままにする手法) を使用する非常に複雑なアプリケーションの場合、従来のロード ツールはまったく機能しません。
私の会社、BrowserMob は、Seleniumを搭載した Firefox ブラウザーを使用して数百または数千の実際のブラウザーを駆動する負荷テスト サービスを提供しており、ブラウザーに表示される視覚要素のパフォーマンスを測定して時間を計ることができます。また、従来の仮想ユーザー (ブラインド HTTP トラフィック) とシミュレートされたブラウザー ( HtmlUnit経由) もサポートしています。
とは言っても、通常、BrowserMob のようなサービスと従来の負荷テストを組み合わせることが正しいアプローチです。つまり、実際のブラウザは完全忠実な負荷テストには最適ですが、10 ~ 100 倍の RAM と CPU を必要とするため、「仮想ユーザー」ほど経済的ではありません。仮想ユーザーをシミュレートするかどうかについては、私の最近のブログ記事を参照してください。
それが役立つことを願っています!