ナレッジ
負荷テストとは。種類や目的、観点について解説

本記事では、負荷テストについて解説します。
主にエンタープライズシステムに対する負荷テストを中心に、負荷テストの目的や観点、種類等について解説していきます。
負荷テストとは
負荷テストは、テスト対象に対して何らかの制御された方法により現実的(※1)な負荷がある状態を作り出し、その状態において、システムの能力(※2)を評価、検証するテストです(図表1)。

(※1) ユーザの操作に近しく同時並列的
(※2) 性能、可用性、キャパシティ、拡張性など
負荷テストの目的
負荷テストの目的について参考文献に記載の定義・解説を引用します。
負荷テストでは、コントロールされた数の同時使用ユーザーまたはプロセスによって生成されるトランザクション要求に起因する、予想される現実的な負荷レベルの増加に対応するシステムの能力に焦点を当てる。 [1]
上記内容を平易かつ意訳的表現に置き換えますと、繰り返しになりますが、負荷テストの目的は、システムに対して現実的な負荷を発生させ、システムの能力(性能、可用性、キャパシティ、拡張性など)を評価、検証することです。
負荷テストの観点
負荷テストを考えるに当たり、いくつか押さえておくべき観点があります。
1)業務分析・負荷のモデルの分析
テスト対象のシステム上で行われる現実的な想定業務負荷を分析する観点が重要です。理由としては、現実的ではない、つまりユーザーの実業務と異なる負荷を生成してテストすることで、テストとして不適切な評価結果となり得るためです。
ただし、例外として、発生可能性は低く現実的ではないですが、設計上の想定を超える実業務負荷が発生した場合のシステムの挙動やシステム性能を確認する目的で負荷テストを行う場合があります。
また、負荷の変化量がない状況で、システムの振る舞いや性能の変化、または性能ボトルネックの発生確認は難しいと言えます。そのため、徐々に負荷を増加・変化させながら、システムの振る舞いや性能がどのように変化するかを確認することも重要です。
ただし、例外として、耐久テスト(後述)においては、一定の負荷の変化がない状態かつ長時間の負荷生成を行うことで、リソースリーク(※3) 等の確認をする場合があります。
(※3) システムリソースを適切に解放しないことで、リソースが無駄に占有され続けリソースが枯渇する現象
2)テスト対象システムの構成や状態
テスト対象システムの構成やテスト対象システムの状態についての観点も重要です。例えば、テスト環境の構成、サイジング、環境設定、経年データの蓄積、経年データのカーディナリティなどが挙げられます。
理由は、実運用と程遠い環境のサイジングや実運用に近いデータではない環境でテストすることで、システムの振る舞いや性能が変化し、テストとして不適切な評価結果となり得るためです。
3)テスト対象のシステム性能の達成度合いやボトルネックの確認
テスト対象のシステム性能の達成度合いやボトルネックの発生を確認する観点です。負荷テスト後にテスト対象システムの性能がどの程度満たされたか、性能改善後に変化したか(またはしなかったか)を確認するために、テスト設計でテスト対象システムの状態を監視する項目や性能の計測が可能な項目を検討しておくことが重要です。結果の確認はE2E側の結果のみならず、対象システム・テスト対象の状態を把握するための監視の整備も必要です。
理由としては、E2Eにおけるシステムのユーザー体感を定量的に把握する必要があることに加え、対象システム・テスト対象のシステムキャパシティの予測や、性能ボトルネックの発生確認やその原因分析(や対処)を行い適切に対処する必要があるためです。
負荷テストの手段
負荷テストを行うためには、一般的には「負荷テストツール」を利用します。
なお、負荷テストツールに対応していないテスト対象では、負荷テストツールを独自に開発する場合もあります。また、負荷テストツールの利用の仕方としては、おおむね3通りの方法があります。
- 負荷テスト用のプライベートな環境(物理や仮想のPCやサーバーなど)に、負荷テストツールをインストールし利用する
- 負荷テスト用のクラウドサービス を利用する
- 負荷テスト用の専用アプライアンスを利用する
パフォーマンステスト(性能テスト)との違い
パフォーマンステスト(性能テスト)について記載の定義を引用します。
性能テストとは、システムやコンポーネントがさまざまな負荷にさらされたときの性能(応答性)に焦点を当てたあらゆるタイプのテストを含む包括的な用語 [1]
上記について、もう少し平易な用語を用いて当記事内で再解釈します(図表2)。
用語 | [1]に記載の | [1]の定義に対する | 負荷の必要性 | 負荷の | 負荷の | 結果の |
---|---|---|---|---|---|---|
パフォーマンステスト(性能テスト)
| システムやコンポーネントがさまざまな負荷にさらされたときの性能(応答性)に焦点を当てたあらゆるタイプのテストを含む包括的な用語。 | 包括的な用語であり概念を表す。何らかの入力に対して、性能(応答時間等)を確認する。 | 計測の目的次第 | 計測の目的次第 | 並列性は1であることが多い | 応答性を確認する。 |
負荷テスト | 負荷テストは、コントロールされた数の同時使用ユーザーまたはプロセスによって生成されるトランザクション要求に起因する、予想される現実的な負荷レベルの 増加に対応するシステムの能力に焦点を当てる。 | 負荷下におけるシステム性能やシステムの振る舞いを確認する。 | 必要 | 現実的に発生し得る業務負荷相当であること | 必要 | 応答性以外にも、システムの振る舞い、挙動、リソース、拡張性、余裕率なども確認する。 |
図表2:パフォーマンステスト(性能テスト)と負荷テストの比較
負荷テストのプロセス
一般的な負荷テストのプロセスを図表3に示します。特に、要求分析・計画・設計が十分に行われていないテストプロジェクトの場合、後続のプロセスでのリカバリーが難しいケースが散見されます。要求分析・計画・設計に十分な時間配分を確保できるようなテストプロジェクトマネジメントが重要です。
さらに、各プロセスに必要となるインプット成果物およびアウトプット成果物が不足している場合があるため、各プロセスで必要となるインプットの未定義箇所がないか、記述内容の不足やあいまいな点がないか、事前に関係者と擦り合わせ・Q&A・成果物のレビューを実施することが望ましいと言えます。
なお、負荷テストは繰り返し行われることが一般的です。その理由として、負荷テストに一般的に用いられるメトリクス(後編の記事で解説)を用いて、性能が改善されているのかいないのか、性能改善のための対策が功を奏しているのかいないのかを定量的に確認・改善・判断を繰り返し実施し、クライテリア(終了基準)を満たしているか、妥当な性能となっているかを確認するためです。
負荷テストの種類
負荷テストの種類について、参考文献記載の定義を引用します[1]。
負荷テストの種類ごとに、確認したい観点や方法が異なるため、一般的にはテストの要件や目的に応じたものを選択します。
また、コンカレンシーテスト、キャパシティテストは確認したい期待値の着眼点が異なることにより、負荷テストとしての分類に意味はあるものの、備考に記載の内容に注意することで、他のテストに概念が内包されているものとして、図表4の記載から割愛しています。
詳細は参考文献 [1]の内容をご確認ください。
負荷テストの種類 | よくある | [1]に記載の定義 | 備考や注意点 |
---|---|---|---|
ストレステスト | 限界テスト、限界値テスト | ストレステストでは、システムやコンポーネントが、想定された、あるいは仕様化したワークロードの限界に達した、あるいは限界を超えたピーク負荷を処理する能力に焦点を当てる。 | 負荷モデルを作成する際に、時間当たりのトランザクションと並列性を考慮するのが望ましい。 |
拡張性テスト | スケーラビリティテスト | 拡張性テストでは、現在要求されている以上の将来的な効率性の要求を満たすためのシステムの能力に焦点を当てる。 | 動的な拡張性設計がある場合に、その拡張性が適切に動作しているか確認する。 |
スパイクテスト | イベント負荷、スパイク負荷 | スパイクテストでは、突然のピーク負荷に対してシステムが正しく応答し、その後、定常状態に戻る能力に焦点を当てる。 | 例としては、ECサイトでのセールイベント、Web上の特設ランディングページといった、事前予測が困難かつ突発で大量のアクセスが発生する場合に、サイトに問題があるか確認するイメージ。 なお、本テスト実施時に抜けやすい確認観点がある。キャパシティを超過した場合、一時的にサービスが提供できず受けられない状態になった後、すでに受付済みの要求が完了し、元のサービス提供可能な状態に回復することの確認も併せて行うことが必要となる。 |
耐久テスト | ランニングテスト、累積稼働テスト、長時間稼働テスト | 耐久テストでは、システムの運用状況に応じた時間軸でのシステムの安定性に焦点を当てる。 | 長時間運用による、リソースリーク、データあふれ、キューのあふれ、サービスの提供期間の停止等の確認等を行う。このテストは、短時間での把握が難しい種類の性能問題がないことを示すために必要となる。 |
図表4:負荷テストの種類
ベリサーブの負荷テスト関連サービスの紹介
ここまでお読みいただきありがとうございました。最後に、当社のサービスを紹介します。当社では、以下のサービスを提供しております。
負荷テストに関するお悩みを、ベリサーブのサービスで解決いたします。サービスの詳細は、以下URLをご参照ください。
■参照文献■
[1] ISTQBテスト技術者資格制度 Foundation Level Specialist シラバス 性能テスト担当者 日本語版 Version 2018.J01.
この記事は面白かったですか?
今後の改善の参考にさせていただきます!