ソフトウェアにおける耐久テスト:意味と例

⚡ スマートサマリー

ソークテストは、アプリケーションに長期間にわたって持続的かつ現実的な負荷をかけることで、時間経過とともにしか現れない問題を明らかにするテストです。メモリリーク、接続の枯渇、緩やかなパフォーマンス低下といった不具合を検出することを目的としています。

  • 🕒 長期間: 短時間の爆発的な負荷ではなく、数時間または数日間持続する現実的な負荷。
  • 💧 プライマリー Target: メモリリーク、および割り当てられたものの解放されないリソース全般。
  • 📉 劣化チェック: 応答時間は、単に開始時が良いだけでなく、実行全体を通して一定でなければならない。
  • 🗄️ データベースの焦点: 接続プール、開いているカーソル、そして増大し続けるログテーブルがここで顕在化します。
  • タイミングのリアリズム: 浸漬期間中に発生する予定ジョブとバッチウィンドウを含めてください。
  • 📊 判定ルール: 横ばいの資源曲線は合格だが、着実に上昇する資源曲線は、たとえ一定の限度内であっても不合格となる。

浸漬テストとは何ですか?

浸漬テストとは何ですか?

浸漬試験 非機能テストの一種で、長期間にわたって大量の負荷がかかった状態でソフトウェア アプリケーションのパフォーマンスを測定するために使用されます。 Soak テストの目的は、ソフトウェア アプリケーションが大量の使用に耐えられるかどうかを確認し、設計の想定外で何が起こるかを確認することです。

下の画像は、浸漬テストがどの段階で行われるかを示すテスト サイクルを示しています (性能試験の種類) はアプリケーション上で実行されます。

浸漬試験

このタイプのテストでは、基本的に監視されるのは、システム内のアプリケーションによるメモリ使用率です。 システム レベルでテストを行って、システムが非常に大量の使用に耐えられるかどうかを確認し、設計の想定外で何が起こるかを確認します。

ソークテストを行う理由

システムは 2 時間使用した場合は正常に動作しますが、同じシステムを 10 時間以上連続して使用すると、障害が発生したり、異常/ランダムな動作/クラッシュが発生する可能性があります。このような障害を予測するために、浸漬テストが実行されます。

ソークテストはいつ行うのですか?

浸漬テストは次のようなシナリオで実行する必要があります。

  1. ビルドがクライアントに展開される前、つまり特定のプラットフォームでアプリケーションがリリースされる前に、高または同等のトラフィックレベルでの一連の負荷テストに合格する必要があります。その後 浸漬テストが実行されます。 これは、特定のアプリケーションを長期間実行する方法を決定するのに役立ちます。 期間中、つまりソーク中にメモリ リークやメモリ破損などの問題が見つかった場合は、すぐに報告する必要があります。
  2. アプリケーションは一昼夜にわたって実行状態にある必要があるため、ソーク テストを行うのに最適な時期は週末です。 それはテスト状況の制限に完全に依存します。 浸漬テストは、すべての企業が非常に厳密に従う必要がある最も重要なコンプライアンス要件の XNUMX つです。

浸漬テスト戦略

ロング セッション ソーク テストは、システムに長時間負荷がかかる戦略です。

簡単な例としては、ユーザーが何時間もシステムにログインしたまま、多数のビジネス トランザクションを実行する場合が挙げられます。この方法では、大量のデータが作成されます。システム/データベース サーバーに大量の負荷がかかり、システム/データベース サーバーの停止やクラッシュが発生する可能性があります。

ロング セッション ソーク テストでは、複数日 (たとえば 30 日間) のアクティビティが、制限された時間枠 (たとえば 2 日間) 内で実行されます。 この制限された期間内のトランザクション数は、数日分のトランザクションと一致するか、それを超える必要があります。 処理されたトランザクションの数に注目する必要があります。 ソーク テストの最も重要な部分は、CPU で利用可能なメモリと使用されるメモリの量を確認することです。 ソーク テストの開始時と終了時のメモリ使用量を記録する必要があります。 必要に応じて、次のような機能のメモリ使用量 Java 仮想マシンも重要であり、監視する必要があります。

