負荷テストとは?目的や種類ごとの観点、実施の流れについて解説

  • ソフトウェアテスト・品質保証

負荷テストとは?目的や種類ごとの観点、実施の流れについて解説

株式会社SHIFT マーケティンググループ
著者 株式会社SHIFT マーケティンググループ

お役立ち資料

Introduction

自社プロジェクトの開始にあたって、運用開始後のシステムトラブルに不安をおもちでしょうか?実運用開始前に負荷テストを行っていれば、事前のトラブルシューティングが可能です。高負荷に耐えられるシステムは、企業ブランド失墜や売上機会の損失を避けることにつながります。

この記事では、負荷テストの目的や種類ごとの観点、実施の流れについて詳しく解説します。

目次

負荷テストとは?

負荷テストとは

はじめに、負荷テストの定義と行う目的について詳しく解説します。

システムに想定以上の負荷がかかった状況での挙動を確認するテスト

負荷テストとは、システムに同時に多数のアクセスが発生するなどの理由で、負荷がかかった状態でのシステムの挙動を確認するテストです。

人がシステムを使うタイミングは平均化されるものではありません。1日のなかでは朝夕に、1週間なら週のはじめと終わりにシステムを使う頻度があがります。テレビに紹介された企業のWebサイトにアクセスが集中したり、チケットの予約開始時にアクセスが殺到したりすることもあります。

このような状況では、CPU、メモリ、ストレージ、ネットワークなどのシステムのリソース使用量が増え、状況によってはスローダウンしたり、最悪の場合はシステムダウンにつながったりします。

負荷テストは、このような状況をシミュレートすることで、想定したアクセス数でも業務が実施できること、また、想定以上のアクセスが発生してもシステムダウンを起こさないで耐えられることを確認するテストです。

負荷テストを行う目的

ここでは、負荷テストを行う主な目的を3つ解説します。

安定的にシステムを稼働させるため

負荷テストでは、システム運用の開始前に、要求された最大のアクセス数があっても、業務が問題なく実施できることをテストします。このテストをクリアすることによって、運用後の安定したシステム稼働を保証することができます。

売上を向上させるため

アクセス数が増えるということは、顧客がその企業・商品に関心をもったということです。負荷テストでは、瞬間的なアクセス集中のときにはつながりにくくなるけれども、ピークを越えると通常通りにアクセスできることを確認します。関心のある顧客がアクセスできる状況がすぐに回復できると、結果として売上向上にもつながるでしょう。

システム障害による顧客離れを未然に防止するため

運用開始後のシステム障害は、企業ブランドを損ない、顧客離れを引き起こします。スローダウンやシステムダウンは顧客の購買意欲を損なう要因となります。負荷テストによって、スローダウンやシステムダウンが回避されること、また、アクセス集中時の案内が適切であることを確認することで、結果として、顧客満足度の高いサイト運営が可能になります。

負荷テストの種類とその観点

負荷テストは、実運用を滞りなく行うための評価判断が求められるテストです。そのため、実際のユーザーのアクセスパターンを想定し、さまざまな角度からシステムの性能を調べなければなりません。そこで、想定される環境のなかで要点を絞り、主に3種類のテストが実施されます。

ここでは、それぞれのテストの概要と評価指標について解説します。

ロードテスト(指定負荷テスト)

ロードテスト(指定負荷テスト)は、要求された最大負荷がかかった場合にも、システムが通常通り利用できることを確認するテストです。負荷のかかっていない状態と比較して、システムの処理能力が想定内であるかどうかをテストします。ロードテストでは、以下の評価指標が得られます。

・一定時間内の処理量
・負荷時のレスポンス変化
・リソース使用量、使用率

ロードテストを行うと、システムが要求された処理能力をもっていることが確認できます。これによって、通常運用範囲でのアクセス増に対して、安定運用ができることを保証します。

ストレステスト(限界負荷テスト)

ストレステスト(限界負荷テスト)は、要求の範囲を超える、高い負荷がかかったときのシステムの挙動を確認するテストです。大量のアクセスを発生させ、システムダウンにならずに、適切に回避できることを確認します。

