パフォーマンス・テストとは

会議室で笑い合う多様な若者のグループ

執筆者

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

パフォーマンス・テストとは

パフォーマンス・テストでは、さまざまな規模の負荷がかかった状態での、システムのパフォーマンスまたはアプリケーションのパフォーマンスを判断します。

主な基準には、速度(どれだけ速く動作するか)、安定性(クラッシュせずに動作するか)、拡張性(増加する負荷がどれだけスムーズに処理されるか)、応答性(ユーザーのプロンプトにどれだけ速く応答するか)などがあります。

ソフトウェア性能の概念はあらゆるコンピュータの使用の根底にあり、性能が低いと、質の高いユーザー・エクスペリエンスを提供するための組織の最善の努力が台無しになる可能性があります。開発者がパフォーマンス・テストを適切に監督しない場合、またはパフォーマンス・テストを十分な頻度で実行しない場合、パフォーマンスのボトルネックが発生する可能性があります。この状況は、予想される期間中における典型的なトラフィック負荷であってもシステムの処理能力を阻害する可能性があります。予期せぬピーク使用時にさらなる需要が生じると、問題はさらに深刻になります。

この課題は、企業の対外的なオペレーション全体を危険にさらす可能性があります。品質に対する定評を得るには、通常、長い期間を要します。しかし、システムやアプリケーションが信頼できる機能性を持って動作するかどうか、一般の人々が疑問を持ち始めると、評判に対してすぐに永久的な損害を与える可能性があります。エンド・ユーザーの忍耐力は、ますます限られたものになりつつあります。企業の評判が危険にさらされることが多いため、性能に関する問題が話題になる場合は、さまざまな面で重要な意味を持ちます。

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

パフォーマンス・テストにおける6つのステップ

まず、ほとんどのパフォーマンス・テスト・シナリオで使用される方法論を定義しましょう。6つの複数パートに分かれたステップで、一般的なパフォーマンス・テスト・プロセスを定義します。

1. パフォーマンス基準と要件の定義

パフォーマンス・テスト・プロセスの最初のステップでは、アプリケーションのパフォーマンス目標の概要など、有用なパラメーターの設定が含まれます。

次に、許容可能な性能基準(応答時間スループットリソース使用率エラー率など)の構成要素を確立します。

またこの段階で、担当者が性能要件とビジネスの優先順位を適切にサポートするためにKPIを特定します。

2. テストの設計と計画

すべてのテストをあらゆる状況で使用すべき、というわけではありません。開発者やその他のテスターは、テストが何の分析を意図しているのかを定義する必要があります。

まず、上位の使用シナリオを範囲設定し、実際のユーザーのやり取りを反映したテスト・ケースを設計します。次のステップは、テスト・プロセス中に使用されるテスト・データとワークロードを指定することです。

これらの変数をロックダウンした後、テスターは使用するパフォーマンス・テスト・ツール、テスト・スクリプト、およびテスト手法を選択します。このステップには、コードに基づく品質ゲートにより、後の本番手順へのアクセスを許可または拒否するプロセスであるゲーティングの設定が含まれます。

パフォーマンス・テストでは帯域幅も調べ、データ転送速度がワークロードのトラフィックを十分に処理できることを確認すします。

3. テスト環境の確立

パフォーマンス・テスト・プロセスを正式に開始する前に、最後のステップを実行する必要があります。テスターは、システムの実際の本番環境を正確に模倣したテスト環境を構築し、テスト対象のソフトウェア・アプリケーション(AUT)がテスト環境内にデプロイされていることを確認します。

最終準備には、テスト中にシステムによって生成されたパフォーマンス・メトリクスを取得するための監視ツールの統合が含まれます。

4. テストの実施

ここまででテスト・パラメーターが明確に定義されたので、パフォーマンス・テストを実行します。テスターまたはテスト・オートメーションは、選択されたテスト・シナリオを実行し、それらのテストはパフォーマンス・テスト・ツールと共に使用されます。

テスターは通常、システムのパフォーマンスをリアルタイムで監視するため、スループット、応答時間、リソースの使用状況をチェックできます。テスト・シナリオ全体を通じて、テスターはパフォーマンスのボトルネックやテスト・メトリクスに反映されているその他のパフォーマンス関連の異常を監視します。

5. 結果に関する調査

