新しいウェブサイトを持っているか、ユーザーが必要とするいくつかの機能を新たに開発した場合、高い数のユーザーがインタラクションを始めたときにウェブサイトのパフォーマンスが良好であることをどうやって確認しますか?その答えはロードテストです。 ロードテストは重要な パフォーマンステストの一部であり、ウェブサイト、アプリケーション、またはソフトウェアの通常およびピーク時の動作を判断するために使用されます。ロードテストは、ウェブサイトのパフォーマンスを改善し、予想される負荷条件下での安定性を高めるための有用なデータを提供します。最近まで、プロトコルベースのロードテストが予想される負荷条件でウェブサイトをテストする唯一の方法でした。技術とユーザーエクスペリエンスが進化する中、実際のChromeブラウザを使用することで、テスターはリアルユーザーのシミュレーションに必要なより現実的な環境を利用し、より正確なロードテスト結果を得ることができます。現代のアプリケーションは動的コンテンツやクライアントサイドレンダリングに大きく依存しており、実際のブラウザベースのテストは負荷下でのユーザー体験を正確に測定するために重要です。
この記事では、次の3つの広く使われているロードテスト手法について説明します:
- ブラウザベースのロードテスト(通常のChromeブラウザを使用)
- ヘッドレスブラウザロードテスト
- プロトコルベースのロードテスト
Chromeブラウザベースのロードテスト
ブラウザベースのロードテストは、ロードジェネレーターを通じて通常のChromeブラウザインスタンスを作成し、簡単なスクリプトの助けを借りてテスト対象のウェブサイトを操作することでリアルユーザーをシミュレートします。これにより、現実世界の実際のユーザーとほぼ同一の環境が作成されます。ブラウザベースのロードテストにおける仮想ユーザーは「ブラウザレベルユーザー(BLU)」と呼ばれます。ブラウザベースのロードテストスクリプトには、実際のナビゲーションやウェブサイト上の相互作用に関連する指示が含まれています。例えば、どのボタンをクリックするか、どこに移動するか、入力ボックスにどの情報を入力するか、どの要素といつどうやってやりとりするかなどです。これにより、テスターは現実世界のシナリオと最も近いユーザージャーニーをシミュレートできます。
実際のブラウザベースロードテストの利点
ユーザーの視点
現実のエンドユーザーは、例えば実際のChromeブラウザを使ってウェブサイトとやりとりします。ブラウザベースのロードテストにより、通常のChromeブラウザでウェブサイトを負荷テストし、実世界のユーザー行動を理解できます。この手法は、プロトコルベースのテストでは測定できない実際のレンダリング動作、ネットワーク遅延、フロントエンドパフォーマンスをキャプチャします。
シンプルなスクリプト
ブラウザベースのロードテストスクリプトを作成するために、基礎となるプロトコルに関する深い知識は必要ありません。例えばログインアクションを作成する場合、入力すべきユーザー名とパスワード、どのボタンをクリックして進むかを指定すれば十分であり、認証プロトコル等の技術的詳細を知る必要はありません。
テストの複雑さの軽減
パラメータや値を渡す必要のある他の従来のロードテスト法とは異なり、ブラウザベースのテストは簡単なスクリプトで作成・開始できます。
フロントエンドの最適化
ブラウザベースのロードテストにより、ネットワークやリクエスト遅延など、ユーザーが通常のブラウザでウェブサイトを操作する際に得られる最も正確な実世界のデータを収集できます。これによりフロントエンドの最適化に役立ちます。
保守が容易
シンプルなスクリプトとあまり複雑でないテストは、保守を容易にし、ロードテスト実施の柔軟性を高めます。例えばログイン例で認証プロトコルを変更した場合でも、ログインロードテストは影響を受けません。
実際のブラウザベースロードテストの欠点
高いCPUおよびメモリ使用量
通常のChromeブラウザを使うブラウザベースのロードテストは、予想される負荷のためのインスタンスを作成するのに高いCPUとメモリを必要とします。ただし、クラウドベースのロードテストプラットフォームを使用すればこれは問題になりません。
稀に長くなる実行時間
ブラウザベースのロードテストは、単純なAPIリクエスト-レスポンスの記録ではなく、ブラウザインスタンス内で完全なウェブサイトUIをレンダリングするため、他のロードテスト方式より実行に時間がかかることがあります。ただし、ブラウザベーステストの実行の簡便さと優秀なクラウドベースのロードテストツールにより、この点は相殺されることが多いです。
ヘッドレスブラウザロードテスト
ヘッドレスブラウザロードテストは、「ヘッド」やユーザーインターフェースを作成せずにブラウザ環境でロードテストを実行します。つまり、グラフィカルユーザーインターフェース(GUI)なしで見えないブラウザインスタンスを作成してロードテストを行います。ヘッドレスブラウザロードテストは、誰もシミュレートされたブラウザを見ていないため、レンダリングや描画操作をスキップします。これにより、実際のブラウザベースのロードテストよりも少ないリソースで迅速にテストを実行できます。ヘッドレスブラウザの例としては以下があります:
ヘッドレスChrome
Chromeブラウザはバージョン59以降でヘッドレスモードで起動できます。軽量でリソースの消費が少なく、ナビゲーション、ページ情報の収集、PDF生成、スクリーンショット撮影などに使用できます。
ヘッドレスFirefox
Firefoxもバージョン56以降でヘッドレスモードを提供しています。Seleniumのようなテストツールでヘッドレステストや自動化の基本的なテストに使えます。
PhantomJS
PhantomJSは多くのウェブ標準をサポートする柔軟なヘッドレスWebkitです。テストスクリプトの記述にはJavaScript APIが用いられ、主にナビゲーションやアサーションテストに使用されます。
ヘッドレスブラウザロードテストの利点
リソース消費が少ない
ブラウザ環境でレンダリングされるGUIがないため、ヘッドレスブラウザロードテストはより少ないリソースで多くの負荷を生成できます。
より迅速なブラウザ環境でのテスト
ヘッドレスブラウザロードテストでは、テストの実行がより迅速であり、潜在的な問題を素早く修正するための結果の取得が可能です。
ブラウザベースロードテストの欠点
限定されたブラウザ環境の機能
ヘッドレスブラウザテストで多くのブラウザベースのシナリオはテスト可能ですが、実際のChromeなどの通常のブラウザを使用するユーザーの全体像を把握するには不十分です。
ブラウザモニタリングの欠如
アニメーション、SPAの遷移など、一部のテストケースシナリオではブラウザベースのテストを「見る」ことが必要であり、完全な解析には不可欠です。ヘッドレスブラウザロードテストにはこの機能がありません。
プロトコルベースのロードテスト
プロトコルベースのロードテストは、負荷サーバーでHTTP/Sレベルのトラフィックをシミュレートする最も伝統的なロードテスト方法です。主にサーバー上の予想される負荷に対するリクエスト-レスポンスのやりとりを評価および査定する目的で使用されます。プロトコルベースのロードテストは最低限の形態であり、ユーザー体験に焦点を当てた複雑なウェブアプリケーションには単独では適していません。
プロトコルベースロードテストの利点
最小限のリソース消費
プロトコルベースロードテストはHTTP/Sのリクエスト-レスポンストラフィックの生成のみを含み、最小限のリソースで非常に高い負荷を生成できます。
高速な実行
プロトコルレベルのメトリクスを解析するためにHTTP/Sトラフィックのみを扱うため、プロトコルベースのロードテストはより高い負荷に対してもテストの実行が高速です。
プロトコルベースロードテストの欠点
複雑なテスト
プロトコルベースのスクリプト作成には、HTTP/Sレベルで使用される様々なプロトコル(例えばログインのOauthプロトコル)の深い理解が必要です。これにより、ロードテストのスクリプト作成は複雑かつ時間がかかるプロセスになります。
最も現実的でない環境
ユーザーが通常のChromeなどのブラウザを使ってウェブサイトを利用する現実の環境とは異なり、プロトコルベースのロードテストはそのような機能がありません。ユーザー視点に重きを置くウェブサイトには適切な選択肢ではありません。
現代的なウェブサイトには機能不足
現代のウェブサイトは高度なブラウザ側JavaScriptやAJAXコールなどの利用が多く、プロトコルベースのロードテストでは多くのテストシナリオにおいて制限があります。
ブラウザベースロードテストのためのLoadView
これまでの議論から明らかなように、ブラウザベースのロードテストはロードテストアプローチの次の進化形です。今日のウェブサイトと技術はリッチなユーザー体験に焦点を合わせ、サーバー側ではなくブラウザ側の解釈とレンダリングに大きく依存しています。シングルページアプリケーション(SPA)が広く使われ、クライアントサイドJavaScriptフレームワークやAJAXコールを用いてUIのページリフレッシュをほとんどまたは全く行わずに更新します。
LoadViewは、Chromeのような実際のブラウザを使用して、最も現実的な負荷テスト環境を作成するクラウドベースのロードテストを提供します。LoadViewを使えば、様々なユーザーアクションや行動のためのスクリプト作成が簡単で、数回のクリックでテストを実行できます。
LoadViewでテスト可能なもの
- ウェブサイト
- シングルページアプリケーション(SPAs)
- サードパーティのサービス/API
- ストリーミングメディアサービスのようなメディアリッチなウェブサイト
実際のブラウザベースロードテスト向けLoadViewの利点とメリット
- EveryStep Web Recorderを使ってコードを書かずに簡単にテストスクリプトを作成し、すべてのページをロードテストできます。
- 40以上のデスクトップ/モバイルの実際のブラウザがあり、ほぼあらゆるデバイスでウェブページをテスト可能です。
- ジオ分散ロードテストにより複数の場所からユーザーをテストでき、実世界のシナリオでより正確な結果を得られます。
- LoadViewはDevOpsに対応しており、複数のテストカーブを提供してパフォーマンス測定とウェブアプリケーションの最適化を可能にします。
まとめ: 実際のブラウザベースロードテストのメリット
ブラウザベースのロードテストは、現代のフレームワークとメディアリッチなコンテンツに基づくウェブサイトにとって不可欠です。Chromeのような実際のブラウザ(65%以上の市場シェアを持つ)を使用したロードテストは、多くのパフォーマンス結果を提供し、迅速なウェブサイト最適化を可能にします。ただし、ロードテストをChromeだけや単一デバイスに限定すべきではありません。ほぼすべてのブラウザやデバイスを、複数の地理的ロケーションからテストできる能力を持つことが、予想負荷に対する包括的な洞察を与え、ウェブサイトの解析および最適化に役立ちます。
今すぐLoadViewを試してください。Chromeブラウザベースのロードテストを始めるための無料ロードテストを受け取れます。