Angular、Ember、Ext JS、ノックアウト、反応、Vueなどの最新のクライアント側のJavaScriptフレームワークは、すべて単一ページアプリケーション(SPA)の基盤とルールをサポートしています。 SPAは、Webアプリを使用して得るような、よりシームレスなユーザーエクスペリエンスをユーザーに提供しますが、SPA負荷テストはJMeterのようなオープンソースツールで厄介な結果を証明することができます。 この記事では、JMeterのようなオープンソースの負荷テストソリューションがどのようにSPをテストし、LoadViewがどのように異なっており、JMeterの限界を克服するかを説明します。

単一ページ アプリケーションとは

単一ページ アプリケーション(SPA)は、Web ブラウザで完全に動作する単一の URL Web アプリケーションまたは Web サイトです。 ユーザーが SPA アプリケーションまたはサイトにアクセスすると、JavaScript、HTML、CSS などのすべての要素がダウンロードされます。 この機能により、ユーザーが新しいページに移動するたびに、ユーザーがページを再読み込みしたり更新したりする必要はありません。 新しいデータが必要な場合、ページは、ユーザーが違いを知らなくても、Web サーバーからの新しいデータで動的に更新されます。

単一ページ アプリケーションのロード テスト時の考慮事項

迅速に応答するアプリケーションやサイトを作成するには、SPA は最適ですが、パフォーマンス テストを実行する際には、SPA のロード テストに適したツールまたはソリューションを選択する前に考慮すべき点がいくつかあります。

最初に検討すべき項目の 1 つは、SPA ロジックが JavaScript テクノロジに大きく依存していることです。 ユーザーがボタンをクリックしたり、Web ページで他のアクション (タブ間の移動、Web フォームへの入力など) を実行するたびに、ブラウザは JavaScript を実行し、Web ページをレンダリングします。

さらに、SPA の認証には、アクセス資格情報 (JSON Web トークンなど) を含む HTTP ヘッダーが含まれます。 アクセス トークンは、各セッションに対して SPA サーバーによって提供されます。 ブラウザが HTTP 呼び出しを実行すると、SPA サーバの応答からトークンを抽出し、HTTP 要求ごとにトークンを返します。

JMeterとは何ですか?

JMeterは、Apacheソフトウェア財団によって開発されたオープンソースのパフォーマンステストツールです。 JMeterの主な目的は性能テストを行うためですが、単体テストなどの機能テストにも使用できます。 1998年に初めて利用可能になり、エンタープライズグレードのロードテスト機能が搭載されています。 JMeterの機能は、プラグインベースのアーキテクチャのために簡単に拡張することができます。

これは、重い負荷の下で、ウェブサイトやアプリケーションのパフォーマンスを分析するために使用される、より人気のあるオープンソースツールの一つです。 新しい技術をサポートするために頻繁に保守および更新されていますが、JMeterは提供する機能の膨大な量のために複雑なユーザーインターフェイスを少し備えています。 この複雑さは、ソフトウェアを熟知し、経験を積むために少し学習曲線を必要とするため、市場の他のツールほどユーザーフレンドリーではありません。

JMeter の制限事項

これらのSPAロジック特性は、JMeterなどのフレームワークを使用して構築されたアプリケーションでSPA負荷テストに制限を設けます。 JMeterはブラウザではなく、プロトコルレベルで動作します。 これにより、ユーザーの視点からパフォーマンス テストを実行しようとすると難しくなります。 たとえば、JMeter は JavaScript をサポートしていないため、AJAX リクエストをサポートできないため、この場合、JMeter は HTTP トラフィックのみをシミュレートできます。

JMeterは、アプリケーション自体をテストすることなく、サーバーにSPAウェブ要求をエミュレートすることができます。 ただし、ページ上のユーザー データを操作する要求を作成するには、Web 開発に対応するナレッジが必要です。 たとえば、SPA アプリケーションにログインするには、各セッションのクライアントの呼び出しを認証する必要があります。 それ以外の場合は、ページのパフォーマンスを正確にテストすることはできません(JMeterの詳細については 、JMeterロードテストの究極ガイドを参照してください)。

オープンソースのロードテストツールを使用する理由

SPAロードテストの時が来たらあなたの心に浮かぶ最初の質問は、ロードテストに使用するツールです適切なツールを選択することがロード テストと Web サイトを成功に導く鍵となるため、これは最も重要な決定事項の 1 つです。 又は アプリケーションのパフォーマンスの最適化。 オープンソースや商業の各種類にかかわらず、あらゆるツールに長所と短所がありますが、正確さ、使いやすさ、スクリプトの使いやすさ、信頼性、拡張性、レポート、監視、コストなど、すべての要素を常に考慮する必要があります。 たとえば、JMeterにはレポート機能が組み込まれていないため、JMeterユーザーロードテスト出力を理解してレポート手動で作成する必要があります

