想定される高い負荷をかけて安定して動作するかを確認するテスト。
負荷テストとは、多数の利用者が同時に使う状況など、想定される高い負荷をかけて、システムが安定して動作し続けるかを確認するテストです。本番で起こりうる混雑を、本番前にわざと再現して確かめます。
通常時は問題なくても、アクセスが集中すると応答が遅くなったり、最悪の場合システムが停止したりします。負荷テストはこうした混雑時の弱点を事前に発見することを狙います。性能テストの一種で、特に「高負荷時の安定性」に焦点を当てたものです。
身近な例で考えると、橋の耐荷重試験に似ています。完成した橋に大量の重りやトラックを載せて、想定される交通量に耐えられるかを確認してから開通させる──このように「実際の混雑を前もって試す」のが負荷テストです。上の図解で、大量アクセスに耐えられるか確認する流れを示しています。
負荷のかけ方によって、大きく次の3種類に分けられます。
・負荷テスト(ロードテスト):想定される高い負荷をかけ、その範囲内で要求どおり安定して動くかを確認する
・ストレステスト:あえて限界を超える過大な負荷をかけ、どこで壊れるか・壊れたあと安全に回復できるかを確認する
・耐久テスト(ロングランテスト):通常の負荷を長時間かけ続け、メモリリーク(=使った記憶領域が解放されず徐々に圧迫される不具合)などで時間経過とともに劣化しないかを確認する
違いは「負荷の大きさ」と「かけ続ける時間」です。負荷テストは想定の範囲内、ストレステストは想定を超える過大な量、耐久テストは大きさより継続時間に注目します。
マラソンにたとえると、負荷テストは「本番のペースで走れるか」、ストレステストは「限界まで全力疾走したらどこで脚が止まるか」、耐久テストは「ゆっくりでも何時間も走り続けられるか」を確かめるイメージです。
負荷テストは主に次のような用途で使われます。
・処理能力の上限(キャパシティ)の把握:同時に何人まで安定して使えるかを知る
・キャパシティプランニング:把握した上限をもとに、必要なサーバー(=サービスを提供する側のコンピュータ)の台数や性能を計画する
・ボトルネックの発見:処理が詰まる原因箇所を特定し、改善する
・本番前の安全確認:セール開始やイベント時のアクセス集中に耐えられるかを事前に確かめる
とくに重要なのがキャパシティプランニングです。負荷テストで「このシステムは同時1万人まで安定する」と分かれば、想定利用者数に応じて機器を増強するか、現状で足りるかを根拠を持って判断できます。
身近な例で考えると、イベント会場の収容人数の検討に似ています。「この会場は何人まで安全に入れるか」を事前に把握し、来場予想に対して足りなければより大きな会場を手配する──負荷テストはシステムにとって同じ役割を果たします。