ランタイムエラー検出

ランタイムエラー検出（）は、ソフトウェアプログラム（主にアプリケーションソフトウェア）を実行時に分析し、その実行中に検出された欠陥を報告するソフトウェア検証方法である。単体テスト、統合テスト、システムテスト（自動/スクリプトまたは手動）、または侵入テストの実施時に利用できる。

概要 
ランタイムエラー検出は、静的コード解析では検出や予測が難しく、実行時にのみ現れる欠陥（スレッドの競合、誤ったファイルの上書きなど）を特定し、アプリケーションのクラッシュ、実行速度の低下、または予期しない動作の根本原因に焦点を当てることができる。ランタイムエラー検出によって一般的に検出される欠陥は次の通りである。

 競合状態
 データ競合
 デッドロック
 例外
 リソースリーク
 メモリリーク
 セキュリティ攻撃に対する脆弱性（SQLインジェクションなど）
 ヌルポインタのデリファレンス
 初期化されていないメモリ
 バッファオーバーラン
 スタックオーバーフロー

ランタイムエラー検出ツールは、アプリケーションの実行された制御フローのエラーのみを検出できる。 

C言語やC++のようなプログラミング言語では、コードの安全性管理に関してはプログラマに委ねられており、言語仕様レベルで実行時エラーに対する防御策が施されていないため、このような実行時エラー検出ツールの活用が重要になってくる。一方、JavaやC#などの後発言語では、配列の範囲外アクセスやヌル参照アクセスのような一部の実行時エラーは、実行時に仮想マシンのフレームワーク側が検出して例外を送出するため、アプリケーションコード側でのハンドリングが可能である。ただし、スレッド競合など、後発言語であっても動的分析ツールを使わなければ検出が難しい実行時エラーもある。

デバッグビルド用のランタイムライブラリやデバッガが実行時エラー検出機能を備えていることもある。

脚注

関連項目 
 開発テスト
 ソフトウェアテスト
 メモリデバッガ
 BoundsChecker
 ランタイム検証

ソフトウェア工学