ページを選択

ロード テスト テクノロジ

次のプロトコルは、LoadView テスト プラットフォームでネイティブにサポートされています。

詳細については、以下のテクノロジのいずれかを選択してください。

AJAX ロード テスト

20年以上前、ページ全体を再読み込みしながら、退屈な白い画面を表示せずにウェブ ページを更新する方法はありませんでした。 ありがたいことに、AJAX はこのギャップを解消し、非同期データ読み込み概念を導入しました。 今日では、このコンセプトは、リッチでインタラクティブなウェブ アプリケーションの基盤となっています。

AJAX は、非同期 JavaScript と XML の略語であり、HTML、CSS、JavaScript、XMLHttpRequest、および PHP などのサーバー側のスクリプト言語で構成されているため、テクノロジ以上の機能です。 AJAX 要求は、次の 6 つの手順で構成されます。

  1. ウェブ ページでコンテンツ変更イベントが発生する
  2. この ウェブ ページのハンドラーは、XMLHttpRequest オブジェクトを作成します。
  3. オブジェクトは、サーバーからドキュメントを要求します。
  4. サーバーは適切なデータを取得し、それを送り返します
  5. XMLHttpRequest は、データが到着したことを ウェブ ページに通知するイベントを発生させます。
  6. ハンドラはデータを処理し、それを表示します

パフォーマンス エンジニアの観点から見ると、このような非同期通信の自動化は難しいという点で問題があります。 1 時間あたり 100 人の同時ユーザーと 10000 件の検索に対応する必要がある ウェブ アプリケーションの負荷テストを検討してください。 このアプリケーションの平均応答時間が 3 秒の境界内にあるかどうかを検証する必要があります。

ロード テスト シナリオでは、基本的に次の 2 つのオプションがあります。

 

  1. プロトコルベースのシミュレーション
  2. ブラウザベースのシミュレーション

プロトコルレベルとブラウザレベルの負荷シミュレーションを比較してみましょう。 次の表は、この実験の結果を反映しています。

形容

スクリーンショット

プロトコル レベルシミュレーション

1 クライアントサーバー要求

0.52 秒の読み込み時間

AJAX プロトコル シミュレーション

ブラウザ レベルのシミュレーション

32 クライアントサーバー要求

2.18 秒の読み込み時間

AJAX ブラウザのシミュレーション
プロトコルベースのシミュレーションを使用する場合、クライアント側で応答時間の大部分が失われるため、10000 x 31 = 310,000 の要求を見逃し、誤った応答時間を報告します。 明らかに、これは完全に不正確なロード テスト結果につながります。

AngularJS ロードテスト

フロントエンド開発者は複雑なコードを簡素化するのに役立つ AngularJS が大好きです。 このシンプルで強力なフレームワークは、UI フローの宣言的な記述を使用して、エラーが発生しやすい DOM 操作の問題を解決します。 AngularJS は、オープンソースの JavaScript フレームワークであり、次のような簡単なスクリプトタグを使用してページに追加できます。

<スクリプト src=”https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js”>
</スクリプト>

これは、問題の分離をサポートし、静的 HTML に動的な要素をもたらします。 他のアプリケーションと同様に、AngularJS ベースのシステムも、パフォーマンスの問題によって迅速に影響を受ける可能性があります。 次のNG負荷テストプロジェクトでスピードアップするために取ることができるいくつかのステップを次に示します。

  • DOM 操作の数を最小限に抑える
  • DOM ツリーの要素の合計を減らす
  • Chrome プロファイラーを使用してメモリフットプリントを確認する
  • ウォッチャーのアクティビティを減らす

LoadViewは正確なAngularJS負荷テストに関して必要なすべてを提供します。

以下の例では、AngularJS に基づくメッセージ入力を使用しています。 下のスクリーンショットは、左側にソースコード、右側にアプリが含まれています。

AngularJS メッセージ入力

形容

スクリーンショット

AngularJS アプリケーションのテスト スクリプトを記録する

EveryStep Web レコーダーを使用して AngularJS スクリプトを記録する