処理能力を超えるようなアクセスが発生しても、処理ができないリクエストを適切に誘導する動作があれば、運用に問題がないといえます。たとえば「アクセスが込みあっております。しばらくお待ちください」のメッセージが表示され、ログインの順番待ちになるような動作が、正しい動作になります。

一方、システム内部のエラーメッセージが表示されてしまったり、システムダウンが起こったりするのは、システムに問題があるといえます。

ストレステストのなかで、最初に限界がくるのが、メモリなのか、ストレージなのか、ネットワークなのか、という分析を行うのも有効な方法です。これにより、限界が近づいたときにどこを増強すれば応急手当ができるのかがわかります。一方で、メモリが限界のときの動作、ストレージが限界のときの動作など、それぞれの限界の動作を個別に確認する場合もあります。

このように、ストレステストを行うと、システムの限界を超えたときに、適切に回避動作が実行されることを確認でき、システムダウンの防止が保証されます。

ロングランテスト(連続負荷テスト)

ロングランテスト(連続負荷テスト)は、システムを長時間稼働させたときに、問題が生じないかを確認するテストです。システムの性能の側面よりは、システムの信頼性の観点が強いテストです。

システムの連続運用を行う場合、短時間では問題にならないような微量のリソースの無駄遣いが蓄積して、結果としてリソースを圧迫してシステムダウンなどにつながるケースがあります。ロングランテストでは、このように微小な問題がシステムに蓄積されることがないことを確認します。

たとえば、半年分のデータをロングランテストで投入して、問題がなかったとすれば、そのシステムは半年間の連続運用が可能ということになります。ただしそのテストに半年もかけるわけにはいかないので、ロードテストで確認できた範囲で負荷をかけます。実際には、72時間など期間を決めて流せるだけの業務を流して、結果として何ヶ月分の確認ができたと判断することが多いでしょう。

ロングランテストでは、以下のような問題が発見される場合があります。

・メモリリークによるメモリ資源の圧迫
・作業ファイルなどの残置によるストレージの圧迫
・データ量の増加によるリソースの圧迫や処理速度の低下

ロングランテストを事前に行い、短時間には発見されづらい問題点を洗い出しておけば、運用後に予期せぬ問題が生じることを回避できます。

負荷テストの流れ

負荷テストの流れ

ここでは、具体的な負荷テストの流れについて、以下の5ステップにわけて解説します。

1.計画・準備
2.テストケースの設計
3.テスト環境の構築
4.テストの実施
5.テスト結果の分析

①計画・準備

実際に負荷テストをはじめる前に、まず計画・準備を行います。計画の段階では、テストの目標や方式、体制やスケジュールなどを定めます。以下の内容を検討する必要があります。

テストの目的と手段

どういった目的でどのようなテストをするのかを明確にします。前述した3種類の負荷テストが代表的なものですが、ほかにもロードバランサーなどのインフラ機器の設定テストや、ハードウェア故障時の縮退運転での性能確認テストを行う場合もあります。目的によってテストの手段や観点が異なるので、単に負荷テストと書くレベルではなく、詳細を明確化する必要があります。

評価指標・監視項目の設定

負荷テストの種類ごとに、評価指標・監視項目を設定します。テストの目的や内容によって、取得すべき情報が異なります。設定した評価指標は合否判断に、監視項目は問題があったときの分析に使用されるため、これを明確にしておく必要があります。

環境、ツールの計画

負荷テストは、独立したテスト環境を準備する必要があるため、それを構築する機器の手配が必要です。原則として本番相当の機器を集める必要があります。また、PCで使用する負荷テストツールの手配も必要です。計画段階では、どのようなものをいつ手配するのかを明確にしておきます。

要員の計画

負荷テストには特有のスキルが必要となるため、どのようなスキルの要員を集めて、どのようにテストチームを組むという検討が必要です。内部の要員が確保できない場合は、外部に依頼することも検討しましょう。

②テストケースの設計