オープンソースのロードテストツールは、多くの場合、一部の優れた開発者によって保守され、必要に合うように、ソースコードで自由に使用できます。 オープンソースツールを使用して、内部使用のために機能を拡張することができます。 JMeter以外の他の人気のあるオープンソースツールのいくつかは、ガトリング、グラインダー、ローカスト、ツング、および ウェブロード. 次に、ツールを選択する前に慎重に調査する必要がある、オープンソース ツールを使用する場合の利点と欠点を詳しく説明します。

オープンソースロードテストツールを使用する利点

  • 自由に使用できますので、初期投資は必要ありません。
  • ソース コードは、内部のユース ケースに基づいて機能を拡張するために使用できます。
  • トップ開発者とオープンソースコミュニティによって管理されます。

オープンソースロードテストツールを使用する場合の欠点

  • サーバーでオープンソースツールを実行するには、ハードウェアに投資する必要があります。
  • 負荷テストインフラストラクチャの構築と保守には、余分な労働力とITコストが必要です。
  • 仮想ユーザー (負荷) は内部サーバー上で生成されるため、エンド ユーザーがさまざまなデバイスや地理的場所から来る場合に、現実的でない状況や誤解を招く結果が生じます。
  • 多くのオープンソースのロードテストツールは、プロトコルベースのロードテストのみをサポートし、ブラウザベースのロードテストはサポートしていません。
  • オープンソースのロードテストツールはサポートが限られているため、実装やメンテナンスの難題に直面した場合、あなた自身でかなり多くの問題に直面しています。
  • セキュリティは、オープンソースのロードテストツールに関する重要な懸念事項です。
  • オープン ソースのロード テスト インフラストラクチャの稼働には時間がかかります。
  • オープンソースのロードテストツールは、必要な課題と管理のためにプロジェクトのタイムラインに影響を与える可能性があります。
  • CPU とメモリの問題は、大規模なロード テストを実行するときに発生する可能性があります。
  • アプリケーションとユーザーが成長するにつれて、スケーリングは難しいです。

ロードビュー:JMeterとオープンソースツールに代わる最良の負荷テスト

ロード テストは、Web サイト、アプリケーション、および API の速度、安定性、およびスケーラビリティを分析するために実行する必要があります。 市場には無料および商用のロード テスト ツールの両方があり、要件に基づいて選択できます。 オープンソースのロードテストツールは初期投資を必要としませんが、機能が限られた独自のインフラストラクチャを構築および管理するコストがかかります。 LoadView のような商用ロード テスト ツールは、正確な結果と使いやすさを実現する豊富な機能と機能を提供します。

LoadViewは、JMeterやその他のオープンソースのロードテストソリューションの限界を排除するクラウドベースの負荷テストツールです。 LoadView がそれを行う方法と、他のロード テスト ツールから目立つ他の機能を見てみましょう。

  • ユーザー インターフェイス: LoadViewは、学習曲線のないシンプルで直感的でユーティリティベースのユーザーインターフェイスを備えています。 ロード テストを使用すると、数分ですぐに開始できます。
  • プログラミングは不要です。 LoadView には、EveryStep Web Recorder と呼ばれるポイント アンド クリック機能が搭載されており、マウス クリック、キー入力、メニュー ナビゲーションなどの複雑なユーザー 操作をキャプチャし、テスト スクリプトを生成できます。
  • 先行投資なし。 独自のテストインフラストラクチャを設定して維持する必要があるJMeterや他のオープンソースツールとは異なり、LoadViewはクラウドベースの完全に管理されたロードテストツールであり、テスト要件に応じて支払います。
  • 実際のブラウザとデバイス. LoadViewは、40以上のブラウザ/デバイスをサポートし、正確なロードテストのために実際のユーザーをシミュレートします。
  • 地理的位置: LoadView を使用すると、ユーザーがさまざまな場所から来て、異なるパフォーマンスを経験するため、最も現実的なテスト シナリオを作成するための 20 以上の地理的位置から負荷を生成できます。
  • レポート. LoadViewは、パフォーマンスの問題に対するウェブサイト/アプリケーションの最適化をすぐに開始できるように、有用な洞察を持つ詳細なパフォーマンステストレポートを生成します。

