耐久テスト【endurance test】ソークテスト
耐久テストとは?

ソフトウェアや情報システムにおける耐久テストでは、想定される通常の利用状況に近い負荷を数時間から数日、場合によっては数週間にわたってかけ続ける。短時間では顕在化しないメモリリークやリソースの枯渇、処理速度の低下といった問題を検出することが主な目的である。
特に重要な検証項目はメモリ使用量の推移である。プログラムの不具合により使用済みのメモリが解放されずに蓄積し続けるメモリリークは、短時間のテストでは発見しにくい。長時間の稼働を通じてメモリ消費量が緩やかに増加し、最終的にシステムが停止するといった潜在的な問題を洗い出せる。データベース接続やスレッドのプールが正常に解放・再利用されているか、ディスク容量やログファイルの肥大化が許容範囲に収まっているかといった点も確認の対象となる。
性能面では、処理速度の変化が重要な指標である。稼働開始直後は問題なくても、長時間の稼働後に応答時間(レスポンスタイム)が徐々に延びていく現象は「性能劣化」と呼ばれ、システムの信頼性に直結する。耐久テストでは定期的にレスポンスタイムを計測し、時系列でグラフ化することで劣化傾向を可視化する。
ハードウェア分野の耐久テストでは、機器や部品を連続運転させて摩耗や発熱、電力消費の変化を計測したり、衝撃や振動、高温または低温、高湿度といった過酷な環境に晒して強度や限界値を調べたりする。ボタンの押下やレバーの切り替えといった可動部の操作を機械でひたすら繰り返すといった試験もこれに含まれる。長期使用の影響を短期間で再現することで、製品寿命や消耗部品の交換時期を推定する資料としても活用される。
ソフトウェアの耐久テストには「JMeter」「Gatling」「Locust」といった負荷テストツールを長時間使用することが多い。これらのツールではシナリオを自動実行させながらシステムのメトリクスを継続的に収集することができる。関連するテスト手法として、想定範囲内の負荷を与えて性能を測る「負荷テスト」や、限界を超える負荷を与えて挙動を見る「ストレステスト」があり、耐久テストと組み合わせて実施されることも多い。