Ein Fehler ist eine unerwünschte, nicht den Spezifikationen folgende Verhaltensweise.
Um die Ursache eines Fehlers zu finden und zu beheben, muss die Datenkonstellation, die zu dem Fehler führt gefunden werden und auf einem, dem Zielsystem identischen System nachgestellt werden.
Diese Daten können eine Besonderheit enthalten, die während des ursprünglichen Tests des Systems nicht berücksichtigt wurde. Dadurch konnte der Fehler während der Umsetzung nicht bemerkt werden.
Kann die Datenkonstellation nicht übertragen werden, weil beispielsweise Seiteneffekte dies verhindern, muss versucht werden, die Reihenfolge der Aktionen nachzuvollziehen, die zu diesen Daten geführt hat. Dies kann eine beliebige Komplexität erreichen. Es ist zudem auszuschließen, dass über andere, als den Spezifikationen des Systems bekannte Funktionalitäten versucht wurde eine Datenkonstellation herzustellen.
Konnte der Fehler reproduziert werden, so lässt sich durch die Betrachtung der verarbeitenden Schritte des Systems feststellen, welcher Schritt zu dem Fehler führt und entsprechend anpassen.