ソフトウェアテストにおけるスパイクテストとは何ですか? 例で学ぶ

⚡ スマートサマリー

スパイクテストとは、アプリケーションに突然、極端な負荷をかけ、その後、同じように急激に負荷を解除するテストです。その目的は、システムがその衝撃に耐えられるかどうか、そして、それと同じくらい重要なこととして、その後回復できるかどうかを確認することです。

  • 負荷パターン: 通常の交通量をはるかに上回る急激な上昇が短時間維持された後、解除された。
  • 🎯 主な目標: システムが故障するかどうか、また、故障した場合でも正常な動作をするかどうかを確認する。
  • 🔄 回復は重要です: 急激な反応低下の後、通常の反応時間に戻ることは、その低下を乗り越えることと同じくらい重要です。
  • 📈 現実的なトリガー: フラッシュセール、チケットリリース、バイラルトラフィック、およびスケジュールされたバッチジョブ。
  • 🛠️ ツーリング: JMeter LoadRunnerはどちらも、段階的な増加ではなく、瞬間的な増加をモデル化している。
  • 📊 注目すべき点: エラー率、キューの深さ、およびベースラインに戻るまでの時間。

スパイクテストとは

スパイクテストとは何ですか?

スパイクテスト ソフトウェア テストの一種で、トラフィック負荷を極端に増減させてソフトウェア アプリケーションをテストします。 スパイク テストの主な目的は、ユーザー負荷の突然の増加または減少下でのソフトウェア アプリケーションの動作を評価し、ユーザー負荷のスパイク後の回復時間を決定することです。

スパイク テストは、ソフトウェア アプリケーションの弱点を推定するために実行されます。

スパイクテスト
スパイクテスト

スパイクテストの目的

スパイク テストの目的は、ユーザー負荷の予期せぬ増減にシステムがどのように反応するかを確認することです。 ソフトウェア エンジニアリングでは、スパイク テストは、突然の高負荷がかかったときにシステム パフォーマンスが低下するかどうかを判断するのに役立ちます。

スパイク テストのもう XNUMX つの目的は、回復時間を決定することです。 ユーザー負荷が XNUMX 回連続して急増するまでには、システムが安定するまでに時間がかかります。 この回復時間はできるだけ短くする必要があります。

スパイクテストのやり方

スパイク テストを実行する簡単な手順は次のとおりです。

ステップ 1) 耐荷重を決定する

ソフトウェア アプリケーションの最大ユーザー負荷容量を決定します。

ステップ 2) テスト環境を準備する

テスト環境を準備し、パフォーマンス パラメーターを記録するように構成します。

ステップ 3) 予想される負荷を定義する

を使用して、予想される最大負荷をソフトウェア アプリケーションに適用します。 パフォーマンステストツール お好みの。

ステップ 4) 負荷を増やす

設定した期間、システムへの負荷を急速に増加させます。

ステップ 5) 負荷を通常に戻す

徐々に負荷を減らして元のレベルに戻します。

ステップ 6) 結果を分析する

パフォーマンス グラフと、障害、所要時間、仮想ユーザーなどのメトリクスを分析します。

スパイクテストシナリオの例

  • ブラック フライデーなど、e コマース ストアが大幅な割引を伴う特別セールを開始するとき。
  • Web アプリケーションがお気に入りのテレビ番組をライブ ストリーミングしているとき。
  • 日替わりセールサイトでフラッシュセールが開催されているとき。
  • サイトの特定のコンテンツがインターネット上で広まったとき。
  • 新しいシステムが実稼働用にリリースされ、複数のユーザーがそのシステムにアクセスしたいと考えています。
  • 停電が発生すると、すべてのユーザーがシステムにアクセスできなくなる場合があります。停電の問題が解決すると、すべてのユーザーが同時にシステムに再度ログオンします。

スパイク負荷時の回復シナリオ

スパイクを防ぐために構成できる XNUMX つの主な回復シナリオは次のとおりです。

  1. 次のようなクラウド プラットフォームを使用します。 AWS, Azure ユーザーの負荷に応じてサーバーの容量を動的に増加させる
  2. システムに大きな負荷がかからないよう、一部のユーザーにアプリケーションへのアクセスを許可しないでください。 これにより、設計された最大荷重を超える人がシステムに入るのを防ぎます。 したがって、システムを過剰な負荷の脅威から保護します。
  3. サイト管理者は、ユーザーがシステムに参加することを許可します。 ただし、負荷が高いため、応答が遅くなる可能性があると警告されています。 これにより、システムのパフォーマンスに悪影響を及ぼす可能性があります。 ただし、ユーザーはシステムを操作できます。

スパイクテストの利点と欠点

スパイクテストの長所と短所は次のとおりです。

優位性 デメリット
ソフトウェアのパフォーマンスは、いかなるコストを払ってでも維持する必要があります。 ただし、システムの負荷が極端に増加すると、問題が発生する可能性が高くなります。 スパイク テストは、このようなシナリオのテストに役立ちます。 スパイク テストの唯一の欠点は、テスト プロセスに費用がかかることです。 そのため、特別なテスト条件を設定する必要がありました。 ただし、長期間にわたって、確実にプラスの ROI が得られます。
標準的なテスト方法では、悪いシナリオから最悪のシナリオまでは対処できない可能性があります。 ただし、それらを無視しても、それらがまったく起こらないという意味ではありません。 したがって、すべてのソフトウェアはそのような可能性を備えている必要があります。 そのような最悪のシナリオの XNUMX つは負荷であり、スパイク テストの助けを借りて判断し、最小限に抑えることができます。  

