ファジング
バッファオーバーフローやメモリ解放後の再使用(Address Sanitizerなどのメモリデバッガを使用)などのメモリ関連のエラーを検出するには、競合状態とデッドロックを検出するため(Thread Sanitizer)、未定義の動作を検出するには(Undefined Behavior Sanitizer)、メモリリークを検出する(Leak Sanitizer)、またはコントロールフローの整合性をチェックするCFISanitizer)。リファレンス実装が利用可能な場合、ファジングを使用して「差分」バグを検出することも可能である。自動回帰テストの場合、生成された入力は、同じプログラムの2つのバージョンで実行される。自動差分テストの場合、生成された入力は、同じプログラムの2つの実装で実行される。たとえばlighttpdとhttpdは両方ともWebサーバー上に実装される。2つのバリアントが同じ入力に対して異なる出力を生成する場合、1つはバグがある可能性があるため、より詳細に調べる必要がある。
テストケースの削減は、より多くのテストケースのセットから多数のテストケースを選択するプロセスである。テストケースの削減は手動またはソフトウェアツールを使用して行うことができ、プログラムの適用範囲に不可欠なテストケースのみが残るまで、テストの一部を1つずつ削除する分割統治法が行われる。ファジングソフトウェアは、ソフトウェアに適用する前に、生成したデータ入力を記録することが多い。実行中にコンピューターにエラーが発生した場合、テストは保持される。生成されたデータストリームが疑似ランダムである場合、ファジングの試みを再現するためにシード値を保存できる。バグが検出された場合、デバッグに使用できるテストケースの作成に役立つ。 一例として、プログラムシリアライザーが同じプログラムパーサーが拒否するものを発行するたびにメッセージを生成することにより、誤ったシリアル化フォームに関連するバグを検出できる。この手法では、プログラムの2つのバージョン間、または同じ仕様の2つの実装間で意図しない違いを見つけることも可能となる。