負荷テストとは何ですか? (例)
負荷テストとは
負荷テスト は、特定の予測負荷下でソフトウェア アプリケーションのパフォーマンスをテストする非機能ソフトウェア テスト プロセスです。複数のユーザーが同時にアクセスしているときにソフトウェア アプリケーションがどのように動作するかを判断します。負荷テストの目的は、パフォーマンスのボトルネックを改善し、展開前にソフトウェア アプリケーションの安定性とスムーズな機能を確保することです。
このテストでは通常、次のことが特定されます。
- アプリケーションの最大動作容量
- 現在のインフラストラクチャがアプリケーションを実行するのに十分であるかどうかを判断する
- ピーク時のユーザー負荷に対するアプリケーションの持続性
- アプリケーションがサポートできる同時ユーザーの数、およびより多くのユーザーがアプリケーションにアクセスできるようにする拡張性。
これは非機能テストの一種です。 ソフトウェア エンジニアリングでは、負荷テストは一般に、クライアント/サーバー、Web ベースのアプリケーション (イントラネットとインターネットの両方) に使用されます。
負荷テストの必要性
一部の非常に人気のあるサイトでは、大量のトラフィックが発生すると深刻なダウンタイムが発生します。 電子商取引 Web サイトは、広告キャンペーンに多額の投資を行っていますが、マーケティングによってトラフィックが流入した場合に最適なシステム パフォーマンスを確保するための負荷テストには投資していません。
次の負荷テストの例を検討してください
- 人気のおもちゃ店 Toysrus.com は、広告キャンペーンによって発生したトラフィックの増加に対処できず、マーケティング費用と潜在的なおもちゃの売上の両方を損失しました。
- 航空会社の Web サイトは、フェスティバル オファー中に 10000 人を超えるユーザーを処理できませんでした。
- ブリタニカ百科事典は、オンライン データベースへの無料アクセスをプロモーションとして発表しましたが、数週間にわたってアクセスの急増に対応できませんでした。
多くのサイトは、トラフィックが集中すると読み込みに時間がかかります。いくつかの事実 –
- ほとんどのユーザーは、ページの読み込みに 8 秒かかるとクリックして離れます。
- $ 4.4 Bill性能低下により毎年イオンが失われる
なぜ負荷テストを行うのか?
- 負荷テストにより、システムとその信頼性、パフォーマンスに対する信頼が得られます。
- 負荷テストは、ユーザーに大きなストレスがかかるシナリオでのシステムのボトルネックを、運用環境で発生する前に特定するのに役立ちます。
- 負荷テストは、パフォーマンス低下に対する優れた保護を提供し、実稼働環境のパフォーマンス管理と監視のための補完的な戦略に対応します。
負荷テストの目標
負荷テストでは、アプリケーションを市場または本番環境に移行する前に、次の問題を特定します。
- 各トランザクションの応答時間
- さまざまな負荷の下でのシステムコンポーネントのパフォーマンス
- さまざまな負荷下でのデータベース コンポーネントのパフォーマンス
- クライアントとサーバー間のネットワーク遅延
- ソフトウェア設計の問題
- Web サーバー、アプリケーション サーバー、データベース サーバーなどのサーバー構成の問題。
- CPU の最大化、メモリの制限、ネットワークのボトルネックなどのハードウェア制限の問題。
負荷テストでは、パフォーマンスを向上させるためにシステムを微調整する必要があるか、ハードウェアとソフトウェアの変更が必要かどうかを判断します。 負荷テストを効果的に実施するには、さまざまなツールを利用できます。 パフォーマンステストツール 改善すべき領域を特定するのに役立ちます。
負荷テストの前提条件
負荷テストの主な指標は応答時間です。 負荷テストを開始する前に、次のことを決定する必要があります。
- 応答時間がすでに測定および比較されているかどうか – 定量的
- 応答時間がビジネスプロセスに適用できるかどうか - 関連性
- 応答時間が正当であるかどうか - 現実的
- 応答時間が達成可能かどうか – 達成可能
- 応答時間がツールまたはストップウォッチを使用して測定可能かどうか – 測定可能
負荷テストを開始する前に、環境をセットアップする必要があります。
ハードウェアプラットフォーム | ソフトウェア構成 |
---|---|
|
|
負荷テストの戦略
負荷テストを実行する方法は数多くあります。以下に負荷テスト戦略をいくつか示します。
- 手動負荷テスト: これは負荷テストを実行する戦略の XNUMX つですが、再現可能な結果は得られず、アプリケーションに測定可能なレベルのストレスを与えることはできず、調整が不可能なプロセスです。
- 自社開発の負荷テストツール: 負荷テストの重要性を認識している組織は、負荷テストを実行するための独自のツールを構築する場合があります。
- オープンソースの負荷テストツール: オープンソースとして無料で利用できる負荷テスト ツールがいくつかあります。 有料のものほど洗練されていないかもしれませんが、予算が限られている場合には最良の選択です。
- エンタープライズクラスの負荷テストツール: 通常、キャプチャ/再生機能が付属しています。 多数のプロトコルをサポートしています。 非常に多数のユーザーをシミュレートできます。
負荷テストのやり方
負荷テストのプロセスは次のように簡単に説明できます。
- 専用のものを作成する テスト環境 負荷テスト用
- 以下を決定する
- 負荷テストのシナリオ
- アプリケーションの負荷テスト トランザクションを決定する
- トランザクションごとにデータを準備する
- システムにアクセスするユーザーの数を予測する必要がある
- 接続速度を決定します。 専用回線を介して接続するユーザーもいれば、ダイヤルアップを使用するユーザーもいます
- ユーザーが使用するさまざまなブラウザとオペレーティングシステムを特定する
- Web、アプリケーション、DB サーバーなどのすべてのサーバーの構成
- テストシナリオの実行と監視。 さまざまなメトリクスを収集する
- 結果を分析します。 推奨事項を作成する
- システムを微調整する
- 再テスト
負荷テストのガイドライン
- アプリケーションが機能的に安定したら、負荷テストを計画する必要があります。
- データ プールには多数の一意のデータが用意されている必要があります
- ユーザー数はシナリオまたはスクリプトごとに決定する必要があります
- ディスク IO スペースを節約するために、詳細なログの作成を回避します。
- サイト内の画像のダウンロードは避けるようにしてください
- 負荷テストのテスト ケースを実行するプロセスでは、経過期間にわたる応答時間の一貫性をログに記録し、それをさまざまなテスト実行と比較する必要があります。
負荷試験と応力試験の違い
負荷テスト | ストレステスト |
---|---|
負荷テストでは、さまざまなワークロードの下でシステムのボトルネックを特定し、負荷が徐々に増加したときにシステムがどのように反応するかを確認します。 | ストレステスト システムのブレークポイントを決定し、その後ブレークする最大点を明らかにします。 |
システムの上限を認識するには、アプリの SLA を設定し、システムが高負荷をどのように処理できるかを確認します。 | 極度の負荷下でシステムがどのように動作するか、および障害からどのように回復するかを確認します。 |
Web アプリケーションに増加した負荷を生成することが負荷テストの主な目的です。 | ストレス テストは、かなりの期間にわたって突然の高負荷がかかってもサーバーがクラッシュしないことを確認することを目的としています。 |
負荷テストでチェックされる属性は、ピーク パフォーマンス、サーバー数、応答時間です。 | この種のテストでは、安定性の応答時間などをチェックします。 |
負荷テストにおける負荷制限は、中断のしきい値です。 | ストレス テストでは、荷重制限が破壊のしきい値を超えています。 |
機能テストと負荷テストの違い
機能テスト | 負荷テスト |
---|---|
適切な手順と前提条件が定義されているため、機能テストの結果は容易に予測可能です | 負荷テストの結果は予測できない |
機能テストの結果はわずかに異なります | 負荷テストの結果が大きく異なる |
実行頻度 機能テスト 高くなります | 負荷テストの実行頻度が低くなります |
機能テストの結果はテストデータに依存します | 負荷テストはユーザー数によって異なります。 |
負荷テストツール
ロードランナー:
ロード ランナーは、通常およびピーク負荷条件下でアプリケーションをテストするために使用される HP ツールです。 ロード ランナーは、ネットワーク トラフィックをエミュレートする仮想ユーザーを作成することで負荷を生成します。 実稼働環境と同様にリアルタイムの使用状況をシミュレートし、グラフィカルな結果を提供します。
ロードランナーについて詳しく読む こちら.
負荷テストのメリットとデメリット
負荷テストの利点は次のとおりです。
- 本番前にパフォーマンスのボトルネックを特定
- システムの拡張性が向上します
- システムのダウンタイムに関連するリスクを最小限に抑える
- 失敗時のコストの削減
- 顧客満足度を高める
負荷テストの欠点:
- ソフトウェア テストのコンテキストで負荷テストを実行するツールを使用するには、プログラミングの知識が必要です。
- 価格はサポートされる仮想ユーザーの数に依存するため、ツールは高価になる可能性があります。
まとめ
- 負荷テストは、実際の負荷条件下でのシステムのパフォーマンスを決定するソフトウェア テストの一種として定義されます。
- 負荷テストは通常、アプリケーションが実稼働環境で使用可能になる前に、アプリケーションのパフォーマンスのボトルネック、スケーラビリティ、安定性を改善します。
- このテストは、アプリケーションの最大動作容量とシステムのボトルネックを特定するのに役立ちます。
- 負荷テスト ソフトウェアテスト 無視すると組織に経済的損失を引き起こす可能性があるため、これは重要です。