Wie gehe ich mit Fehlern um, von denen ich glaube, dass sie behoben wurden, aber ich bin mir nicht ganz sicher

13

Es gibt einige Arten von Fehlern, die sehr schwer zu reproduzieren sind, sehr selten und scheinbar zufällig auftreten. Es kann vorkommen, dass ich eine mögliche Ursache finde, sie behebe, das Programm teste und den Fehler nicht reproduziere. Wie kann ich dies jedoch in einem Bugtracker anzeigen, da es unmöglich war, den Fehler zuverlässig zu reproduzieren, und es so selten vorkam? Was ist die übliche Vorgehensweise?

Wenn ich den Wert statusauf fixed und den solutionWert auf fixed setzen würde, würde das etwas völlig Festes bedeuten, nicht wahr?

Ist es üblich, das statuszu fixieren und das solutionzu öffnen, um den Testern anzuzeigen, dass "es wahrscheinlich fixiert ist, aber mehr Aufmerksamkeit benötigt, um dies sicherzustellen"?

Bearbeiten: Die meisten (wenn nicht alle) Bugtracker haben zwei Eigenschaften für den Status eines Fehlers, möglicherweise sind die Namen nicht gleich. Mit dem statusich meine neue, zugewiesen, fixiert, geschlossen, usw. , und solutionich meine , offen (neu), feste, unlösbare, nicht reproduzierbar, vervielfältigen, nicht einen Fehler , usw.

vsz
quelle
3
Dies ist etwas spezifisch für Ihren Bug-Tracker. Welche anderen Werte können Sie Status und Lösung zuweisen ?
Scarfridge
In einigen Bug-Trackern gibt es den Status "Gelöst" und den Status "Geschlossen". Nur QA-Mitarbeiter dürfen den Status auf "Geschlossen" setzen, Entwickler können den Status auf "Gelöst" setzen.
Brian

Antworten:

8

Ist es üblich, den Status auf "behoben" und die Lösung auf "geöffnet" zu setzen, um den Testern anzuzeigen, dass "dies wahrscheinlich behoben ist, aber mehr Aufmerksamkeit benötigt, um dies sicherzustellen"?

Allgemein oder nicht, das ist sowieso das Richtige, und Sie haben selbst dargelegt, warum: Egal wie, es ist eine gute Vorgehensweise

weisen die Tester darauf hin, dass "es wahrscheinlich behoben ist, aber mehr Aufmerksamkeit benötigt, um sicherzustellen, dass"


Randbemerkung: Auch wenn ein bestimmter Bug-Tracker kein Feld wie dasjenige enthält, das Sie als beschreiben solution, kann der Entwickler mindestens einen Kommentar in freier Form hinzufügen, der die obigen Erläuterungen enthält.

... und wenn der Bug-Tracker keine Kommentare zum Problem zulässt, muss er durch einen solchen ersetzt werden. Die Möglichkeit, Freiformerklärungen hinzuzufügen, ist ein äußerst wichtiges Merkmal, da die Probleme zu stark variieren, um in ein vordefiniertes Formular zu passen.

Mücke
quelle
6

Das Testteam entscheidet, ob das Problem behoben wurde und ob es geschlossen werden kann. Wenn es weitere Regressionen, Nebenwirkungen des Fixes gibt oder der Fix selbst in einem anderen Szenario nicht wirksam ist, wird das Problem erneut geöffnet. Wenn Sie jedoch genug Entwicklertests durchgeführt haben, ist es besser, sie als behoben zu markieren.

Überlegenheit
quelle
+1 - Dies ist die einfachste Antwort. Was können Sie tun, wenn Sie Ihr Bestes gegeben haben und die Testsuite des Testteams stark genug ist?
ozz
3

Es gibt Arten von Fehlern, die sehr schwer zu reproduzieren sind, sehr selten und scheinbar zufällig auftreten. Es kann vorkommen, dass ich eine mögliche Ursache finde, sie behebe, das Programm teste und den Fehler nicht reproduziere.

Wenn es kein reproduzierbares Testszenario gibt, würde ich nicht einmal versuchen, einen solchen Fehler im Voraus zu beheben. Wenn Sie dem Tester mehr Aufmerksamkeit schenken möchten, geben Sie ihm die Möglichkeit, ein reproduzierbares Szenario zu erstellen.

Nehmen wir zum Beispiel an, Sie ändern das Programm, und ein Tester investiert 1 Stunde in den Versuch, den Fehler zu reproduzieren, und der Fehler tritt nicht auf - war eine Stunde genug? Oder ist es Zeitverschwendung, weiter zu testen, weil der Fehler bereits behoben wurde?

