Wir haben eine mehrsprachige Website, auf der vor einigen Tagen ein Fehler entdeckt wurde. Es wurden andere Sprachdaten in einer anderen Sprache angezeigt, und es wurde auch die Mischung von Daten wie der englischen Sprache ausgewählt, aber es wurden auch andere Sprachdaten auf der Seite angezeigt und umgekehrt. Es macht es selten, ist aber auf der Website vorhanden. Das Durchgehen des Codes hilft auch nicht, da dies nicht immer vorkommt.
Irgendwelche Vorschläge, um das Problem rechtzeitig zu finden? Ich frage hier nach Strategien.
web-development
testing
bug
maz3tt
quelle
quelle
Antworten:
Der erste Schritt ist , um zu versuchen und zu charakterisieren , was kann diese Art von Problem verursachen. Da dies mit der Auswahl der richtigen Sprache für Codeabschnitte zusammenhängt, sollten Sie zunächst Folgendes berücksichtigen:
Nun, wenn Sie die gekennzeichnet haben Möglichkeiten , was schief gehen kann, wird es Zeit , um sicherzustellen , haben Sie die Daten , die Sie brauchen , um zu versuchen und herausfinden, was tat schief gehen.
Wenn Sie das Problem so weit eingegrenzt haben, dass Sie wissen, wie es reproduziert werden kann und was es verursacht, schreiben Sie den kleinsten automatisierten Test, um das Problem im Code zu erzwingen. Wenn Sie das Problem auf eine Klasse eingegrenzt haben oder zwei Klassen nicht richtig zusammenarbeiten, reproduzieren Sie es auf dieser Ebene. Sie sollten nicht 100 Threads erzeugen müssen, um dies zu tun. Führen Sie einfach den kleinsten Test durch, der dazu führen kann, dass das Problem in 100% der Fälle auftritt.
Jetzt können Sie das Problem beheben und sich darauf verlassen, dass es Sie nicht wieder beißt.
quelle
Der Fehler ist nicht reproduzierbar. Sie haben nur noch nicht herausgefunden, wie Sie es reproduzieren können.
Kein Fehler ist zufällig, es sei denn, Sie lösen eine Ausnahme aus, die auf dem Rückgabewert einer Random () - Anweisung basiert.
Ich weiß, dass dies wie eine Semantik erscheint, aber es ist mental beruhigend, sich das selbst zu erzählen.
Es ist sehr schwer und frustrierend herauszufinden, wie man einen Fehler wiedergibt, der nur aufgrund komplexer Rennbedingungen oder dergleichen auftritt.
Wie man es findet, würde ich die Anwendung an Stellen aktivieren / hinzufügen, die Ihnen weitere Informationen geben könnten.
Als nächstes teilen Sie den Personen, die den Fehler sehen (ob es sich um Entwickler, Qualitätssicherung oder Endbenutzer handelt), mit, dass sie ihn melden sollen, sobald sie ihn mit der Zeit sehen, zu der er aufgetreten ist, und konsultieren Sie dann Ihre Protokolle. Fragen Sie sie nach anderen Informationen, und der Fehler kann nur aufgrund der Interaktion mehrerer verschiedener Systeme oder aufgrund einer Rennbedingung auftreten
Hoffentlich finden Sie einen Hinweis.
quelle
Sie können versuchen, Stellen in Ihrem Code zu finden, an denen Sie erkennen können, dass das Problem aufgetreten ist (z. B. inkonsistente Parameter in einer Methode), die Überprüfungen zu Ihrem Code hinzufügen und zusätzliche Informationen zum Debug-Protokoll hinzufügen lassen (z. B. eine Stapelverfolgung, Objekte) zur Sitzung hinzugefügt usw.)
Wenn Sie dies tun, können Sie mit etwas Glück Informationen über die Ereignisse erfassen und den Weg zurück zum Problem ableiten.
quelle
Automatisierung sollte helfen, wenn es die gleichen Schritte zur Reproduktion sind, die manchmal fehlschlagen, automatisieren Sie dies und setzen Sie sie in eine Schleife. Laufen Sie 50.000 Mal und es ist sehr wahrscheinlich, dass es auftritt.
quelle
Versuchen Sie, Muster zu finden, um die Bedingungen zu bestimmen, unter denen sich dieses Problem manifestiert. Das sollte Sie auf die Abschnitte Ihres Codes hinweisen, die fehlschlagen (oder sich inkonsistent verhalten).
quelle
Können Sie erkennen , wenn das Problem wird auftreten? Wenn ja, können Sie Informationen über den Status des Systems zu diesem Zeitpunkt zuverlässig sichern?
Wenn die Antwort auf diese beiden Fragen Ja lautet, instrumentieren Sie Ihren Code, um so viele Informationen wie möglich zu protokollieren, wenn der Fehler tatsächlich auftritt, und warten Sie dann.
Dies ist kein Ersatz für das, was andere vorgeschlagen haben (Sie müssen noch überlegen, wie der Code in den Status gelangen kann, den Sie sehen), aber solange Sie den Fehler nicht nach Belieben reproduzieren können, Es ist eine gute Idee, die Gelegenheiten, in denen es auftritt, nicht zu verschwenden.
quelle