信頼性の高いソフトウェアをリリースするうえで、「負荷テスト」が重要となります。負荷テストは「性能テスト」や「ストレステスト」と混同されることもありますが、それぞれ意味が異なります。高品質な負荷テストを実施するためには、正しい知識を身につけることが大切です。
今回は負荷テストとは何か、基本からわかりやすく解説します。負荷テストのやり方や流れ、関連用語との違いもお伝えするため、ぜひ参考にしてください。
- もくじ
1.負荷テストとは?
まずは負荷テストとは何か、概要から整理しましょう。性能テストやストレステストとの違いもお伝えします。
1-1 負荷テストとは「ソフトウェアに負荷をかけて振る舞いを検証するテスト」
負荷テストとは、ソフトウェアに負荷をかけた際の振る舞いや性能を検証するテストのことです。構成要素をすべて組み込んだ状態でソフトウェア全体を検証する「システムテスト」の一環として実施します。
負荷の高い環境下では、ソフトウェアが想定外の動作をしたり、パフォーマンスが著しく低下したりする恐れがあります。高負荷な環境下で、こうした問題が生じないことを確かめるのが負荷テストです。
負荷テストは、明示的に要求される機能要件以外の部分を検証する「非機能テスト」に分類されます。開発文書に合否基準が明記されないことも多いため、正しい手順で進めることが大切です。
1-2 他テストとの違い
性能テスト(パフォーマンステスト)との違い
負荷テストは、「性能テスト(パフォーマンステスト)」の一種とされます。混同されやすい性能テストとの違いを知っておきましょう。
性能テストは、ソフトウェアの性能に問題がないかに着目したテストのことです。ソフトウェアの構成要素をすべて組み込んだ状態で動作させ、一度に処理可能なデータ量やリクエストへの応答速度などを検証します。
性能テストでは、さまざまな条件下においてソフトウェアの性能を測定しますが、必ずしも高負荷とは限りません。
性能テストのなかでも特に、高負荷な環境下でソフトウェアを検証するのが負荷テストです。性能テストについて詳しくは、次の記事をご覧ください。
ストレステストとの違い
負荷テストは、しばしば混同されやすいのが「ストレステスト」です。ISTQB(国際ソフトウェアテスト資格認定委員会)は、負荷テストを「load Testing」、ストレステストを「stress Testing」と区別しています。両者の違いを知っておきましょう。
ストレステストとは、限界レベル、あるいは限界レベルを超えた環境下でソフトウェアの振る舞いや性能を検証するテストのことです。大量のリクエストをサーバーに送信するなど、ソフトウェアに大きなストレスをかけて検証します。
高負荷な条件で実施するのは負荷テストと同様ですが、ストレステストでは限界レベルを超えた際の耐久性も検証対象です。これには、実運用で想定されないレベルの負荷も含まれます。一方の負荷テストは、実運用で想定されるレベルの高負荷をかけ、振る舞いや性能が損なわれないかどうかを検証するのが特徴です。
2.負荷テストを実施する目的
負荷テストは多くの労力をともなうテストですが、重要な目的を持ちます。負荷テストを実施する目的は、主に次の2つです。
2-1 信頼性の担保
負荷テストには、ソフトウェアの信頼性を担保する目的があります。
要件や仕様にもとづく機能テストには、高負荷な環境下のテストはあまり含まれません。しかし実運用のなかでは、短時間にリクエストが集中したり、大量のデータ処理が必要となったりするケースもあります。
こうした状況で故障するのでは、信頼性の高いソフトウェアとはいえません。しかし負荷テストに合格すれば、高負荷な環境下でも妥当な振る舞いや性能を維持できるソフトウェアだと証明可能です。負荷テストの結果がソフトウェアの信頼性を高めます。
2-2 リスクの特定
ソフトウェアに潜むリスクを特定することも、負荷テストを実施する目的の1つです。
たとえば、特定の負荷で著しくパフォーマンスが低下する場合もあります。こうした事象は、設計やプログラムの不備によって生じているケースが少なくありません。高負荷を前提としない機能テストでは、こうした潜在的なリスクの検出は難しいです。
負荷テストの結果を分析すれば、誤動作やパフォーマンス低下などのリスクも特定できます。システムテストの段階でリスクを特定することで、早期の対処が可能となるでしょう。
3.負荷テストの大まかな流れ 5ステップ
負荷テストは正しい流れで進めていくことが大切です。ここでは負荷テストの大まかな流れを、5ステップに分けて解説します。
3-1 テスト計画
最初に、負荷テストの実施にあたって計画の策定が必要です。テストの目的や使用する環境・ツール、実施日程など、基本事項を明確にします。負荷テストで使用するサーバーやネットワークなどのITリソースも、この段階で確保しておきましょう。
特に特殊なテスト環境や器具を使う場合や、一時的に環境が競合する場合などは計画段階で実施のタイミングを確認し、関係者に周知しておく必要があります。
3-2 テストケース作成
次に、テストケースを作成し、負荷テストをどのように実施するのかを明確にします。テストケースには、テスト条件や実施手順、合否基準などを正確に記載することが重要です。テストケースの記載内容に誤りがあると、負荷テストの結果が疑わしくなります。合否基準は開発文書に明記されないことが多いため、顧客や運用チームとの協議が必要です。
3-3 テスト環境構築
テストケースを作成した後は、負荷テストを実施するための環境構築を行います。大量のリクエストを送信したり、複数端末を同時に操作したりする場合、手動ではテスト実施が難しいでしょう。そのため、テストを自動化・効率化するためにスクリプトの実装やツールの導入・設定が必要です。専用のテスト環境を用いる場合は、サーバーやネットワーク機器などの接続・設定も行います。
3-4 テスト実施
テスト環境を構築できれば、テスト環境を用いて、実際に負荷テストを実施します。実運用に影響する可能性がある場合は、関係者への事前連絡が必要です。テストケースの条件や手順に従ってソフトウェアを動作させ、そのときの振る舞いや性能を測定します。また、システムログや画面キャプチャなどのエビデンスも確保しましょう。
3-5 テスト結果分析
テストケースを実施した後は、結果を分析します。測定した各数値がテストケースの合否基準に達しているかを確認し、問題がないかを判定しましょう。また、特定の条件下でパフォーマンスが低下していないか、など潜在的なリスクも確認が必要です。分析結果は整理して関係者に共有し、問題があれば対策に向けた協議を行います。
4.負荷テストの実施方法 2パターン
負荷テストのやり方は、大まかに「ツールを用いて自社で実施する」「外部サービスを活用する」の2つです。それぞれの概要やメリット・デメリットについてお伝えします。
4-1 ツールを用いて自社で実施する
負荷テストを自社で実施する方法の1つが、専用の負荷テストツールの活用です。たとえば負荷テストツール「JMeter」を使うと、サーバーへリクエストを送信し、そのパフォーマンスを測定できます。安価なツールを活用して効率的に負荷テストを実施できれば、コストを抑えることも可能です。ただし、負荷テストに適した担当者がいないと工数が増大したり、テスト品質が下がったりするリスクもあります。
4-2 外部サービスを活用する
自社で負荷テストの実施が難しい場合、外部サービスを活用すると良いでしょう。依頼費用はかかるものの、自社の業務負荷を軽減できるのは大きなメリットです。
バルテスでは、負荷テストやパフォーマンステストの支援サービスを提供しています。スクリプトやツールを活用し、要望に合わせたテスト方針で負荷テストを実施します。
詳しくはこちらをご覧ください。
5.負荷テストを成功させる2つのポイント
負荷テストに失敗すると、信頼できるテスト結果が得られず、ステークホルダーに迷惑をかけてしまう場合もあります。負荷テストを成功させるために、2つのポイントを押さえておきましょう。
5-1 実運用への影響を抑える
負荷テストに本番環境を用いる場合、実運用への影響をできる限り抑えましょう。負荷テストで高い負荷をかけることで、実運用に支障が出てしまっては本末転倒です。実運用への影響を考慮し、十分なITリソースの確保や事前の連絡を確実に行う必要があります。実運用への影響が避けられない場合、切り離したテスト環境を構築した方が良いでしょう。
5-2 顧客や運用チームとの連携を図る
負荷テストの実施にあたっては、顧客や運用チームとの連携を図ることも大切です。高負荷環境における性能の合否基準は、開発チームやQAチームの一存では決められません。
実運用への影響が懸念される場合は運用チームへの事前連絡が必要です。負荷テストで大きなリスクが判明した場合は、顧客や運用チームへ迅速に情報共有し、対応策を協議しましょう。
まとめ:負荷テストでソフトウェアの信頼性を保証しよう
負荷テストとは、ソフトウェアに負荷をかけた際の振る舞いや性能を検証するテストのことです。構成要素をすべて組み込んだ状態でソフトウェア全体を検証する「システムテスト」の一環として実施します。
負荷テストには、信頼性の担保やリスクの特定という重要な目的があります。
負荷テストを自社で実施する場合、ITリソースの確保やステークホルダーとの連携を図り、正しいやり方で進めましょう。
自社でのテスト実施が難しい場合は、外部サービスを利用することをおすすめします。Qbookを運営するバルテスでも負荷テスト/パフォーマンステストのサービスを提供しています。お客様のご要望に合わせてテスト方針を策定します。必要なスクリプトを作成し、主要な商用ツールを用いてパフォーマンスの測定を実施し、テスト結果をわかりやすく報告書にまとめご提出いたします。
詳しくはこちらをご覧ください。