🐕

パフォーマンステストと負荷テストの違いを理解する

2023/05/21に公開

概要

表題のテストの要件を定義する際に、役割が似ており、相互補完の役割を担っています。
しかしその結果、実際に求められているものがどちらなのかを見誤り、
測定方法や結果がズレることがあります。
この記事では各々の定義の差異を明らかにして、
計測したい目的とあったデータを提供できることを目的にします。

1. パフォーマンステスト

システムのスピード、応答時間、安定性、信頼性などを測定するためのテストです。
特定のワークロード条件下 で、システムがどのように機能するかを評価するために行います。
先に定めた条件下で、システムの性能を検査し、ボトルネックになっている部分はどこなのか、
改善点はあるのかを明らかにするために行います。

ワークロード条件下

PM8時台のアクセスユーザー数を想定、など具体的な再現条件を指します。

利用できるテストパターン

  1. Average-load test(アベレージロードテスト)
  2. Soak tests(ソークテスト)

2. 負荷テスト

システムが期待されるトラフィックやデータ量を処理できるかを確認するためのテストです。
このテストでは、システムに大量のリクエストやデータを送り込み、
そのパフォーマンスと耐久性を評価することを目的にしています。
負荷テストは一般的に、システムの 「限界」 を見つけ出すために行います。

限界の定義

システムが正常に動作し続けることができる、最大の負荷を指します。
Webサービスであれば、400 or 500代のエラーを出さないで、
何処まで稼働し続けるかも一つの指標になります。
限界の計測値には次のような項目が挙げられます。

代表的な計測値

  1. 同時ユーザー数:システムが一度に処理できるユーザーの数。
  2. トランザクション数:システムが一定時間内に処理できるトランザクションの数。
  3. 応答時間:システムがリクエストに対して応答を返すまでの時間。

利用できるテストパターン

  1. Breakpoint tests (ブレイクポイントテスト)
  2. Stress tests(ストレステスト)
  3. Spike tests(スパイクテスト)

ざっくり比較まとめ

パフォーマンステスト:システムのパフォーマンスを測定する。
負荷テスト:システムの耐久性を評価する。

パフォーマンステスト 負荷テスト
目的 システムのスピード、応答時間、安定性、信頼性を測定 システムが最大負荷を処理できるかを確認
評価対象 特定のワークロード条件下でのシステムの機能 システムのパフォーマンスと耐久性
主要な利点 ボトルネックと改善点の特定 システムの限界(最大負荷)の確認
主要な計測値 スピード、応答時間、安定性、信頼性 同時ユーザー数、トランザクション数、応答時間
使用される場面 システムのパフォーマンスの評価と最適化 システムが大量のトラフィックやデータを処理できるかの確認
再現条件の例 PM8時台のアクセスユーザー数を想定 システムに大量のリクエストやデータを送り込む

Discussion