テストの計画・準備の次は、テストを適切に実施するためのテストシナリオを設計します。ここでは、以下3つの項目にわけた設計のプロセスを解説します。

シナリオの作成

シナリオとは、利用者がシステムを使用する際の一連の操作のことです。負荷テストを実施する際に使用する、具体的な手順を決定します。アクセス集中時にすべての利用者が同じ操作をするわけではないので、複数のシナリオを検討することになります。

シナリオの混成方法

アクセス集中時の利用者の操作比率を想定して、どのシナリオをどのくらいの割合で混成するかを明確にします。たとえば、検索・参照70%、選択・注文20%、履歴・状況確認10%といったように、実際の業務の状況にあわせて設定します。

負荷の設定

ロードテストでは、いきなり最大の負荷をかけてテストするのではなく、低めの負荷から徐々に負荷を増やしながら状態を確認するのが鉄則になります。どのように増やしていくか、ピークをどのくらい持続させるのかを事前に決めておきます。また、ストレステストでも、徐々にアクセスが増えて限界にたどりつくのか、一気にアクセスが激増するのかという選択があります。

③テスト環境の構築

負荷テストが実施するための環境を構築します。

インフラの構築

負荷テストを行うための、サーバー、ストレージ、ネットワーク、ロードバランサーなどのインフラを構築します。負荷時の影響が相互に出ることを避けるために、この環境は通常の開発環境とは独立に構築します。そのほかに、負荷テストツールをインストールしたPCの準備も必要です。

テストデータの準備

要件に従ってテストデータを準備します。データの量は処理速度に大きな影響を与えるため、実際の業務と同等のデータ量を準備することが必須となります。

スクリプトの作成

シナリオをもとに、負荷テストツールを実行するためのスクリプトを作成します。基本的には、HTTPリクエストとして書き、埋め込みパラメータを指定するような作業を行います。

ツールの準備

負荷テストツールのほかに、評価指標・監視項目を採取するためのツールを準備します。ストレステストのためにリソース量を制限するような手法を使う場合には、そのためのツールも必要です。

④テストの実施

ステップ①〜③で行った準備に基づいて、負荷テストを実施します。少ない負荷からはじめて、インフラ、システム、ツールそれぞれに問題がないことを確認しながら、また環境的な問題があるときは原因をとり除きながら、徐々に負荷を増やしていきます。システムの問題の場合は、一度テスト打ち切って調査分析を行うことも多いです。

⑤テスト結果の分析

テスト結果が出たら、合否判定や問題の原因調査などの分析を行います。ロードテストで予定の負荷まで到達できない場合は、ハードウェアを増強するか、ソフトウェアを見直すかという選択になりますが、ときに大がかりな対応になる場合もあります。万が一に備えて、はやめに負荷テストをスケジューリングしましょう。

負荷テストを行う方法

負荷テストを行う方法は主に、テストツールの使用と専門会社への依頼という2つの選択肢があります。ここでは、それぞれの方法のメリットを解説します。

テストツールを使用する

最低限の設備として、サーバー環境と負荷テストツールがあれば、負荷テストを実施することができます。負荷テストツールにはオープンソースで提供されるものもあり、最小限の投資で負荷テストの環境を作成することができます。ツールの使い方については、さまざまな情報をWebから探すことができます。

ただし、負荷テストに必要なスキルは、テストツールの使い方だけではなく、指標の判断方法、分析ノウハウなど多岐にわたります。ハードウェア、ネットワーク、データベースなど広く深い知識が必要です。内部の要員でチームを組む場合は、スキルを保持するメンバーが集められるかどうかを確認ください。

専門会社に依頼する

高負荷にも耐えるビジネス用システムを運用する場合、高精度なテストを行うためには、ある程度の工数やノウハウが必要です。自社内だけで負荷テスト体制を構築・維持するには、多くのコストがかかります。そこで、知識や知見をもつ専門会社に依頼すれば、効率的かつ確実にプロジェクトを進めやすくなります。依頼費用はかかりますが、スムーズなシステム運用と企業ブランドの維持のために、必要な投資といえるかもしれません。