次に、テスターはテスト・プロセス中に収集されたパフォーマンス・データを評価します。収集されたデータに目を通し、改善が必要なパフォーマンス領域を探します。

次に、テスターはこれらのテスト結果を、テスト・プロセスの最初のステップで確立されたパフォーマンス・ベンチマークと比較します。この比較を通じて、テスターは、テスト結果が予想されるパフォーマンスからどこで乖離し、どこでボトルネックが発生する可能性があるのかを知ることができます。

6. 最適化、テスト、再実行

テスト・データの分析を通じて性能の問題を特定した後、開発者はコードを使ってシステムを更新します。コードの最適化、リソースのアップグレード、または構成変更を使用して、挙げられた性能の問題を軽減します。

変更を実装した後、開発者はソフトウェアのテスト・シーケンスを繰り返し、変更が正常に適用されたことを確認します。開発者は、結果が定義されたベンチマークと一致するまで、この手順を繰り返します。

IBM DevOps

DevOpsとは

Andrea Crawfordが、DevOpsとは何か、DevOpsの価値、そしてDevOpsのプラクティスとツールがアイデア考案から本番環境までのソフトウェア・デリバリー・パイプライン全体でアプリケーションを動かすのにどのように役立つかについて説明します。IBMのエキスパートが指導するこのカリキュラムは、ビジネス・リーダーが成長を促進するAI投資の優先順位付けに必要な知識を得られるように設計されています。

パフォーマンス・テストは誰に対してメリットがあるのか

パフォーマンス・テストは、システムまたはアプリケーションのアウトプットを内部で詳細までチェックするため、ソフトウェア開発チームがパフォーマンス・テスト手法の最も一般的なユーザーであることは自然な成り行きと言えます。この最初のユーザー グループには、開発者、品質保証(QA)エンジニア、 DevOpsチームなど、開発プロセスに積極的に関与する専門家が含まれます。それぞれがパフォーマンス・テストから独自の情報を取得します。

  • 開発者はパフォーマンス・テストを使用して、ソフトウェア開発ライフサイクル(SDLC)の早い段階でパフォーマンスの問題を発見し、開発の変更に優先順位を付けることで、より効率的に変更を実施できます。
  • QAチームはパフォーマンス・テストを利用して業務の情報源とし、アプリケーションの動作速度、機能の安定性、拡張機能がさまざまなワークロードで十分に機能しているかどうかを判断する際に役立っています。

次のユーザー・グループは、開発者ではありませんが、それでもシステムのパフォーマンス管理を仕事の主要な要素として、現場レベルで働いています。

  • プロジェクト・マネジャーは、パフォーマンス・テストを用いてリスクを評価し、システム変更によって生じうるシステムへの影響を測定します。
  • 最高技術責任者(CTO)または同様の能力を持つ従業員は、変化する需要をどのように長期的な成長につなげられるのかを判断するために、パフォーマンス・テストを必要とします。
  • 会社のオーナーは、収益源を守ることに全力を注ぎます。パフォーマンス・テストでは、読み込み時間が十分に早く、応答性の低いカスタマー・サービスが収益プロセスを妨げていないことが確認されています。

しかし、パフォーマンス・テストを実施するのは会社の経営陣だけではありません。多くの組織や企業では、あらゆる規模で、さまざまな目的でパフォーマンス・テストを頻繁に利用しています。

  • 定期的に大量のトラフィックを経験する大企業は、アプリケーションが重いワークロードを処理できることを確認するためにパフォーマンス・テストを活用しています。このアプローチは、大規模なユーザーベースを持つオンライン・プラットフォームに大きく依存している企業にとって特に重要です。
  • 中小企業(および新興企業)は、成長計画の取り組みの一環としてパフォーマンス・テストを必要としています。これらの組織は、パフォーマンス・テストを使用して、成長を成功させる能力に悪影響を与える可能性のある将来のボトルネックについて警告を行います。
  • 新しいアプリケーション立ち上げの準備をしている(あらゆる規模の)企業は、現実世界の運用シナリオにおける問題を予測する手段として、パフォーマンス・テストに取り組むことが賢明です。重要なITシステムの変更を行う企業にも同じことが当てはまります。
  • 金融機関は多大な責任を負い、業種・業務に対するさまざまな規制に直面しています。このような企業は、特にトランザクション量が多い時期に関連するベースライン標準を維持するために、パフォーマンス・テストを日常的に使用しています。

パフォーマンス・テストの種類

