Frage

Ich habe einen tester, der während des Tests wird haben ein Fehler auftreten (soweit ok), aber dann hat er sich Häufig meldet es sofort.Wir (die Entwickler), dann später finden, dass die tester nicht versucht hat, das Problem zu reproduzieren, und (wenn gefragt) kann nicht einen Weg finden, um es wieder passieren.

Jetzt sind diese immer noch Fehler, die ich nicht wollen, um Sie zu ignorieren.Aber ohne repro-Schritte bin ich irgendwie stecken.Manchmal gibt es einen stack-trace (obwohl oft ist es nicht hilfreich, weil diese ist kompakter Rahmen, und es sind keine Zeilennummern).Aber wenn man ich kann die stack-trace und knacken die code und beginnen zu raten, aber das führt nicht zu getestet werden "Updates".

Was tun Sie in Szenarien wie diesem?

War es hilfreich?

Lösung

Ein Fehler ohne Kontext ist kein Fehler, es ist ein Zufall. Das Problem könnte Ihr Code sein, es könnte eine Bibliothek von Drittanbietern sein, es könnte die Hardware sein, oder es könnte sich um Solarstrahlung handeln, die ein einziges Bit von selbst umdrehen. Wenn Sie es nicht zumindest reproduzieren können etwas Regelmäßigkeit (auch wenn nur "es alle 10 oder 20 Mal passiert"), ist es nicht viel besser als Ihr Tester sagt, dass "etwas irgendwie irgendwie schief gelaufen ist - es reparieren".

Möglicherweise müssen Sie Ihrem Tester erklären, dass seine Aufgabe nicht nur Eingaben generieren soll, wenn etwas bricht. Wenn es so wäre, könnten Sie ihn durch einen zufälligen Zahlengenerator ersetzen. Ein Teil seiner Aufgabe ist es, Fehler zu identifizieren, die die Erzeugung ergeben, wie sie produziert werden können.

Andere Tipps

Wenn weder der Entwickler noch der Tester den Fehler reproduzieren können, sollte er geschlossen werden, aber als solches markiert werden.

Wie lange es dauert, bis Sie an diesen Punkt gelangen, ist jedoch umstritten.

Einige Leute würden argumentieren, dass es sofort geschlossen werden sollte, wenn es nicht sofort reproduzierbar ist.

Normalerweise bemühe ich mich, mehr Informationen vom Urheber des Problems zu erhalten. Es kann etwas geben, das sie im ursprünglichen Bericht vergessen haben. Ein Gespräch über die erforderlichen Schritte kann häufig die fehlenden Informationen aufzeigen.

Ein letzter Gedanke - geschlossen als "No -Repro" nicht gemein repariert. Wenn es ein echtes Problem gibt, zeigt sich sich früher oder später und verfügt über alle Informationen, die Sie helfen können, wenn Sie das Problem endlich reproduzieren können.

Ein paar weitere Vorschläge:

  1. Fügen Sie Ihrem Produktcode Protokollierung (und nicht nur einen Keylogger:}) hinzu. "No Repro" -Fehler können Fluks sein, aber sie können Speicher- oder Zustandskorruption sein, die nur in einem schmutzigen System auf unerwartete Weise eintritt (dh wie ein Kundencomputer). Bei der Protokollierung oder Verfolgung von Informationen können Sie herausfinden, was kann waren falsch, als der Tester den Zufall fand.

  2. Scannen Sie den Rest der Fehler "no repro" in der Datenbank (oder was auch immer Sie für die Fehlerverfolgung verwenden). Oft klumpen die Flukes in einem Bereich des Produkts zusammen. Wenn es so aussieht, als ob eine Komponente schuld ist, überprüfen Sie die Komponente für eine mögliche Flakiness und fügen Sie dieser Komponente zusätzliche Protokollierung hinzu - oder beides.

  3. Nehmen Sie sich eine halbe Stunde oder beobachten Sie Ihren Tester -Test. Ihr Ansatz könnte Ihnen eine Vorstellung davon geben, was schief gelaufen ist (zB "interessant - ich wusste nicht, dass Sie auf diese Weise zu diesem Dialog kommen können"). Sie können auch feststellen, dass sie einen Dialog- oder Konfigurationsschritt unbeabsichtigt überspringen. Es lohnt sich die Zeitinvestition, ein wenig in den Kopf zu gehen.

