何を重視するか、機能性またはパフォーマンスによって異なります。
機能性
機能を監視するときは、Web アプリケーションがまだ正常に動作していることを自動的に確認することを目的としています。通常、これは継続的な統合プロセスの一部であり、生産監視の一部ではありません。HtmlUnit、Selenium、または WebDriver でうまく実行できます。HttpUnitは推奨されなくなりました (API はより低レベルで、JavaScript はあまりサポートされておらず、あまり広く採用されておらず、バグの修正と機能拡張は少なくなっています)。
HtmlUnitはブラウザーをシミュレートします。そのため、アプリケーションが実際のブラウザーでまったく同じように動作することを確認することはできません。これは、高度な Ajax アプリケーションでは特に重要です。これは、FireFox と Internet Explorer の間のすべての小さな非互換性に匹敵します。長所: ヘッドレスでわかりやすい。短所: 非互換性が検出されないリスク。
Seleniumリモートは、実際のブラウザを制御します。私たちのセットアップでは、特に Internet Explorer では、ヘッドレスで使用できませんでした。しかし、仮想マシンに組み込むと、ヘッドレスで実行されます。パブリック インターネット経由でアプリケーションにアクセスできる場合は、Selenium Grid と、Amazon Elastic Cloud EC2 から事前構成された仮想マシンを使用することもできます。Selenium の長所: 実世界との互換性、簡単なスクリプト作成。短所: 仮想マシンでのみヘッドレス、パフォーマンス オーバーヘッド、より複雑なランタイム セットアップ、クラウドでのみ同時ユーザーのストレス シミュレーション。
バージョン 1.5 までの Selenium は、Selenium Core と呼ばれる JavaScript 部分を使用してブラウザーを制御します。アプリケーションに JavaScript のセキュリティ制限がある場合、Selenium が正しく動作しない可能性があります。
WebDriverは、ブラウザごとに特定のインターフェイスを使用します。たとえば、FireFox の拡張機能や Internet Explorer のオートメーション コントロールなどです。さらに、キーストロークのシミュレーションなどにオペレーティング システムを使用します。これは、Selenium Core よりも強力で、堅牢で、信頼性があります。Selenium バージョン 2.0 以降、WebDriver は Selenium に統合されています。しかし、Selenium 2.0 はまだベータ版です。
パフォーマンス
タイマーでの測定について言及し、レンダリング時間について言及しました。Web アプリケーションのパフォーマンスを監視する場合、応答時間が長すぎるためにアプリケーションを実際に使用できなくなったときにアラートを受け取る必要があります。
このシナリオでは、通常、ミリ秒単位の正確な結果には関心がありません。上記のツールのいずれかを引き続き使用できます。たとえば、Selenium Core を搭載したブラウザーは実際のブラウザーよりも遅くなりますが、これは継続的な監視にはほとんど関係ありません。
どうしても正確な測定が必要な場合は、上記のどれも適切ではありません。クライアント側の期間と、ネットワークとサーバー側の期間を区別する必要があります。
HTML のレンダリングと JavaScript の実行には、クライアント側の期間が必要です。同時ユーザー数には依存しません。Firebugなどを使用して、一度測定できます。永続的に監視する必要はありません。
要求をサーバーに転送し、要求を処理し、応答を生成し、応答をクライアントに転送するには、ネットワークとサーバー側の期間が必要です。これらは、ネットワークの使用状況と同時ユーザー数によって異なります。たとえば、JMeterを使用して、それらを正確に測定および監視できます。しかし、洗練された Ajax 機能の場合、JMeter での適切なクライアント リクエストのシミュレーションは複雑なタスクです。JMeter の長所: 正確な測定、多数の同時ユーザーがアプリケーションに負荷をかける可能性。短所: Ajax には制限があり、リクエストの構築に多大な労力がかかります。