パフォーマンステストとは?

パフォーマンステストは、ウェブサイト、アプリケーション、API、データベース、ネットワーク、またはサーバーがさまざまな使用条件下でどのように動作するかを評価します。速度、応答性、スループット、安定性、スケーラビリティ、およびリソース使用量を測定するのに役立ちます。

目的は、ユーザーに影響が出る前にパフォーマンスの問題を特定することです。システムは機能テスト中には正常に動作していても、トラフィックが増加すると遅くなったり、エラーが返ったり、利用不能になることがあります。パフォーマンステストは、アプリケーションが予想される使用レベルをサポートできるかどうか、どこでボトルネックを修正する必要があるかを理解するのに役立ちます。

一般的なパフォーマンス指標には、応答時間、スループット、エラー率、同時ユーザー数、毎秒リクエスト数、CPU使用率、メモリ使用量、ネットワーク活動、およびデータベースパフォーマンスが含まれます。

パフォーマンステストの方法

パフォーマンステストは幅広いカテゴリーであり、いくつかのテスト方法が含まれています。各手法は異なるパフォーマンスの疑問に答えます。

methods of performance testing

図1:パフォーマンステストの方法

  1. ロードテスト:ロードテストは、ウェブサイト、アプリケーション、またはAPIに予想されるユーザートラフィックをシミュレートします。通常およびピーク使用レベルでのシステムの挙動を測定します。
  2. 耐久テスト:耐久テスト(ソークテストとも呼ばれる)は、長時間にわたる負荷下でのシステムのパフォーマンスを測定します。メモリリーク、リソース枯渇、キューの蓄積、そしてゆっくりとした劣化を明らかにするのに役立ちます。

endurance test

図2:耐久テスト

  1. ボリュームテスト:ボリュームテストは、多量のデータを処理するときのアプリケーションのパフォーマンスを評価します。
  2. スケーラビリティテスト:スケーラビリティテストは、ユーザー負荷、リクエストボリューム、データ量、取引量が増減する場合のシステムのパフォーマンスを測定します。
  3. スパイクテスト:スパイクテストは、トラフィックの急激な増減に対するシステムの反応を評価します。
  4. ストレステスト:ストレステストは、期待される負荷を超えてシステムに負荷をかけ、その限界点を特定し、障害と回復の様子を観察します。

 

テスト方法の比較:実例

重いホリデートラフィックに備えるeコマースサイトを考えてみましょう。企業は通常のショッピング活動、ピークトラフィック、突発的な急増、長期間の需要に対応可能かを確認したいと考えています。

ロードテストは、予想される顧客トラフィックをシミュレートできます。スパイクテストは、メールキャンペーンやフラッシュセール後の急増をモデル化できます。ストレステストは予想トラフィックを超えてサイトに負荷をかけ、限界点を探ります。耐久テストは長期間のトラフィックを流して時間経過によるパフォーマンス劣化を確認します。

パフォーマンステストの結果は、サイトオーナーがボトルネックを特定し、アプリケーションを最適化し、ホリデートラフィック到来前にインフラを準備するのに役立ちます。

パフォーマンステストはしばしばビジネス要件と結びついています。例えば、顧客はイベントチケットのアプリケーションに毎分50,000リクエストを処理できることを期待します。パフォーマンステストは、その要件が現実的かどうか、システムが対応可能かどうかを検証します。

 

ロードテストとは?

ロードテストは、現実的なユーザー負荷下でアプリケーションがどのように動作するかを測定します。目的は、ウェブサイト、アプリケーション、またはAPIが予想される使用レベルを処理しつつ、許容できる応答時間、スループット、エラー率を維持できることを確認することです。

ロードテストは以下のような疑問に答えるのを助けます:

  • システムは通常のトラフィック下でどのように機能するのか?
  • ピークトラフィック時にはパフォーマンスはどう変化するのか?
  • システムは同時にどれだけのユーザーまたはトランザクションを処理できるのか?
  • 応答時間が劣化し始めるのはどこか?
  • どのページ、API、ワークフローがボトルネックになっているのか?

ロードテストの方法

ボリュームテスト:ボリュームテストは、大量のデータを処理する際にシステムがどのように動作するかを測定します。これには大容量ファイル、データベースレコード、メッセージ、トランザクション、APIペイロードが含まれることがあります。

スケーラビリティテスト:スケーラビリティテストは、負荷が増加してもアプリケーションがパフォーマンスを維持できるかを測定します。これにより、システムがより多くの容量、高度なキャッシュ、データベースの最適化、改善された自動スケーリング、またはアーキテクチャの変更を必要とするかどうかを判断できます。

ロードテスト:実例

ホリデーシーズンに多数の販売を見込むオンラインストアを考えてみましょう。企業は、閲覧、商品検索、カート操作、チェックアウト、支払い、注文確認の期間中にアプリケーションが予想トラフィックに耐えられるかを知る必要があります。

ロードテストは通常およびピークトラフィックをシミュレートして応答時間、スループット、エラー、リソース使用量を測定します。その結果は、チームがサイトを最適化し、ホリデーラッシュ時のダウンタイムや取引失敗のリスクを減らすのに役立ちます。

例えば、アプリケーションが毎分5,000リクエストを処理することが期待されている場合、ロードテストはそのレベル付近でシステムが許容可能に動作するかを検証します。これにより、実際のユーザーが到達する前に失敗の可能性を減らせます。

 

ストレステストとは?

ストレステストは、アプリケーションが極端な条件下でどのように動作するかを評価します。期待されるトラフィックだけでなく、システムが遅くなったり、エラーを返したり、不安定になったり、障害を起こすまで負荷を増加させます。

