Beim Testen von Java Programmen die Nebenläufigkeiten und Synchronisation enthalten, bekommt man schnell Probleme. Zum einen stellt man fest, dass es recht schwierig ist Testfälle zu konstruieren, die alle relevanten Codeteile durchlaufen. Und selbst wenn das geschafft ist, kann man noch nicht sicher sein, dass das Programm sich unter realen Bedingung korrekt verhält.
Die zeitlichen Anläufe, der nicht vorhersagbare Wettbewerb vieler Threads lassen sich schlecht oder gar nicht simulieren. Selbst wenn man Tests entwirft, die mit mehreren Threads arbeiten, stellt man schnell fest, das die Testabläufe fast vollkommen deterministisch sind und das zufällige Zeitverhalten einer echten Anwendung in keiner Weise erreicht wird. Deshalb findet man mit solchen "fast" deterministischen Tests auch potentielle Deadlocks oder Race-Conditions meistens nicht. Diese Probleme tauchen dann erst im Betrieb auf …
Zufall einfügen
Was hilft, ist den Test weniger vorhersagbar zu machen, das Zeitverhalten zu variieren. Das kann man erreichen, in dem man etwas "Zufall" in den Code einfügt.
Weiterlesen →