AngularJS レコード テスト スクリプト

AngularJS アプリケーションの設計ロード テスト

テスト実行計画の構成

AngularJS 設計ロード テスト

フラッシュロードテスト

Flash はオーサリング ソフトウェアで、ベクター グラフィックベースのアニメーションを作成するために使用されます。 これはプラットフォームに依存しない技術であり、Flashプレーヤーがインストールされているマシン上で動作します。 セキュリティ上の懸念から、企業は多くの場合、インフラストラクチャからFlashを禁止します。 ただし、オーバーヘッドが低いため、Flash を使用して優れたアプリケーションを構築できます。 しかし、Flashの小さな欠点の1つは、有効なFlashプレーヤープラグインなしでは実行されないことです。

LoadViewは、正確なFLASHロードテストに関して必要なものすべてを提供します。 私は単純なフラッシュベースの電卓を使用しました: https://www.dotcom-tools.com/samples/Calculator.html. ロード テスト シナリオでは、単純な 1 + 2 = 3 の計算が実行されます。

形容

スクリーンショット

Flash アプリケーションのテストスクリプトを記録する

EveryStep Web レコーダーを使用してスクリプトを記録する

検証の追加

スクリプトの実行とアップロード

テスト スクリプトのフラッシュ レコード

フラッシュ アプリケーションのロード テストを設計する

テスト実行計画の構成

世界中のロード インジェクタで仮想ユーザーを配布する

ロード テストのフラッシュ デザイン

フラッシュ アプリケーションのロード テストを実行する

LoadView がロード・アップする方法を確認し、ロード・テスト中の Flash アプリケーションの応答時間をメモします。

ロード テストのフラッシュ実行

フラッシュアプリケーションの結果分析

テストの実行が完了すると、LoadViewは詳細なレポート、ビデオ、ウォーターフォールチャートやビデオなどの貴重な洞察を提供します。

これらの開発チームを共有して、ホットスポットの根本原因を特定します。

フラッシュ結果分析

既知の問題

Flash ベースのアプリケーションのスクリプトは、インターネット エクスプローラでのみ機能します。 Chrome や他のブラウザを使用して録画を行うと、次のエラーが表示されます。

フラッシュの問題

HTML5 ロードテスト

HTML5 は、HTML の 5 番目のバージョンであり、標準であり、ウェブ アプリケーションのバックボーンです。 HTLM5 の成分は次のとおりです。

  • 構造を提供する HTML
  • プレゼンテーションの世話をするCSS
  • 物事を起こさせるJavaScript

HTML5は、プラグインを必要とせずに、ブラウザで動作する美しいアプリケーションを実装するために必要なすべてを提供します。 このようなアプリケーションは、クロスプラットフォーム ベースのアプリケーションと呼ばれます。 お使いのブラウザがHTML5をサポートしている場合、それらは任意のデバイス上で実行されます。 以下は、ロードビューを使用したロードテスト HTML5 の例です。

形容

スクリーンショット

HTML5 アプリケーションのテスト スクリプトを記録する

EveryStep Web レコーダーを使用してスクリプトを記録する

検証の追加

スクリプトの実行とアップロード

HTML5 テスト スクリプトを記録する

HTML5 アプリケーションのロード テストを設計する

テスト実行プランの構成

世界中のロード インジェクタで仮想ユーザーを配布する

HTML5 ロード テストの設計

HTML5 アプリケーションのロード テストを実行する

LoadView が負荷を増加させるにつれて、ロード テストの実行中に HTML5 アプリケーションの応答時間と動作を表示します。

HTML5 ロード テストの実行

HTML5 アプリケーションの結果分析

テストの実行が完了すると、LoadViewは詳細なレポート、ビデオ、ウォーターフォールチャートやビデオなどの貴重な洞察を提供します。

これらの結果を Dev チームと共有して、ホットスポットの根本原因を特定します。

HTML5 結果分析

JavaScript ロード テスト