Ich tun, QA auf eine große HGB, diese irritierende Szenario übernimmt kommen viel zu oft.In der Regel ist es bezeichnend, dass Sie nicht mit ironclad Verfahren für das bauen des binary auf allen Plattformen, die wir unterstützen.Also, wenn der Entwickler seine eigenen code (was hat er zu tun, um zu Debuggen und zu beheben), und folgt nicht den gleichen build proceedure auf den Brief, besteht die Möglichkeit, dass die system abhängige Fehler erscheint auf Magische Weise verschwinden (oder erscheinen).Natürlich sind diese Dinge in der Regel bekommen schließen mit "funktioniert für mich" in der bug-Datenbank, und wenn Sie fehlschlagen, wird die nächste Zeit das problem ausgeführt wird, der Fehler kann wieder geöffnet werden.Immer, wenn ich vermute, dass ein Fehler kann sein system abhängig ist, ich versuche, es zu testen auf einer Vielzahl von Plattformen und Bericht unter welchen Bedingungen es geschieht.Oft zu einem Speicherfehler onlt zeigt, ob die Daten beschädigt ist groß genug Größe, um einen Absturz verursachen.Einige Plattformen (HW-und OS-Kombinationen) kann Abstürzen, näher an die eigentliche Quelle der Korruption, und diese können sehr wertvoll sein für den Armen Kerl, der hat zu Debuggen.

Der tester braucht, um einige der Wertschöpfung, die nicht nur die Berichterstattung, dass sein system zeigt einen Fehler.Ich verbringe viel Zeit screening falsche positive -vielleicht die-Plattform, die in Frage überlastet war, oder das Netzwerk hatte eine Panne.Und ja, manchmal können Sie etwas bekommen, das wirklich beeinflusst durch zufällige timing-events, hardware-Fehler können Häufig proto Beispiel:Wenn zwei Daten-Anfragen immer wieder auf genau die gleiche Uhr-Zeit, und die hardware-Logik für die Behandlung der potentielle Konflikt defekt ist, dann wird der Fehler nur zeitweise.Ebenfalls mit der parallelen Verarbeitung, es sei denn, durch sorgfältige design Sie haben eingeschränkt die Lösung für Sie, unabhängig von der Prozessor war schneller, Sie können Holen Sie sich Fehler, die nur einmal in einem blauen Mond, und Ihre statistische imporbablity, ist das Debuggen ein Alptraum.

Auch unser code ist aktualisiert, in der Regel viele mal täglich, tracking down eine genaue sourcecode Versionsnummer, wenn es mal in den Süden werden können, sehr nützliche Informationen für die debugging-Aufwand.Der tester sollte nicht in einem kontradiktorischen Beziehung mit dem Debugger und-Entwickler, er ist dort als Teil eines Teams zu verbessern, die Qualität der Produkt.

Es gibt zwei Arten von Fehler, die nicht reproduzierbar sind:

1) Diejenigen, die ein Tester (oder ein Benutzer) einmal gesehen hat, aber entweder nicht in der Lage war, sich zu reproduzieren oder nicht.

In diesen Situationen sollten Sie:

  • Überprüfen Sie sehr kurz den grundlegenden Maßnahmenverlauf, der den Defekt zeigte, um sicherzustellen, dass er nicht reproduzierbar ist.

  • Sprechen Sie mit dem Tester / Benutzer, um festzustellen, ob andere Informationen vorhanden sind, die helfen können.

  • Verweisen Sie auf sie mit anderen Defekten, die sich möglicherweise beziehen, um festzustellen, ob Sie über genügend Informationen verfügen, um sie basierend auf mehreren Instanzen zu untersuchen. Sie können feststellen, dass dieses eine Problem Ihnen nicht genügend Informationen gibt, um jedoch in Verbindung mit einer Reihe anderer Probleme zu tun, die Ihnen etwas vorschlägt, das nicht richtig ist, was es wert ist, untersucht zu werden.

  • Wenn Sie immer noch nicht genug haben, müssen Sie dem Benutzer / Tester erklären, dass Sie nicht genügend Informationen haben. Überlegen Sie sie höflich, wie genügend Informationen aussehen würden und warum sie benötigt werden.