LoadViewは、SPAロードテストのWebサイトやアプリケーション、API、ストリーミングサービスなどのテストに最適です。 プラットフォームは、制限や以前のプログラミングスキルや経験なしに、テスト要件に従って負荷を生成できます。

LoadView を使用した単一ページ アプリケーションのロード テスト

一方 、LoadView は実際のブラウザーのように動作し、ブラウザー レベルで JavaScript の実行と認証ロジックをサポートしています。 必要なのは、組み込みの EveryStep Web Recorder スクリプト ツールを使用して SPA ページでユーザー アクションをスクリプト化し、ロード テストを設定、構成、および実行することだけです。 LoadView を使用してロード テストを設定および構成する方法の完全な概要については、LoadView の概要に関するその他の記事については、 テストの基本 セクションを参照してください。

テストは、他のロードテストツールと比較してより現実的なテスト結果を提供する実際のユーザーのアクションと動作をシミュレートするために、実際のブラウザ(Chrome または Edge オプションが利用可能)で実行されます。

Web アプリケーションと SPA ロード テストの詳細については、「 ロード テストのセットアップの概要 」または「Web アプリケーション タスクのナレッジ ベース の構成」 の記事を参照してください。

単一ページ アプリケーションロードテストの一般的な使用例

SPA テストの性質を示すために、Dotcom モニター アカウント設定メニューの [ユーザー ] ページでユーザー データを変更するプロセスを繰り返すテスト シナリオを考えてみましょう。 このページは、SPA の典型的な例です。

[ユーザー ] ページは認証されるため、ページをテストする前にアプリケーションにログインする必要があります。 前に説明した SPA 認証の特徴のため、ログイン テストはブラウザーなしでは難しい場合があります。

認証結果に応じて、ページのコンテンツが読み込まれます。 一般に、UI を含むすべてのデータはバックエンドで処理され、HTML で配信されます。 したがって、データを受信するには、GET 要求をページ URL に送信する必要があります。 ただし、SPA に関しては、JavaScript スクリプト以外のサーバー応答にはデータがありません。 下の写真でページソースを見つけてください。

サーバーの応答と比較して、ブラウザーによって表示されるページ要素を見てみましょう。 ブラウザは、ユーザーデータ、ヘッダー、メニューパネル、ユーザリストグリッドなど、ページのコンテンツを動的にレンダリングします。 UI 要素は HTML に含まれておらず、ブラウザーによってのみレンダリングされるため、JavaScript を実行しないとテストできません。

たとえば、[ユーザーの編集] ダイアログ ハンドラは、サーバーの初期応答に既に含まれており、呼び出しは追加で実行されません。 ポップアップ ダイアログが正しく表示されるかどうかを確認するには、関連するスクリプトの実行が必要であり、HTTP 要求では実行できません。

ユーザー データの編集時にサーバーに送信される要求の例を見つけてください。

結論: 負荷テストの場合の JMeter の制限

結論として、SPA のパフォーマンスをテストする場合 、LoadViewなどの実際のブラウザー ベースのロード テスト ソリューションは、現実的で包括的な負荷テスト結果を提供できます。 LoadView はクラウドベースのロード テスト ツールで、Web サイトやアプリケーションのロード テストを迅速に開始できます。 実際のブラウザとデバイスを使用して複数の地理的位置からユーザー負荷を生成し、結果の精度を最も現実的な条件で得ることができます。 ここには、ポイント アンド クリック機能を使用してテスト スクリプトを作成できる EveryStep Web レコーダーが含まれています。

プログラミング経験がなくても、LoadView は非常に使いやすいです。 LoadView では、容量計画とスケーラビリティの識別に関する探索的テストを行うために、リアルタイムで負荷を調整することもできます。 LoadView は、パフォーマンスに関する詳細な洞察を並べ替えた方法で含む高度なレポートを生成するので、ボトルネックを簡単に理解して特定して、ボトルネックを迅速に排除できます。

一方、JMeterは、パフォーマンスのボトルネックを特定し、それらを最適化するために重要なレポート機能を欠いています。 組み込みのレポートを作成しないと、パフォーマンスの問題を解決するのではなく、レポート作成や問題の把握に多くの時間を費やします。 JMeterのユーザーインターフェイスもあまり良くならないので、作業が難しいです。

すでにJMeterテストを持っていますが、LoadViewプラットフォームに統合したいですか? いくつかの簡単な手順で 、JMeterからLoadViewにWebアプリケーションのテストを変換 する方法をお読みください。

新しい読み込みビュー?今 すぐ無料トライアルを試してみて 、ロードテストクレジットで$ 20を受け取ります!