目的は限界点を見つけ、システムの障害の仕方を理解し、正常に回復できるかを検証することです。ストレステストはまた、容量、アーキテクチャ、インフラの改善点を決定するのにも役立ちます。

ストレステストの方法

スパイクテスト:スパイクテストは、急激かつ大幅なトラフィック増加に対するアプリケーションの反応を測定します。フラッシュセール、速報、製品ローンチ、登録窓口、大規模なマーケティングキャンペーンに有用です。

ボリュームテスト:ボリュームテストは、異常に大量のデータ負荷時にアプリケーションがどのように動作するかを理解するためにストレステスト文脈で利用されることもあります。

構成テスト:構成テストは、異なるハードウェア、ソフトウェア、インフラ、環境設定下でアプリケーションがどのように機能するかを評価します。インスタンスサイズ、スケーリングルール、データベース設定、キャッシュ構成、デプロイメントオプションの比較に役立ちます。

ストレステスト:実例

会計年度末に大量の取引量が見込まれる銀行用アプリケーションを考えましょう。企業は想定通りのトラフィックに対応できるかだけでなく、予測を超えた場合に何が起こるかを知る必要があります。

ストレステストは予測を超えた負荷をかけて、応答時間の劣化、エラーの増加、サービスの障害が起こるポイントを特定します。スパイクテストは急激な活動の急増をシミュレートし、ボリュームテストは取引データの増加時の挙動を示します。結果はチームが容量、耐障害性、回復挙動を改善するのに役立ちます。

もしAPIが同時に5,000リクエスト処理できる設計であっても、それを超えるとシステムは遅くなったり障害を起こしたりするかもしれません。その限界を知ることで、チームはアプリケーションのスケールアップやボトルネックの調整、保護制御の設定を本番トラフィック到達前に行えます。

 

パフォーマンステスト、ロードテスト、ストレステストの主な違い

パフォーマンステスト、ロードテスト、ストレステストは関連していますが同じものではありません。パフォーマンステストは広範なカテゴリーです。ロードテストとストレステストは特定の種類のパフォーマンステストです。

パフォーマンステストは全体的な速度、安定性、応答性、スケーラビリティ、およびリソース使用量を測定します。ロードテストは期待されるおよびピークトラフィックに焦点を当てます。ストレステストは限界点と回復挙動を見つけるためにシステムを通常の限界を超えて押し進めます。

トピック パフォーマンステスト ロードテスト ストレステスト
定義 速度、安定性、スケーラビリティ、応答性、リソース使用量を評価する広範なテストカテゴリ。 期待されるおよびピークユーザー負荷下でのシステムの挙動を評価するパフォーマンステストの一種。 期待される限界を超えてシステムを押し、障害ポイントを特定するパフォーマンステストの一種。
主な目的 異なる条件下でのシステム全体のパフォーマンスを理解する。 アプリケーションが予想されるトラフィックとビジネス需要に対応できるか確認する。 限界点を見つけ、システムの障害と回復の様子を理解する。
典型的な負荷レベル テストタイプと目的により異なる。 通常、予想、およびピークトラフィックレベル。 極端なトラフィックや通常の期待を超えた条件。
主要指標 応答時間、スループット、エラー率、リソース使用、可用性、安定性。 応答時間、同時ユーザー数、毎秒トランザクション数、スループット、エラー率。 エラー率、限界点、回復時間、飽和度、障害挙動。
一般的なシナリオ ベースラインテスト、ロードテスト、ストレステスト、スパイクテスト、スケーラビリティテスト、耐久テスト。 予想トラフィック、ピークトラフィック、キャンペーントラフィック、eコマースのチェックアウト負荷、APIリクエストボリューム、ユーザージャーニーテスト。 予測超過トラフィック、突発的な過負荷、リソース枯渇、フェイルオーバー挙動、システム回復テスト。
テストアプローチ 定義された条件下でパフォーマンスを測定し、目標やベースラインと比較する。 実際的なトラフィックを適用してシステムがパフォーマンス目標を達成するか検証する。 システムが劣化、障害、停止条件に達するまで負荷を増加させる。
一般的なツール LoadView、JMeter、Gatling、LoadRunner、k6、BlazeMeter、その他のパフォーマンステストプラットフォーム。 LoadView、JMeter、Gatling、LoadRunner、k6、BlazeMeter、その他のロードテストツール。 LoadView、JMeter、Gatling、LoadRunner、k6、BlazeMeter、その他のストレステストツール。
例 複数のテストタイプで応答時間、スループット、エラー、リソース使用量を測定する。 eコマースサイトが予想されるブラックフライデートラフィックを処理できるかテストする。 期待されるブラックフライデートラフィックを超えてeコマースサイトに負荷をかけて障害点を探る。

パフォーマンス、ストレス、ロードテストの比較:まとめ

パフォーマンステストは、システムが異なる条件下でどのように動作するかを測定する広範な実践です。ロードテストは、期待されるおよびピーク使用に焦点を当てたパフォーマンステストの特定の種類です。ストレステストは、限界点と回復挙動を特定するためにシステムを期待を超えて押し進める別の種類のパフォーマンステストです。

これら三つはいずれも有用ですが、異なる質問に答えます。パフォーマンステストは「システムはどのように動作するか?」を問い、ロードテストは「システムは予想される負荷に耐えられるか?」を問い、ストレステストは「システムが限界を超えられたらどうなるか?」を問いかけます。

これらの方法を組み合わせることで、ユーザーに影響が出る前に速度、安定性、容量、スケーラビリティ、リスクをより明確に理解できます。

これらの方法を実践するために、LoadViewのパフォーマンステストサービスは、負荷およびストレステストの計画と実行、結果分析、改善の優先順位決定を支援します。