2) Diejenigen, bei denen sie nicht zuverlässig reproduziert werden können, es gibt jedoch genügend Beweise (in Bezug auf wiederholte Ereignisse), um darauf hinzuweisen, dass der Defekt existiert, und ich neige dazu zu erkennen, dass dies Entwicklerprobleme sind und dass der Entwickler vom Tester unterstützt wird / Benutzer - muss untersuchen.

Dies ist wahrscheinlich langsam und schmerzhaft. Sie müssen wahrscheinlich den Code laufen, mehr Protokollierung hinzufügen, die Daten ansehen und mit den Tester / Benutzern eingehend sprechen, aber wenn es genügend Beweise gibt, um darauf hinzudeuten, dass es wahrscheinlich dort ist Ist ein Problem, das Sie benötigen, um das Eigentum daran zu übernehmen und alles zu tun, um dies zu beheben.

Es hört sich so an, als würde dies relativ häufig geschehen - was mich wundern lässt, weil die meisten Fehler wirklich schwer zu reproduzieren sind, oder ist es aus einem anderen Grund, dass er es nicht versucht? Wissen Sie warum Er versucht nicht, das Problem zu reproduzieren? Liegt es daran, dass er nicht merkt, wie wichtig es für Sie ist? Oder ist es vielleicht, dass er andere Druck hat - ein Testmanager, der nur möchte, dass er die zugewiesenen Tests schnell durchkommt und die Käfer beispielsweise über die Wand wirft? Oder ist er sich vielleicht nicht sicher, wie er es vorgehen soll?

Ich würde anderen zustimmen, dass es eine Priorität hat, an einer besseren Protokollierung zu arbeiten. In der Zwischenzeit, wenn Sie vermuten, dass mangelnder Fertigkeit/Selbstvertrauen ein Problem sein kann, mag ich diesen Artikel wirklich von Danny faugte auf die Insektenisolation - Sie könnten ihn zu Beginn darauf hinweisen.

Wenn sich herausstellt, dass das Problem auf den Druck des Managements zurückzuführen ist - Sie haben mein Mitgefühl, da dies schwierig ist, zu knacken, insbesondere wenn Tester und Programmierer an verschiedene Manager berichten und die Manager nicht dazu geneigt sind, ein anderes Team zu "helfen".

Normalerweise stelle ich fest, dass es nicht reproduzierbar ist, aber lassen Sie es offen, bis diese Test- oder Iteration abgeschlossen ist.

Wenn es von diesem Punkt nicht reproduziert wurde, ist es geschlossen, kann aber wieder geöffnet werden, wenn es wieder auftritt.

Stücken Sie einen Keylogger auf die Workstation dieses Tester!

Nun, die erste Aufgabe ist, ein reproduzierbares Testsystem zu haben. Dein Tester muss einen gut definierten Prozess haben - automatisch, wenn möglich.

Haben diese drei Bedingungen:

  • Gleiches binär
  • Gleiche Schritte
  • Gleiche Maschine

Wenn der Fehler sporadisch unter den oben genannten 3 Bedingungen erscheint, beginnen Sie weiter zu isolieren. Betrachten Sie jede Ebene des Systemstapels und seiner Konfiguration.

Eine Möglichkeit, Fehlerverwaltungsfehler zu erkennen, besteht darin, das Programm auf mehreren OSS mit mehreren Compilern auszuführen. Valgrind kann auch helfen.

In der Regel können parallele Systeme jedoch nicht repro-Fehler induzieren. Dinge wie Puffergrößen und Verarbeitungsgeschwindigkeiten, Asynch -IO, Datenbanksperrungen, Variable Speicher Schreiben Sie Interlavings; All dies kann Probleme erzeugen. Und so weiter und so weiter.

Zunächst sollten Sie ein strenges Testverfahren durchführen (aber ich verstehe Sie, in meiner Firma, die Sie beschrieben haben, häufig vorkommt).

Abhängig vom Schweregrad des Fehlers können Sie einige Zeit in diese investieren oder (besser) ihn ignorieren, bis Repro -Schritte bereitgestellt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
scroll top