背景
NeoLoadで負荷テストをやっていると、「プロトコルベースのテストだと検知できないパフォーマンス問題がある」という壁にぶつかることがあります。
たとえば、SPAやクラウドネイティブなWebアプリは、クライアントサイドで大量のJavaScriptを処理します。HTTPリクエストの応答時間だけを計測しても、実際にユーザーがブラウザ上で体感する「重さ」は見えてきません。
そこで登場するのが RealBrowser(リアルブラウザ) 機能です。名前のとおり、本物のChromiumブラウザを使って負荷をかけることで、プロトコルベースでは取れないクライアントサイドのメトリクスを計測できます。
この記事では、RealBrowserのセットアップからレコーディング、テスト実行まで、一通りの流れを紹介します。
対象バージョン:NeoLoad 9.0以降(本記事は2026.1で確認)
RealBrowserとは何か
プロトコルベースとの違い
通常のNeoLoadのテストは、HTTPリクエストをネットワーク層から直接サーバーに送るプロトコルベースのアプローチです。これは非常に軽量ですが、ブラウザがページをレンダリングする処理は再現しません。
RealBrowserは異なります。実際のChromiumブラウザインスタンスを起動し、クリックやキーストロークをそのまま再現します。これにより:
- JavaScriptの実行を含むページ全体のレンダリングが再現できる
- Core Web Vitals(LCP、INP、CLS)などのクライアントサイドメトリクスが取得できる
- SPAやクラウドネイティブアプリの実ユーザー体験に近いテストが可能になる
まとめると以下のような形です。
| メトリクス | RealBrowser | Protocol-based |
|---|---|---|
| リクエスト / レスポンス時間 | ✅ | ✅ |
| スループット・エラー率 | ✅ | ✅ |
| LCP(Largest Contentful Paint)最大コンテンツの描画時間 | ✅ | ❌ |
| INP(Interaction to Next Paint)操作への応答速度 | ✅ | ❌ |
| CLS(Cumulative Layout Shift)レイアウトのズレ・視覚安定性 | ✅ | ❌ |
| ページロード時間(クライアント側) | ✅ | ❌ |
| 大規模VUへの適性(軽量・低リソース消費) | ❌ | ✅ |
| API / バックエンド特化(REST, SOAP, WebSocket 等) | △ | ✅ |
対応ブラウザ
レコーディング時はChromiumのみ使用できますが、テスト実行時は以下のブラウザを選択できます:
- Chromium(デフォルト、NeoLoadにバンドル)
- Mozilla Firefox(NeoLoadにバンドル)
- WebKit(NeoLoadにバンドル)
- Google Chrome(ローカルへのインストールが別途必要)
- Microsoft Edge(ローカルへのインストールが別途必要)
注意点:リソース消費
RealBrowserはVirtual User(VU)ごとにブラウザインスタンスを起動します。プロトコルベースのテストと比べてCPU・メモリの消費量が大幅に増えます。
Load Generator(LG)のJVMは、ホストの利用可能メモリの**約15%**に設定し、残りをブラウザインスタンス用に確保することが推奨されています。スケールアップする際は、LGホストで他のプロセス(特にウイルス対策ソフト)が動いていないかも確認しましょう。
事前準備とインストール
動作環境
| OS | Chromium | Firefox | WebKit | Chrome | Edge |
|---|---|---|---|---|---|
| Windows 10+ (64-bit) | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ubuntu 22.04, 24.04 (64-bit) | ✅ | ✅ | ❌ | ✅ | ❌ |
| Docker - Ubuntu 22.04 | ✅ | ❌ | ❌ | ❌ | ❌ |
| macOS | ✅ | ✅ | ✅ | ❌ | ❌ |
macOSでは、最初のレコーディング/テスト実行時にバックグラウンドでブラウザのダウンロードが走るため、初回起動に最大1分かかることがあります。またインターネット接続が必要です。
インストール手順
NeoLoad 9.0以降のフルインストーラーにはRealBrowserが含まれています。インストールウィザードの途中でRealBrowserを有効にするオプションが表示されるので、そのまま有効にしてインストールします。
パッチインストーラーにはRealBrowserは含まれていません。フルインストーラーを使ってください。
Linuxの場合の追加手順:
Linuxディストリビューションによっては、追加の依存ライブラリが必要です。
- NeoLoadのインストールディレクトリの
Tools>RealBrowserフォルダを開く -
install-realbrowser-dependencies.shを実行する
ライセンス確認
RealBrowserを使うには、RealBrowser機能が有効化されたライセンスが必要です。テスト実行前に、ライセンスに十分なVU数が確保されているか確認してください。
ユーザーパスをレコーディングする
レコーディングの起動
RealBrowserのレコーダーは2つの方法で起動できます:
- ツールバーの Start recording ボタン
- メニューの Record > Start RealBrowser Recording
レコーディング手順
- レコーダーランチャーパネルの RealBrowser tab を開く
- Enable RealBrowser recording チェックボックスをオンにする
- 必要な設定(解像度、ブラウザなど)を確認する
- Start をクリックしてChromiumブラウザを起動する
- テストしたいWebアプリを通常通り操作する(クリック、入力、ページ遷移など)
- 操作が終わったらレコーダーを停止する
RealBrowserプロトコルはスタンドアロンで動作します。有効にすると他のプロトコルのレコーダーは自動的に無効になります。
レコーディング後のウィザード
録画を停止すると、Post-recording Wizard が起動します。ここで CaptureRequests アクションの数を指定すると、NeoLoadがレコーディング中のリクエストを自動的に分類してバケットを作ってくれます(XHR/FetchはURLごとの個別バケット、その他はリソースタイプ別バケット)。
ユーザーパスをデザインする
レコーディングしただけでは、動的なデータや複雑な画面遷移に対応できないことがあります。デザインフェーズでは以下のような調整が可能です。
主なアクション
| アクション | 説明 |
|---|---|
OpenBrowser |
ブラウザの起動。実行時のブラウザ種別もここで指定 |
Navigate |
URLへの遷移 |
Click |
DOM要素のクリック |
Type |
テキスト入力 |
WaitForNavigation |
ページ遷移の完了まで待機 |
WaitForSelector |
特定の要素が表示されるまで待機 |
EvaluateJavaScript |
カスタムJavaScriptの実行 |
CaptureRequests |
ブラウザが発行するリクエストのメトリクス収集 |
waitForNavigation の活用
ページ遷移後の待機条件は waitForNavigation.until パラメータで指定できます:
-
LOAD:ページのonloadイベント発火まで待機(デフォルト) -
DOMCONTENTLOADED:DOMの読み込み完了まで待機 -
NETWORKIDLE:500ms間ネットワーク通信がなくなるまで待機 -
COMMIT:リクエストが送信された時点で完了とみなす
LOAD や DOMCONTENTLOADED イベントを発行しないページもあります。アクションがタイムアウトする場合は NETWORKIDLE や COMMIT に切り替えてみてください。
セレクターの指定
要素の特定にはCSSセレクターまたはXPathセレクターを使います。複数のセレクターを指定することでアプリの変更に強いテストを作れます。ただし Text= セレクターと他のタイプを混在させることはできません。
現時点での制限事項
以下の機能はRealBrowserでは未対応です(2026.1時点):
- ドラッグ&ドロップ
- アラートダイアログの操作(デフォルト無効)
- CookieやLocalStorageの直接操作(
EvaluateJavaScriptで代替) - SVG要素のインタラクション
- ダウンロードファイルのアサーション
- Fork(フロー制御)アクション
Core Web Vitalsを計測する
RealBrowserの大きな特徴のひとつが Core Web Vitals の計測です。プロトコルベースのテストではこれらのクライアントサイドメトリクスは取れません。
3つの指標
| メトリクス | 正式名称 | 意味 |
|---|---|---|
| LCP | Largest Contentful Paint | 最大コンテンツの描画時間。読み込みパフォーマンスの指標 |
| INP | Interaction to Next Paint | インタラクションに対する応答速度の指標 |
| CLS | Cumulative Layout Shift | 視覚的な安定性。レイアウトのズレを示す |
Core Web Vitalsの有効化
2つの方法で追加できます:
新規レコーディング後:
Post-recording Wizardから「Capture Core Web Vitals」アクションを追加する。
既存のユーザーパスに追加:
デザインツリーでユーザーパス要素を右クリック → Advanced > RealBrowser → 対応するオプションを選択。
テストを実行する
実行中
Headlessをオフにして、実RealBrowser立ち上げ時のイメージ。複数ブラウザが立ち上がりテストを実施
通常はHeadlessで起動させるもので、イメージ向上のために取得
ログの確認
テスト実行中に問題が発生した場合は、通常のNeoLoadログに加えて browsers.log ファイルを確認してください。ブラウザ側のトレースとデバッグメッセージが記録されています。
ログフォルダは Help > Open log folder から開けます。
結果を分析する
テスト完了後、NeoLoad Web上でCore Web Vitalsの結果をページレベルで確認できます。各ページがユーザー視点でどのようなパフォーマンスを出しているか、粒度の細かい可視化が可能です。
このグラフだけみると
「INPが問題になる可能性があり、RealBrowserでしか見えないメトリクス」が確認できます。
まとめ
NeoLoadのRealBrowserを使うと、「本物のブラウザを使った負荷テスト」が意外と簡単にできます。特にSPAやクラウドネイティブなWebアプリのパフォーマンステストでは、プロトコルベースだけでは見えなかった問題を炙り出せるのが大きな強みです。
ポイントをまとめると:
- NeoLoad 9.0以降でフルインストーラーを使えばRealBrowserが同梱される
- レコーディングはChromiumを使って実際の操作を録画するだけ
-
waitForNavigationの設定はSPAテストで特に重要なのでハマったら見直す - Core Web Vitals(LCP・INP・CLS)はRealBrowserでしか取れないクライアントサイドメトリクス
- VUごとにブラウザインスタンスが起動するため、Load GeneratorのCPU/メモリ設計に注意