Wenn Sie das Programm jedoch nicht ändern und der Fehler nicht innerhalb einer Stunde auftritt, sollte der Tester höchstwahrscheinlich eine weitere Stunde in das Ausprobieren verschiedener Dinge investieren. Und wenn der Tester eines Tages investiert und den Fehler nicht mehr reproduzieren kann - lohnt es sich dann wirklich, ihn zu beheben?

Vor diesem Hintergrund können Sie überlegen, wie Sie diesen Prozess in Ihrem Bug-Tracking-System modellieren: Wenn Sie nicht versuchen, ihn zu beheben, und ihn den Testern übergeben, kann dies zu einem Bug-Status wie "offen" führen. Wenn die Tester es nicht reproduzieren können, ist es offensichtlich "nicht reproduzierbar". Hoffentlich passiert dies nicht, sie finden ein reproduzierbares Szenario, Sie können die Grundursache Ihres Fehlers finden, es beheben und den Status auf "behoben" setzen. Versuchen Sie zu vermeiden, in etwas wie "Weiß nicht, ob es behoben ist" zu geraten.

Doc Brown
quelle
4
Für bestimmte Fehlertypen gibt es einfach kein reproduzierbares Testszenario. Zum Beispiel könnte ein Fehler im Zusammenhang mit dem Timing durchschnittlich 1 Mal in einer Million auftreten - es ist jedoch unmöglich vorherzusagen, ob er beim 3. oder 532454. Durchgang auftreten wird. Trotzdem sind solche Fehler Fehler und müssen behoben werden.
Joonas Pulakka
3
@Joonas Pulakka: Ich stimme zu. Und solche Fehler können von äußeren Umständen abhängen. Im Falle von Embedded können sie von Stromstößen abhängen, die durch etwas verursacht werden, das Sie nicht kontrollieren können. Der Versuch, das Problem nicht zu beheben, ist nicht immer die beste Lösung, besonders wenn ich zufällig einen Codegeruch finde, von dem ich vermute, dass er eine Ursache für diesen Fehler ist. Warum sollte ich das Problem in diesem Fall nicht beheben?
vsz
2
@JoonasPulakka: Nach meiner Erfahrung mit reproduzierbaren Szenarien fehlt in den meisten Fällen, in denen Leute sagen, dass "es nicht möglich ist", die richtige Idee, um Dinge möglich zu machen. In Ihrem Beispiel könnte man ein Szenario mit einer "10-Millionen-Run" -Schleife einrichten, so dass es zumindest sehr wahrscheinlich ist, dass der Fehler in angemessener Zeit angezeigt wird.
Doc Brown
2
@vsz: Du solltest es natürlich reparieren, aber ich schlage vor, dass man zuerst einen Test erstellt (oder Testern einen Hinweis gibt, was zu testen ist) und ihn dann repariert, nicht umgekehrt.
Doc Brown
2
@DocBrown ist richtig, eine andere Möglichkeit, darüber nachzudenken, ist, dass Fehler manchmal einen statistischen Ansatz erfordern, um sie zu "reproduzieren". Möglicherweise gibt es eine Reihe von Eingaben / Umständen, die den Fehler reproduzieren. Sie haben jedoch möglicherweise KEINE Ahnung, um welche Eingaben es sich handelt, und die Anzahl der möglichen Eingaben ist möglicherweise zu groß, um sie durchlaufen zu können. In diesen Fällen besteht ein Ansatz darin, bei jedem Versuch, den Fehler zu beheben, Statistiken über das Auftreten eines Fehlers zu sammeln. Es kann lange dauern, und die Ergebnisse geben Ihnen möglicherweise nicht 100% iges "Vertrauen" im statistischen Sinne, aber manchmal ist das alles, was Sie haben.
Angelo
0

Manchmal haben Sie nur rein statistische Beweise, z. B. treten sie ein- oder zweimal im Monat auf, scheinen aber ansonsten mit nichts zu tun zu haben. Dies sind die schlimmsten Fehler, die ich je diagnostiziert und behoben habe, da Sie nicht mit Sicherheit feststellen können, ob Ihre Korrekturen einen Effekt haben. Das letzte Problem, das ich lösen musste, endete mit einer statistischen Korrektur: Die Häufigkeit des Symptoms ging auf 10% zurück, mit der wir begonnen hatten. Das letzte Stück wurde nie gefunden, oder vielleicht doch, aber niemand konnte es sagen.

Zwei Ratschläge, die ich habe, lauten: (1) Nehmen Sie an, dass mehrere Ursachen wirksam sein könnten, bis Sie etwas anderes wissen, und (2) stellen Sie eine Hypothese auf, wie die Symptome möglicherweise auftreten könnten, und reißen Sie dann jede Logik auseinander, die auch nur aus der Ferne betroffen ist. Tiefe Komplettlösungen sind manchmal das einzige Mittel, um ein zufriedenstellendes Ziel zu erreichen.

Chris Cochran
quelle