JavaScript はウェブの主要なプログラミング言語です。 ウェブ ​にインタラクティブな機能を提供するために使用され、AngularJS や AJAX などの多くのフレームワークの基盤を構築します。 ハッカーは最近、JavaScriptを使用して被害者のマシン上で重要なコマンドを実行しました。 ブラウザで JavaScript の実行を無効にすることはできますが、これによりコンピュータ上の多くの ウェブ サイトがブロックされます。

JavaScriptに関しては、いくつかの既知のパフォーマンス上の制限があります。 次の JavaScript ベースのロード テストで調査することをお勧めします。 スクリプト処理を簡単にするために、次の操作を実行できます。

 

  • ループ内のアクティビティを減らす
    • ループ内での計算は、何度も実行され、応答時間に影響を与えるので、計算を行わないでください。
  • DOM アクセスを減らす
    • DOM アクセスが遅い。 ローカル変数を作成し、必要な値を割り当てて、操作に使用します。
  • DOM サイズを縮小する
    • DOMサイズを小さくしておくと、ページの読み込み時間とJavaScript経由のDOMアクセスが高速化されます。
  • 遅延 Java スクリプトの読み込み
    • ダウンロードが完了するまでページのレンダリングがブロックされるため、ページの最後にスクリプトを読み込みます。 また、ページがレンダリングされた後にスクリプトを読み込む”defer=true”タグを使用することもできます。

LoadView は、正確な JavaScript ロード テストに関して必要なすべてを提供します。 以下の例は、JavaScript のロード テストが実際に LoadView で簡単に行える方法を示しています。

形容

スクリーンショット

アプリケーションのテスト スクリプトを記録する

EveryStep Web レコーダーを使用してスクリプトを記録する

スクリプトの実行とアップロード

JavaScript レコード テスト スクリプト

アプリケーションのロード テストを設計する

テスト実行計画の構成

世界中のロードインジェクタで仮想ユーザーを配布します。

デザインロードテスト

アプリケーションのロード テストを実行する

LoadView が負荷を増加させるにつれて、ロード テストの実行中に JavaScript アプリケーションの応答時間と動作を表示します。

ロード テストの実行

アプリケーションの結果分析

テストの実行が完了すると、LoadViewは詳細なレポート、ビデオ、ウォーターフォールチャートやビデオなどの貴重な洞察を提供します

これらの結果を Dev チームと共有して、ホットスポットの根本原因を特定します。

結果
JavaScript 結果分析

JSON ロード テスト

JSON は JavaScript オブジェクト表記 法の略語であり、XML とよく似ています。 これは非常に一般的なデータ形式であり、あらゆる種類のブラウザとサーバーの通信に使用されます。 シンプルさ、幅広いプログラミング言語サポート、低オーバーヘッドが人気の理由です。

JSON 固有のパフォーマンスホットスポットには、以下のものがあります。

  • 大きなファイルのダウンロードに時間がかかりすぎる
  • メモリ使用率が高すぎる

SOAP XML と比較すると、JSON のフットプリントは低く、読みやすくなります。 次の例は、LoadView を使用した JSON ロード テストを示しています。

当社は、当社のウェブサイト上の検索機能でJSONを使用しています。 これは対応する JSON ソースコードです。

JSON ソースコード

これは、JSON ロード テストのショーケースで使用する検索機能です。

JSON 機能

Chrome 開発者ツールを使用して、この検索フォームで使用されるリクエスト URL を特定しました。

JSON クロームデベロッパーツール
URL https://www.dotcom-monitor.com/?s=load+testを使用してこの検索要求を実行する HTTP ベースのタスクを簡単に設定できますが、JSON 検索ヒント機能にストレスを与えることはありません。 したがって、私は検索を記録し、ロードテストでそれを使用するために私たちのEveryStep Web Recorderを使用して、実際のブラウザベースのテストを設定することにしました。

形容

スクリーンショット

JSON アプリケーションのテスト スクリプトの記録

ロード テストは、スクリプトの記録から始まり、EveryStep Web レコーダーを使用します。

JSON レコードテストスクリプト

JSON アプリケーションのロード テストの設計

この手順では、テスト計画と場所を構成できます。

JSON デザインロードテスト