開発者は、特定の種類の結果データを導き出し、特定のストラテジーをサポートするために、さまざまな種類のパフォーマンス・テストを実行します。ここでは、最も一般的な種類のテストを紹介します。

負荷テスト

負荷テストは、予想される負荷で動作するときにシステムがどのように動作するかを示します。負荷テストの目的は、平均的な同時ユーザー数による通常の作業条件下でルーチン規模のワークロードが発生した際のシステム動作を示すことです。

例:電子商取引Webサイトの場合、テスターはサイト・ユーザーとして品目を購入し、カートに商品を入れて、その購入代金を支払う手順をシミュレートします。

拡張性テスト

負荷テストは、システムが通常の負荷条件に対応できるかどうかを示します。拡張性によって、処理されるデータ量やユーザーの負荷が増え、そのシステムはストレスにさらされます。このテストは、増加したペースに対応しながら結果を達成できるかどうかを示します。

例:垂直スケーリングでは、開発者はデータベース・サーバーのCPUとメモリを増強して、より大量のデータ・クエリに対応できるようにする場合があります。

ストレス・テスト

ストレス・テストは、潜水艦の乗組員による潜水試験に似ています。このテストでは、システムが限界点に達するまでにどれだけの時間がかかるかを正確に判断するために、理解されている運用上の限界まで負荷をかけ、さらにそれを超えたストレスを与えます。

例: フェイルオーバー・テストは、コンポーネントの障害をシミュレートすることから始まる極端な形式のストレス・テストです。目標は、システムが回復してオペレーションを再開するために要する時間を確認することです。

スパイク・テスト

このテストでは、ユーザー・トラフィックやデータ量の転送において、アクティビティが急増した場合の、別の種類のストレスをテストします。システムは通常のオペレーションを続けながら、さまざまな変化に対応しなければなりません。

例:Webサイトを運営する企業は、障害に備えるだけでなく、オンライン状態を復旧すると同時にサイトにアクセスしようとするユーザーが急増することにも備える必要があります。また、システムが需要の急激な増加に対応できるかどうかを評価する必要もあります。スパイク・テストでは、そういった事態にどれほどスムーズに対処できるのか、その可能性を計測できます。

ボリューム・テスト

時には、パフォーマンスと並行して、ユーザー・トラフィックについて議論することがあります。対照的に、ボリューム・テストは、システムが大量のデータをどのように管理するかに関係しています。データの質を落とすことなく、システムはデータを完全に処理し、データ・ストレージを提供できるでしょうか。

例:ある診療所では、膨大な患者情報を保管しており、それらの患者記録や関連する医療データにアクセスできることが法的に義務付けられています。こうしたデータの絶え間ない流入は、システムのストレスにつながります。ボリューム・テストにより、ユーザーは自身のシステムが、断続的により多くのデータを受け入れるという課題に対応できるかどうかを知ることができます。

耐久性テスト

このテストは、長期にわたるパフォーマンス・テストと考えてください。耐久性テスト(ソーク・テストとも呼ばれる)が見つけ出す本質的な問題は、長期間にわたって発生することが多いデータの劣化とメモリ・リークの問題です。

例:ソーシャル・メディア・プラットフォームは24時間稼働しており、継続的に使用すると、プラットフォームの安定性、データストレージ、ユーザー・アカウントに問題が生じる可能性があります。耐久性テストでは、現在のオペレーションの全体像と将来のパフォーマンスの指標が得られます。

広く使用されているパフォーマンス・テスト・ツール

