what is scalability testing
スケーラビリティテストの概要:
スケーラビリティテストは、アプリケーションのパフォーマンスを、ユーザー要求の数または他のそのようなパフォーマンス測定属性をスケールアップまたはスケールダウンする能力の観点から測定する、機能しないテスト方法です。
スケーラビリティテストは、ハードウェア、ソフトウェア、またはデータベースレベルで実行できます。
このテストに使用されるパラメーターはアプリケーションごとに異なります。Webページの場合はユーザー数、CPU使用率、ネットワーク使用率であり、Webサーバーの場合は処理された要求の数です。
このチュートリアルでは、の完全な概要を説明します スケーラビリティテストとその属性、およびテストの実行に関連するさまざまな手順と実際の例を使用して、概念をよりよく理解できるようにします。
学習内容:
スケーラビリティテストと負荷テスト
負荷テストは、システムがクラッシュする最大負荷の下でテスト対象のアプリケーションを測定します。負荷テストの主な目的は、ユーザーがシステムを使用できなくなるピークポイントを特定することです。
負荷とスケーラビリティの両方がパフォーマンステストの方法論に含まれます。
スケーラビリティテストは、ソフトウェア、ハードウェア、データベースレベルを含むすべてのレベルで、最小負荷と最大負荷でシステムを測定するという点で、負荷テストとは異なります。最大負荷が見つかったら、開発者は適切に対応して、特定の負荷の後でシステムがスケーラブルであることを確認する必要があります。
例: スケーラビリティテストで最大負荷が10,000ユーザーであると判断された場合、システムをスケーラブルにするには、開発者は10,000ユーザー制限に達した後の応答時間の短縮や、増加するユーザーデータに対応するためのRAMサイズの増加などの要因に対処する必要があります。
テキストソフトウェアへの最高の声
負荷テストでは、開発したアプリケーションに一度に最大の負荷をかける必要がありますが、スケーラビリティテストでは、一定期間にわたって徐々に負荷を増やしていきます。
負荷テストはアプリケーションがクラッシュするポイントを決定しますが、スケーラビリティはアプリケーションのクラッシュの理由を特定し、問題を解決するための手順を実行しようとします。
つまり、負荷テストはパフォーマンスの問題を特定するのに役立ち、スケーラビリティテストはシステムが増加するユーザー数にスケールアップできるかどうかを特定するのに役立ちます。
スケーラビリティテストの属性
スケーラビリティテスト属性は、このテストの実行に基づくパフォーマンス測定値を定義します。
一般的な属性のいくつかを次に示します。
1)応答時間:
- 応答時間は、ユーザー要求からアプリケーション応答までの時間です。このテストは、最小負荷、しきい値負荷、および最大負荷の下でのサーバーの応答時間を特定して、アプリケーションが中断するポイントを特定するために行われます。
- 応答時間は、アプリケーションのユーザー負荷の変化に基づいて増減する場合があります。理想的には、アプリケーションの応答時間は、ユーザーの負荷が増加し続けるにつれて減少します。
- アプリケーションは、さまざまなレベルのユーザー負荷に対して同じ応答時間を提供できる場合、スケーラブルであると見なすことができます。
- アプリケーションの負荷が複数のサーバーコンポーネントに分散されているクラスター環境の場合、スケーラビリティテストでは、ロードバランサーが複数のサーバーに負荷を分散している範囲を測定する必要があります。これにより、一方のサーバーがリクエストで過負荷にならないようにし、もう一方のサーバーはアイドル状態でリクエストの受信を待機します。
- アプリケーションがクラスター環境でホストされている場合は、各サーバーコンポーネントの応答時間を慎重に測定する必要があります。スケーラビリティテストでは、各サーバーにかかる負荷の量に関係なく、各サーバーコンポーネントの応答時間が同じである必要があります。
- 例: 応答時間は、ユーザーがWebブラウザーでURLを入力してから、Webページがコンテンツをロードするまでの時間として測定できます。応答時間が短いほど、アプリケーションのパフォーマンスは高くなります。
2)スループット:
- スループットは、アプリケーションによって単位時間に処理された要求の数の尺度です。
- スループットの結果は、アプリケーションごとに異なる場合があります。 Webアプリケーションの場合、スループットは、単位時間あたりに処理されたユーザーリクエストの数と、データベースの場合に測定されます。スループットは、単位時間に処理されたクエリの数で測定されます。
- アプリケーションは、内部アプリケーション、ハードウェア、およびデータベースのさまざまなレベルの負荷に対して同じスループットを提供できる場合、スケーラブルであると見なされます。
3)CPU使用率:
- CPU使用率は、アプリケーションによってタスクを実行するためのCPU使用率の尺度です。 CPU使用率は通常、メガヘルツの単位で測定されます。
- 理想的には、アプリケーションコードが最適化されているほど、観察されるCPU使用率は低くなります。
- これを実現するために、多くの組織は標準のプログラミング手法を使用してCPU使用率を最小限に抑えています。
- 例: アプリケーションのデッドコードを削除し、スレッドの使用を最小限に抑えます。スリープ方式は、CPU使用率を最小限に抑えるためのベストプログラミングプラクティスの1つです。
4)メモリ使用量:
- メモリ使用量は、アプリケーションによってタスクを実行するために消費されるメモリの尺度です。
- 理想的には、メモリは、開発されたアプリケーションがランダムアクセスメモリ(RAM)にアクセスするために使用するバイト(メガバイト、ギガバイト、またはテラバイト)で測定されます。
- アプリケーションのメモリ使用量は、プログラミングのベストプラクティスに従うことで最小限に抑えることができます。
- プログラミングのベストプラクティスの例としては、冗長ループを使用しない、データベースへのヒットを減らす、キャッシュを使用する、SQLクエリの使用を最適化するなどがあります。アプリケーションは、メモリの使用量を最小限に抑えれば、スケーラブルであると見なされます。可能な最大の範囲。
- 例: 指定された数のユーザーが使用できるストレージスペースがメモリ不足になると、開発者はデータの損失を補うためにデータベースストレージを追加する必要があります。
5)ネットワークの使用:
- ネットワーク使用量は、テスト対象のアプリケーションによって消費される帯域幅の量です。
- ネットワーク使用の目標は、ネットワークの輻輳を減らすことです。ネットワーク使用量は、1秒あたりの受信バイト数、1秒あたりの受信フレーム数、1秒あたりの送受信セグメント数などで測定されます。
- 圧縮技術の使用などのプログラミング技術は、輻輳を減らし、ネットワークの使用を最小限に抑えるのに役立ちます。アプリケーションは、最小限のネットワーク輻輳で実行でき、高いアプリケーションパフォーマンスを提供できる場合、スケーラブルであると見なされます。
- 例: 開発者は、ユーザーリクエストを処理するためのキューメカニズムに従う代わりに、リクエストがデータベースに到着したときにユーザーリクエストを処理するコードを記述できます。
これらのパラメーターとは別に、サーバー要求の応答時間、タスクの実行時間、トランザクション時間、Webページの読み込み時間、データベースから応答をフェッチする時間、再起動時間、印刷時間、セッション時間、画面遷移など、あまり使用されないパラメーターはほとんどありません。 、1秒あたりのトランザクション数、1秒あたりのヒット数、1秒あたりのリクエスト数など。
Webアプリケーションのパフォーマンス測定値は、デスクトップまたはクライアントサーバーアプリケーションのパフォーマンス測定値と同じでない場合があるため、スケーラビリティテストの属性はアプリケーションごとに異なる場合があります。
携帯電話をスパイするためのアプリ
アプリケーションのスケーラビリティをテストする手順
アプリケーションでこのテストを実行する主な利点は、最大負荷に達したときのユーザーの動作とそれを解決する方法を理解することです。
また、このテストにより、テスターはアプリケーションユーザーの負荷に関してサーバー側の劣化と応答時間を特定できます。その結果、このテストは世界中のいくつかの組織で好まれています。
以下に、アプリケーションのスケーラビリティをテストするための手順のリストを示します。
- スケーラビリティテスト属性ごとに繰り返し可能なテストシナリオを作成します。
- 低、中、高の負荷など、さまざまなレベルの負荷についてアプリケーションをテストし、アプリケーションの動作を確認します。
- スケーラビリティテストサイクル全体に耐えるのに十分安定したテスト環境を作成します。
- このテストを実行するために必要なハードウェアを構成します。
- さまざまなユーザー負荷の下でのアプリケーションの動作を検証するための仮想ユーザーのセットを定義します。
- 内部アプリケーション、ハードウェア、およびデータベースの変更のさまざまな条件下で、複数のユーザーに対してテストシナリオを繰り返します。
- クラスター環境の場合は、ロードバランサーがユーザー要求を複数のサーバーに送信しているかどうかを検証し、一連の要求によってサーバーが過負荷にならないようにします。
- テスト環境でテストシナリオを実行します。
- 生成されたレポートを分析し、改善された領域がある場合はそれを確認します。
結論
手短に、
=>スケーラビリティテストは、アプリケーションがさまざまな属性にスケールアップまたはスケールダウンできるかどうかを検証するための非機能的なテスト方法です。このテストに使用される属性は、アプリケーションごとに異なります。
=>このテストの主な目的は、アプリケーションが最大負荷でいつ劣化し始めるかを判断し、開発されたアプリケーションが内部アプリケーション、ソフトウェア、ハードウェア、およびデータベースの変更に対応するのに十分なスケーラブルであることを確認するための適切な手順を実行することです。将来の変化。
=>このテストが適切に行われると、ソフトウェア、ハードウェア、およびデータベースのパフォーマンスに関する主要なエラーが、開発されたアプリケーションで発見される可能性があります。
=>このテストの主な欠点は、データベースサイズとバッファスペースに制限がある、データストレージの制限です。また、ネットワーク帯域幅の制限は、スケーラビリティテストの障害になる可能性があります。
=>スケーラビリティテストのプロセスは、あるアプリケーションのスケーラビリティテスト属性が他のアプリケーションとは異なるため、組織ごとに異なります。