Während meiner Forschungs- und Entwicklungsarbeit schreibe ich oft Programme, deren Verhalten in gewissem Maße zufällig ist. Wenn ich zum Beispiel in der genetischen Programmierung arbeite, schreibe ich oft Programme, die beliebigen zufälligen Quellcode generieren und ausführen.
Ein Problem beim Testen eines solchen Codes besteht darin, dass Fehler häufig nur sporadisch auftreten und sich nur sehr schwer reproduzieren lassen. Dies geht über das Einstellen eines zufälligen Startwerts auf denselben Wert und das erneute Starten der Ausführung hinaus.
Beispielsweise könnte Code eine Nachricht aus dem Kernel-Ring-Puffer lesen und dann bedingte Sprünge auf den Nachrichteninhalt ausführen. Natürlich hat sich der Zustand des Ringpuffers geändert, wenn man später versucht, das Problem zu reproduzieren.
Auch wenn dieses Verhalten ein Feature ist , kann es auf unerwartete Weise anderen Code auslösen und somit häufig Fehler aufdecken, die von Komponententests (oder menschlichen Testern) nicht gefunden werden.
Gibt es bewährte Verfahren zum Testen solcher Systeme? In diesem Fall wären einige Referenzen sehr hilfreich. Wenn nicht, sind alle anderen Vorschläge willkommen!