以下は、ソーク テストを開始する前にユーザー/テスターが実行する必要があるさらにいくつかのチェックです。

a) データベースのリソース消費を監視します。

b) サーバーのリソース消費 (CPU 使用率を除く) を監視します。

c) ソーク テストは現実的なユーザーの同時実行で実行する必要があります。

浸漬試験の特徴

標準的な浸漬試験法には、次のような特徴が必要です。

  • ほとんどの浸漬テストの期間は、多くの場合、利用可能な時間によって決まります。
  • 長時間を必要とするアプリケーションは、中断することなく実行する必要があります。
  • 利害関係者によって合意されたすべてのシナリオをカバーする必要があります。
  • ほとんどのシステムには定期的なメンテナンス ウィンドウ期間があり、そのウィンドウ期間の間の時間がソーク テストの範囲を決定する重要な要素となります。

浸漬試験の例

  • 販売者からの大量のデータがある銀行ドメインの場合、テスターはシステムに 70 時間から 150 時間継続的に負荷をかけ、この負荷期間中にアプリケーションがどのように動作するかをチェックします。
  • 33,000回のログインがあり、それをシステムで処理する必要があるとすると、60日半のアクティビティに相当します。この場合、70~6時間の浸漬テストは金曜日の午後XNUMX時頃に開始でき、完了までに完了します。 Monday 朝6時。このようなテストを行うことでのみ、制御された条件下でのパフォーマンスの低下を観察することができます。
  • ビデオゲームの場合、 モバイル アプリケーションなどのテストでは、ゲームまたはアプリケーションを、アイドリング、タイトル画面で一時停止など、さまざまな動作モードで長時間実行状態のままにして、アプリケーションが継続的に予想される負荷を処理できるかどうかを確認します。

ソークテスト中に観察される一般的な問題

  1. メモリ割り当て (最終的にはメモリ クライシスや時間の経過とともに現れる丸め誤差を引き起こすメモリ リーク)。
  2. データベース リソースの使用率 (特定の条件下でデータベース カーソルを閉じることができず、最終的にシステム全体が停止する可能性があります)。
  3. また、パフォーマンスの低下につながる可能性もあります。つまり、長期間の継続的なアクティビティ後の応答時間がテストの開始時と同じくらい良好であることが保証されます。
  4. 状況によっては、多層システムの層間の接続を閉じることができず、システムの一部またはすべてのモジュールが停止する可能性があります。
  5. 長時間のテスト中に内部データ構造の効率が低下するため、一部の関数の応答時間が徐々に低下します。

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

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

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

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

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

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

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

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

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

よくあるご質問

一般的には、この2つは同じ意味で使われます。しかし、チームによっては、耐久テストでは応答時間のずれを監視し、負荷テストではリソース消費量を監視するというように区別しています。通常、1回のテストで両方のデータが得られます。

少なくとも1つの業務サイクル全体をカバーできる十分な長さ、一般的には8~72時間。実行には、スケジュールされたバッチジョブや夜間処理も含まれる必要がある。これらの処理が情報漏洩を引き起こすことが多いためである。

メモリ曲線が着実に上昇し、ガベージコレクション後も以前のレベルに戻らない状態。絶対値よりも傾きが重要であり、一貫した上昇傾向は欠陥である。

AIベースの監視システムは、数時間にわたるテレメトリデータを分析し、トレンドが変化する正確なポイントを特定します。これは、何千ものデータポイントの中から手動で見つけるのは現実的ではありません。

部分的にはそうです。モデルは資源の動向を外挿し、枯渇を早期に予測できますが、放出決定を下す前に、その予測を検証するために実際の運用テストが必要です。