JSON アプリケーションのロード テストを実行する

LoadView が負荷を増加させるにつれて、ロード テストの実行中に JSON アプリケーションの応答時間と動作を表示します。

JSON 実行ロード テスト

JSON アプリケーションの結果分析

LoadView は、問題を特定し、変更を実装するために開発者と共有できるウォーターフォール グラフとレポートを生成します。

JSON 結果分析

単一ページのアプリケーションロードテスト

単一ページ アプリケーション (SPA) は、サーバーから新しいページ全体を読み込む代わりに、現在のページを動的に書き換えるため、デスクトップ アプリケーションのように動作します。 このような SP に対するユーザー エクスペリエンスは、中断が少ないため、多くの場合、より優れています。 フレームワークをダウンロードする必要があるため、通常、SPA の初期読み込み時間は長くなります。 SOAP、JSON、または AJAX は、SPA クライアントとサーバー間の通信に頻繁に使用されます。

SPA の最も高いパフォーマンスの問題には、次のようなものがあります。

  • 初期ページ読み込み時間が長い
    • フレームワークのサイズを縮小する
  • メモリリーク
    • SPA のメモリ フットプリントを定期的に確認する
  • データプレゼンテーション
    • オブジェクトまたはデータの読み込みを遅延する (遅延データの読み込み)

LoadViewは、正確なSPAロードテストに関して必要なものすべてを提供します。 この負荷テストショーケースでは、次のアプリケーションを使用 https://www.welcometofillory.com/map。

形容

スクリーンショット

単一ページ アプリケーションのテスト スクリプトを記録する
SPA レコード テスト スクリプト

単一ページ アプリケーションのロード テストを設計する

SPA 設計ロード テスト
シングル ページ アプリケーションのロード テストを実行する

LoadView が負荷を増加させるにつれて、ロード テストの実行中にアプリケーションの応答時間と動作を表示します。

SPA 実行ロード テスト

単一ページアプリケーションの結果分析

SPA 結果分析

前に述べたように、SPA の初期ページ読み込み時間は、多くの場合、かなり長いです。 このショーケースでは、この最初のページのダウンロードに35秒以上かかり、ページサイズは95 MB以上です。 明らかに、このアプリケーションは、いくつかのチューニングが必要です。

SOAP ロード テスト

簡易オブジェクト アクセス プロトコル (SOAP) は、プログラミング言語以外の機能です。 開発言語である JavaScript とは対照的に、SOAP はあらゆるデバイスとオペレーティング システム間で通信を可能にします。 SOAP の基本的な構成要素は XML です。 SOAP では、メッセージの送受信形式が導入されました。

SOAP に関連する最も一般的なパフォーマンス ホットスポットの一部を次に示します。

  • おしゃべりなアプリケーション
  • キャッシュ戦略が間違っているか、ない
  • シリアル化により、高いオーバーヘッドが発生する
  • コンシューマ側または非効率的な ウェブ ​メソッド処理での入力検証なし

SOAP ベースの ウェブ サービスは、WSDL でサービスの説明を提供します。 この ウェブ サービス記述言語は、手動で自動テストを行う場合に使用できます。 以下の例では、SOAP ベースのアプリケーションのロード テストを設定する方法を示します。

この単純な CurrencyConverter は、サンプルロード テストのセットアップで使用されます。

https://www.webservicex.net/CurrencyConvertor.asmx?WSDL

SOAP 通貨コンバータ

次の手順では、LoadView を使用して SOAP ロード テストを実行する方法を示します。

形容

スクリーンショット

アプリケーションのテスト スクリプトを作成する

HTTP タスクを作成し、POST 要求の詳細を追加します。

SOAP 作成スクリプト
SOAP テスト スクリプト

アプリケーションのロード テストを設計する

SOAP デザインロードテスト

アプリケーションのロード テストを実行する

LoadView が負荷を増加させるにつれて、ロード テストの実行中に SOAP アプリケーションの応答時間と動作を表示します。

SOAP 実行ロード テスト

アプリケーションの結果分析

SOAP の結果
SOAP 結果分析