スパイクテストツール

1) JMeter

その Apache JMeter Java オープンソースのスパイク テスト ツールです。これは、機能テストの動作をロードし、パフォーマンスを測定するために特別に設計されています。このパフォーマンス テスト ツールは、Web アプリケーションやさまざまなサービスのパフォーマンスを分析および測定するために使用できます。現在では、機能テストやデータベース サーバー テストに広く使用されています。

2) LoadRunner

LoadRunner は、次の負荷テスト ツールです。 Windows Linux では、Web アプリやその他のアプリのスパイク テストが可能です。これは、高負荷下でもアプリケーションのパフォーマンスと結果を判断するのに役立ちます。

このテストがパフォーマンス テスト ファミリーにどのように適合するか

性能テストは包括的な用語です。以下のバリエーションは、加える負荷の形状と負荷を維持する時間のみが異なるため、しばしば混同されます。

テストタイプ 負荷パターン 質問に答える
負荷テスト 予想されるピーク負荷、短時間 通常のピーク時トラフィックにおいて、システムは目標を達成しているか?
ストレステスト 容量を超えて増加し、最終的に故障する どこで壊れるのか、そして、それは優雅に失敗するのか?
スパイクテスト 急激な上昇、その後の下落 交通渋滞による衝撃から生き残り、回復できるだろうか?
耐久試験 通常の負荷を何時間も保持 時間の経過とともに性能は低下しますか?
浸漬試験 長期間にわたる持続的な負荷 メモリリークやリソース枯渇は発生していますか?
安定性テスト 様々な条件下での負荷の変化 状況が変化しても、システムは信頼性を維持できるのか?
ボリュームテスト 一般ユーザー、データ量が非常に多い データベースの規模が拡大しても対応できますか?

耐久試験と浸漬試験は、しばしば同義語として扱われる。 一般的には、どちらも長時間にわたって負荷を持続させるテストです。しかし、チームによっては両者を区別する場合、耐久テストは応答時間が上昇するかどうかに焦点を当て、負荷テストはメモリ、ファイルハンドル、接続プールなどのリソース消費に焦点を当てます。通常、どちらか一方を実行すれば、両方のテスト結果を得ることができます。

テスト中に取得すべき主要指標

パフォーマンステストの精度は、実行中に記録した内容によって決まります。サーバー側とクライアント側の両方で以下の6つの項目を記録し、直感ではなく基準値と比較してください。

メトリック それが何を意味するか 警告サイン
平均応答時間 典型的なユーザー体験 ランニングコース全体にわたる上昇傾向
95パーセンタイル応答時間 最も動作の遅いユーザーの体験 平均をはるかに上回る、つまり一貫性がない
スループット 1秒あたりに処理されるリクエスト数 荷重が一定の状態で落下する
エラー率 失敗またはタイムアウトしたリクエストの割合 合意されたしきい値を超える上昇
CPUとメモリの使用状況 サーバーリソースの余裕 記憶は上昇し、二度と戻ってこない
データベース接続とスレッド プールでの疲労 リリースなしで着実に増加する数

平均値とパーセンタイル値を一緒に読み取ってください。 平均応答時間が800ミリ秒で、95パーセンタイル値が900ミリ秒であれば、システムは安定していると言えます。一方、同じ平均応答時間でも95パーセンタイル値が9秒であれば、20人に1人のユーザーが応答に問題を抱えていることを意味し、平均値ではその問題が隠蔽されていることになります。

値だけでなく、形状にも注目してください。 長時間のテストでは、リソースのグラフが横ばいであれば合格、上昇していれば漏洩と判断されます。たとえテスト終了時点で絶対値が許容範囲内に収まっていても、この判断は変わりません。

スパイクテスト:重要なポイント

  • ソフトウェアテスト ソフトウェア テストの一種で、トラフィック負荷を極端に増減させてソフトウェア アプリケーションをテストします。
  • スパイク テストを行うための正しいアプローチは、ユーザー数を予期せず増加させ、その後すぐに負荷を減少させることです。
  • 予期せぬ負荷がこの取引の主な特徴です。
  • 実際の Spike テスト シナリオの例は、e コマース ストアがブラック フライデーなどの大幅な割引を伴う特別セールを開始する場合です。 あるいは、Web アプリケーションがお気に入りのテレビ番組をライブ ストリーミングしている場合も同様です。
  • JMeter は、スパイク テストを行うための便利なツールの 1 つです。

よくあるご質問

ストレステストでは、システムが破損するまで徐々に負荷を上げて限界値を特定します。一方、スパイクテストでは、極端な負荷を瞬時に加えることで、徐々に負荷を上げた場合では発生しないような急激な衝撃によって故障が発生するかどうかを確認します。

システムが稼働し続けていても、応答時間が通常レベルに戻らない場合、ピーク時のアクセス後に訪れたユーザーへの対応は依然として不十分です。実際のビジネスへの影響を反映する指標は、復旧時間です。

単純な数字ではなく、実際の出来事に基づいて目標を設定しましょう。過去の販売やローンチ時のトラフィックデータに、それ以降に予想される成長率を掛け合わせることで、妥当な目標値が得られます。

過去のトラフィックデータ、マーケティングカレンダー、外部シグナルに基づいてトレーニングされたAIモデルは、トラフィックの急増が発生する時期を予測するため、チームは事後対応ではなく、事前にインフラストラクチャを拡張することが可能になります。

はい。AIツールは、本番環境のアクセスログからスパイクプロファイルを抽出し、人為的な急激な変化ではなく、過去の急増の真の形状を再現できます。