開発者とテスターは、パフォーマンス・テスト用に設計された多数のツールから選択できます。ここでは、最も人気の高いものをいくつか紹介します。

  • JMeter:ApacheのJMeterアプリケーションは、ワークロードのパフォーマンス・テスト用に設計された人気のオープンソース・ソフトウェアです。このツールは、スレッド・グループを使用して仮想ユーザーを生成し、過剰なユーザー数を含む条件など、実際のユーザーが関与するトラフィック・シナリオを模倣できます。こうした極限的な状況は、テスト対象システム(SUT)を調査する際に指定されます。JMeterは、テスト対象システム(SUT)がユーザー・リクエストにどれだけ迅速に応答するかを測定する応答時間などの、価値的なテスト・メトリクスを提供します。また、エラー率(失敗した要求の割合)と、スループット(SUTが特定の時間枠内に処理できるリクエストの数を示す)も追跡します。
  • LoadRunner:JMeterと同様に、LoadRunnerは膨大な数の仮想ユーザーを作成します。次に、LoadRunnerは、コンポーネント間のメッセージやユーザー・インターフェイスとのユーザー・インタラクションなど、これらの何百万もの仮想ユーザーに対して人工的なユーザー・アクティビティを生成します。このようなやり取りは、LoadRunnerが生成するテスト・スクリプトに保管されます。2025年の時点で、2,600社以上の企業が、パフォーマンス・テストとQA活動のツールとしてMicro Focus LoadRunnerを使用していると報告されています。
  • RoadRunner:「PHP」はかつて「Personal Home Page」の略でしたが、「Hypertext Preprocessor」を意味する言葉に変化しました。現在では、サーバーサイド・スクリプト言語(開発者がクライアントのWebブラウザーではなくサーバー上でコードを実行することを意味する)を指します。オープンソースのRoadRunner(発音的に類似したLoadRunnerと混同しないこと)は、PHPアプリケーション・サーバーおよびプロセス・マネージャーとして機能します。ブート・ロード時間の必要性をなくし、遅延を制限することで、アプリケーションのパフォーマンスを合理化します。RoadRunnerは、同時に動作するJavaプログラムの動的分析フレームワークを実現します。RoadRunnerは、イベント・ストリームを評価するアプリケーション・プログラミング・インターフェース(API)を提供します。

AIがパフォーマンス・テストに与える影響

コンピュータに関連するほぼすべての事柄と同様に、人工知能(AI)は現在、ソフトウェア・テストをまったく新しいレベルの効率に押し上げています。これにより、全体的なパフォーマンス・テスト・プロセスがより速く、より正確になり、自動化が容易になりました。

具体的には、AIは短いテスト・サイクルを採用できるため、テストの実行にかかる時間が短縮されます。また、AIの卓越した精度により、人間のテスターが見逃す可能性のある、より微妙なパフォーマンスの変化に気づくことができます。また、予測分析を通じて、AIは運用傾向と履歴データを評価し、次にボトルネックが発生する可能性のある場所と時期を予測できます。また、その予測的なシステム動作を活用し、それに基づいてテスト・パラメーターを調整することもできます。

しかし、これまでのところ、AIがパフォーマンス・テストのために行った最も重要なことは、自動化を可能にすることで大規模な取り組みを支援したことです。この自動化が際立っているのは、パフォーマンス・テスト・プロセスをすべて実行できる点です。

AIはテストの実施方法を自動化できるだけでなく、実行を目的としたテスト・スクリプトを作成することもできます。さらに、バックエンドでテスト結果を解釈し、問題の状況を修正するためのガイダンスを提供できます。

パフォーマンス・テストに対するAIの影響の中で最も興味深い、有望な影響の1つは、人間とAIのコラボレーションの増加です。このような取り組みによって、人間の本能と知識が依然として重要な役割を果たすことがわかります。実際、状況によっては、人間の衝動に従うことが依然として最も重要な指針となります。

一部の専門家は、将来のパフォーマンス・テストはこのハイブリッド・アプローチを採用することになると確信しています。このアプローチでは、コンピューターの思考や処理能力と、人間の文脈的感覚やニュアンスを組み合わせます。

関連ソリューション
IBM DevOps アクセラレート

オンプレミス、クラウド、またはメインフレームのあらゆるアプリケーションのソフトウェア配信を自動化します。

DevOps Accelerateの詳細はこちら
DevOpsソリューション

DevOpsソフトウェアとツールを使用して、複数のデバイスや環境でクラウドネイティブ・アプリケーションを構築、デプロイ、管理します。

DevOpsソリューションの詳細はこちら
クラウド・コンサルティング・サービス 

IBMのクラウド・コンサルティング・サービスで新しい機能にアクセスし、ビジネスの俊敏性を高めましょう。ハイブリッドクラウド戦略や専門家とのパートナーシップを通じて、ソリューションを共創し、デジタル・トランスフォーメーションを加速させ、パフォーマンスを最適化する方法をご覧ください。

クラウド・サービス
次のステップ

継続的な統合とデリバリーにより、DevOpsの可能性を解き放ち、安全なクラウドネイティブ・アプリケーションを構築、テスト、デプロイします。

DevOps ソリューションの詳細はこちら DevOpsの実際の動作を確認する