ウェブ API REST ロード テスト

REST は、表現状態転送の略で広く使用されている通信規格です。 データをマシンで読み取り可能な形式で構造化し、XML または JSON を使用します。 機能主導の高い SOAP とは対照的に、REST は非常にデータ駆動型です。 RESTful API と RESTful サービスは、この分野でよく使用される用語ですが、REST サービス以外の意味でしかありません。

REST サービスのパフォーマンス テストは、サービスへのデータの送信またはサービスからの応答の検証に関するものです。 最も一般的な REST パフォーマンス ホットスポットには、次のようなものがあります。

  • おしゃべりなサービス
  • データの転送が多すぎるか、または必要とされない
  • TCP 接続の再利用なし

開発者コミュニティは、SOAP または REST で ウェブ サービスを実装するかどうかに同意しないことがよくあります。 パフォーマンスの観点から見ると、REST ベースのサービスは速度を重視して設計されています。 プロトコルのオーバーヘッドが低く、XML 解析は必要ありません。 以下のケース スタディは、LoadView を使用して ウェブ API REST テストを実行する方法を示しています。

形容

スクリーンショット

レストサービス用のテストスクリプトを作成する

HTTP タスクの作成

GET 要求の詳細を追加する

キーワードの検証を追加する

REST テスト スクリプトの作成

アプリケーションのロード テストを設計する

テストおよび実行計画を設定します。

REST デザインロードテスト

アプリケーションのロード テストを実行する

テストが開始されるロードカーブを確認します。

REST 実行ロード テスト

アプリケーションの結果分析

結果を分析し、Dev チームと共有します。

REST 結果分析

ウェブソケットロードテスト

WebSocket は、クライアントとサーバー間の双方向通信を可能にするように設計されており、これは、両方の当事者が同時に通信し、 データ を交換することを意味します。 真の同時実行とパフォーマンスの最適化は、WebSocket の 2 つの重要なポイントです。

WebSocket を使用する利点は、次のとおりです。

  • 双方向
    • 定義済みのメッセージ パターンがないため、クライアントまたはサーバーは相手にメッセージを送信できます
  • 全二重
    • クライアントとサーバー間の独立した通信
  • 単一 TCP 接続
    • HTTP 接続をアップグレードし、クライアントとサーバーが同じ TCP 接続を介して通信する

WebSocket を REST ベースまたは SOAP ベースの通信パターンと比較すると、WebSocket は同じ TCP 接続の再利用を可能にするため、前者の応答時間がはるかに優れています。 調査によると、WebSocket ベースのサービスは最大 10 倍高速です。

このテストでは、いくつかの基本的な質問に答えるChatBotを使用します。

形容

スクリーンショット

WebSocket ベースのアプリケーションのテスト スクリプトを記録する

ウェブソケットレコードテストスクリプト

WebSocket ベースのアプリケーションのロード テストを設計する

テスト計画を作成し、さまざまなテスト場所に負荷を分散します。

Web ソケット設計ロード テスト

WebSocket ベースのアプリケーションのロード テストを実行する

ロード テストを実行する Web ソケット

WebSocket ベースのアプリケーションの結果分析

ウェブソケットの結果分析

ジェンキンスの LoadView プラグインを使用したロード テスト

Jenkins の LoadView プラグインを使用すると、パフォーマンス テスト チームは、実際のブラウザー ベースのロード テストを Jenkins テスト ビルドに簡単に組み込むことができます。 これにより、アプリケーションが長期間にわたって継続的にテストおよび評価されるようになり、コードやアプリケーションが運用環境にプッシュされる前に、チームがエラーやボトルネックを特定して対処できるようになります。

パフォーマンスの問題を早期に発見し、LoadViewパフォーマンステストをCI開発プロセスに統合することで、より信頼性の高いアプリケーションを本番環境にリリースします。 包括的なテスト レポートを作成し、コードのパフォーマンスに関する洞察を得ます。

ジェンキンスロードテスト
ロード テストを
次のレベル

無限のスケーラビリティで比類のない機能を体験できます。 クレジットカードなし、契約なし。