SHIFTの負荷テスト(パフォーマンス改善)について

SHIFTでは、システムの性能問題を原因究明から解決までサポートする、負荷テストのサービスを提供しています。ここでは、負荷テストの概要と流れをご紹介します。

サービスの概要・特徴

SHIFTの負荷テストでは、性能試験や負荷試験を実施後、独自のツールを用いて可視化・分析します。さらに「いつどこで障害が起きたのか」などの原因究明を行って、改善までサポートします。性能問題を未然に防ぐために性能設計から参画するので、高性能かつ安定したシステム構築の実現が可能です。

SHIFTの専門家は、多数のトラブルシュートの対応経験をもち、システム性能の留意すべき事項やチェックノウハウを熟知していますので、ご安心してご依頼いただけます。

関連サービスについて

プロジェクトの流れ

プロジェクトの流れは、以下の3ステップです。

1.ヒアリング
2.試験実施
3.性能改善サービス

はじめにヒアリングを行うことで、お客様の要件に応じたテストケースをご提案することが可能です。その後、実際に試験を実施し、合否の判定を出します。試験の結果に基づき、熟練エンジニアが性能改善を行い、再テストを実施します。

まとめ

負荷テストとは、システムに対して大量アクセスを想定した負荷をかけ、性能を判定するためのテストです。具体的な内容としては、大量の負荷がかかったときや、長時間稼働しつづけたときの処理能力低下・障害発生の有無などを確認します。負荷テストは、自社内でツールを使用して実施できます。しかし、高精度なテストを行うためにはノウハウが必要なので、ビジネス用システムに行うテストは専門家への依頼がおすすめです。

SHIFTでは、高性能かつ安定したシステム構築を実現する、負荷テストサービスを提供しております。多数のトラブルシュート対応経験のある専門家が、改善までサポートします。負荷テストの実施をご検討中でしたら、お気軽にお問い合わせください。

ご相談はこちらから
>>お問い合わせページへ
>>料金についてページへ

 

 

永井 敏隆

 

監修

株式会社SHIFT
「ヒンシツ大学」クオリティ エヴァンジェリスト 永井 敏隆

大手IT会社にて、17年間ソフトウェア製品の開発に従事し、ソフトウェアエンジニアリングを深耕。SE支援部門に移り、システム開発の標準化を担当し、IPAのITスペシャリスト委員として活動。また100を超えるお客様の現場の支援を通して、品質向上活動の様々な側面を経験。その後、人材育成に従事し、4年に渡り開発者を技術とマインドの両面から指導。2019年、ヒンシツ大学の講師としてSHIFTに参画。

担当講座

・コンポーネントテスト講座
・テスト自動化実践講座
・DevOpsテスト入門講座
・テスト戦略講座
・設計品質ワークショップ
など多数

――――――――――
ヒンシツ大学とは、ソフトウェアの品質保証サービスを主力事業とする株式会社SHIFTが展開する教育専門機関です。
SHIFTが事業運営において培ったノウハウを言語化・体系化し、講座として提供しており、品質に対する意識の向上、さらには実践的な方法論の習得など、講座を通して、お客様の品質課題の解決を支援しています。
https://service.shiftinc.jp/softwaretest/hinshitsu-univ/
https://www.hinshitsu-univ.jp/
――――――――――

この記事を書いた人

株式会社SHIFT マーケティンググループ
著者 株式会社SHIFT マーケティンググループ

SHIFTは「売れるサービスづくり」を得意とし、お客様の事業成長を全力で支援します。無駄のないスマートな社会の実現に向けて、ITの総合ソリューションを提供する会社です。

サービスサイト:https://service.shiftinc.jp/
コーポレートサイト:https://www.shiftinc.jp/
X(旧Twitter):https://twitter.com/SHIFT_cp

ご支援業種

  • 製造、金融(銀行・証券・保険・決済)、情報・通信・メディア、流通・EC・運輸、ゲーム・エンターテイメント

など多数

関連コラム

Top