Sollte die Qualitätssicherung reproduzierbare Szenarien finden?

10

Manchmal meldet mein QA-Team Fehler, aber weder ich noch sie haben eine Idee, wie sie reproduziert werden können. Dies führt zu sehr langen und frustrierenden Debugging-Sitzungen, die manchmal nicht einmal zu Ergebnissen führen.

Meine Software ist stark mit proprietärer Hardware verbunden, sodass Fehler aus vielen Richtungen gleichzeitig auftreten können.

Sollte ich mehr von ihnen erwarten als "Ihre Software ist abgestürzt, als ich einen Knopf gedrückt habe" oder sollte ich mir selbst überlegen, was passiert ist?

BEARBEITEN:

Einer meiner Mitarbeiter wies darauf hin, dass wir wahrscheinlich alle Entwickler hier sind, so dass die Ergebnisse möglicherweise ein wenig voreingenommen sind

Eric
quelle
1
Dies ist keine wirkliche Antwort, aber es ist erwähnenswert, dass Sie dieses Problem etwas reduzieren können, indem Sie (mehr) Protokollierung in Ihre Anwendung einfügen. Vielleicht könnte Ihr Testbuild auf einen ausführlichen Protokollierungsmodus eingestellt sein, der Ihnen vage Reproduktionsschritte gibt, die Sie beim Debuggen von Sitzungen unterstützen?
ChrisFletcher
Nicht wirklich, das sollte Testing tun. QA sollte QA machen.
Mattnz
1
Erwägen Sie, Ihrem Produkt eine Logik hinzuzufügen, mit der Sie die vom Benutzer unternommenen Schritte nachvollziehen können, und verfügen Sie über eine QA-Schaltfläche, mit der der Fehlerberichter diese Informationen einfach aus Ihrem Produkt extrahieren und dem Fehlerbericht hinzufügen kann.
Zumindest ein Screenshot der tatsächlichen Situation würde die meiste Zeit helfen, den Fehler zu reproduzieren. (Siehe den Protokollierungskommentar oben). Usersnap ist ein Tool zur besseren Fehlerberichterstattung und zur Einsparung von Kommunikationszeit.
Gregor

Antworten:

31

Die Qualitätssicherung sollte immer versuchen, die Fehler für Sie so einfach wie möglich zu reproduzieren, und die Fehlerbeschreibung sollte die durchgeführten Schritte enthalten.

Wenn sie die Fehler jedoch nicht einfach reproduzieren können, sollten sie dennoch mit geeigneten Titeln / Überschriften und einer vollständigen Beschreibung dessen, was sie getan haben, um den Fehler zu verursachen, in die Fehlerdatenbank eingegeben werden. In der Fehlerbeschreibung sollte klar angegeben sein, dass sie den Fehler nicht reproduzieren können (möglicherweise mit einem Kommentar wie "fünfmal ausprobiert, es ist einmal passiert"). Auf diese Weise kann eine andere Person, die denselben Fehler sieht, mit ihren Ergebnissen zur Fehlerdatenbank hinzufügen, und Sie erhalten so viele Informationen wie möglich, die später wichtig sein können, um Zeit beim Aufspüren des Problems zu sparen.

Außerdem können Sie die Informationen filtern - es gibt möglicherweise viele Fehler in verschiedenen Systemen, von denen Sie wissen, dass sie alle mit (z. B.) einem Bereich des Codes verknüpft sind -, wenn die Qualitätssicherung nichts meldet (da sie diese nicht reproduzieren können) ) dann kommen diese Informationen nicht zu Ihnen.

PhillC
quelle
... a full description of what they did to cause the bug. Wie unterscheidet sich das von einem Repo?
Steven Evers
13
@ SnOrfus: Repos sind per Definition reproduzierbar. Wenn Sie einen Fehler finden, ihn aber später nicht reproduzieren können, ist es dennoch hilfreich zu wissen, was Sie zu diesem Zeitpunkt getan haben, um herauszufinden, was ihn verursacht hat.
BlueRaja - Danny Pflughoeft
3
@SnOrfus: The software crashedvs The software crashed editing foowidgetsvs The software crashes when viewing a foowidget and toggling the frobulator 10 times followed by pressing this key sequence (stack trace attached). Das letzte Detail mag nicht offensichtlich sein, aber die zweite Beschreibung anstelle der ersten zu haben, ist sicherlich hilfreich.
Daenyth
@ Daenyth: Fair genug. Vielleicht komme ich zu weit in die Semantik einer vollständigen Beschreibung.
Steven Evers
Stellen Sie sicher, dass "Geschlossen hat / konnte nicht reproduzieren" für Ihren Defekt-Tracker verfügbar (dort und akzeptabel) ist.
Mattnz
13

Es sieht so aus, als würde Ihre QS-Abteilung zu viele Erkundungstests durchführen (dh sie haben keinen guten Testplan).

Erkundungstests sind gut und identifizieren Problembereiche. Von dort aus sollten sie jedoch reproduzierbare Testfälle (dh einen Testplan) definieren, die bestimmte Fehler aufdecken.

Es gibt eine Reihe von Gründen, warum ein korrekter Repro notwendig ist (nicht nur gut, sondern auch notwendig):

  1. Sie müssen repro, damit Sie die Ursache debuggen / aufspüren können.
  2. Die Qualitätssicherung muss in der Lage sein, das Update zu überprüfen, sobald Sie fertig sind.
  3. Weitere Testdurchläufe müssen Regressionen bei früheren Fehlern durchführen.
  4. Bekannte Fehler können verworfen werden, wenn die Exposition zu gering oder Repro zu unwahrscheinlich ist.

Also, wie SteveCzetty bemerkt: Schließen Sie es als kein Repro und machen Sie sich wieder an die Arbeit.

Steven Evers
quelle
3
Das Problem bei den zu reproduzierenden Schritten besteht darin, dass Crash-Bugs normalerweise nicht erwartet oder gesucht werden und normalerweise mitten in einem Testplan auftreten. Sie sollten versuchen, es zu reproduzieren, aber oft ist dies unvollkommen. Zum manuellen Testen kann eine gute Desktop-Bildschirmaufzeichnungssoftware während Testfällen jeden Schritt und Zeitstempel erfassen, der zum Absturz geführt hat, sowie einfache Fehler oder scheinbar unwichtige Details erfassen, die die QS-Person bei ihren Schritten zur Reproduktion möglicherweise übersehen hat. Mit diesem und den Testprotokollen sollte ein Entwickler ein klareres Bild haben.
maple_shaft
3
@maple_shaft Dies ist in der Tat wahr - ich erwarte nicht, dass jeder Fehler aus der Qualitätssicherung zu 100% reproduzierbar ist. Die Bildschirmaufnahme ist eine interessante Option und sollte auf jeden Fall stärker berücksichtigt werden, da sie mehr Flexibilität ermöglicht, ohne die Möglichkeit aufzugeben, über die Schulter des Testers zu schauen.
Michael K
2
@maple_shaft: Ich stimme zu, und MTM hat das eingebaut. In diesem Fall gibt es jedoch einen signifikanten Unterschied zwischen dem, was Eric erhält ("Es gab einen Absturz") und dem besten Szenario (Ereignisprotokolle + Anwendungsprotokolle + Video + Aktionsaufzeichnung + Intellitrace + Itemized Repro). Die Arbeit von IMO / E QA endet nicht mit dem Bluescreen - und ein Repro ist das erste, was sie zu produzieren versuchen sollten, auch wenn dies nicht immer machbar ist.
Steven Evers
@SnOrfus Ich konnte nur davon träumen, mit einem so professionellen QA-Team zusammenzuarbeiten. In den meisten Organisationen, in denen ich gearbeitet habe, waren sie der Bodensatz, der zu inkompetent oder faul war, um es als Softwareentwickler zu schneiden. Überraschenderweise wurde das beste QA-Team, mit dem ich zusammengearbeitet habe, komplett ausgelagert, wahrscheinlich weil sie tatsächlich QA-Tests durchführen möchten.
maple_shaft
@maple_shaft: Wo ich arbeite, bevor ich von QA zu Dev gewechselt bin, haben wir das meiste bereits gemacht (Video beansprucht eine Menge Festplattenspeicher, wenn Sie 400000 Testfälle haben).
Steven Evers
7

Wenn der Fehler nicht konsistent reproduziert werden kann, wie wird die Qualitätssicherung jemals wissen, ob er behoben wurde?

Kyralessa
quelle
Ja, dies ist ein weiteres Problem, das ich nicht erwähnt habe, das aber häufig auftritt. Ich erhalte einen Fehlerbericht, nehme Änderungen vor und schließe den Fehler. Die Qualitätssicherung genehmigt dann den Abschluss. Einige Wochen später wird das Problem erneut geöffnet, da es nicht behoben wurde. Ich habe auch viele Probleme, da "die Software abgestürzt ist", was zu einem großen Schmelztiegel jedes möglichen Fehlers wird
Eric
6

Ja, Sie sollten mehr von ihnen erwarten. Sie sollten sagen können:

1. Neue Programminstanz gestartet
2. Ich habe Taste A gedrückt
3. Geben Sie "Testtext" in das Feld TESTNAME auf Formular 1 ein
4. Taste B gedrückt
5. Es wurde festgestellt, dass das Programm mit dieser Meldung abgestürzt ist (siehe beigefügten Screenshot).

Wenn alles, was sie sagen, "es ist abgestürzt" ist, sind sie nicht sehr gut. Selbst wenn die oben genannten Schritte nicht zu 100% reproduzierbar sind, kann eine ausreichend große Stichprobe dieser Abstürze dazu beitragen, die Ursache einzugrenzen, sobald ein Muster erkannt wird.

FrustratedWithFormsDesigner
quelle
5

Mein Rat ist, diese Fehler zu lesen und ihnen einen guten alten Gedanken zu geben. Wenn Sie eine mögliche Ursache nicht herausfinden können, vergessen Sie sie vorerst.

Die Qualitätssicherung sollte jedes Problem dokumentieren, das sie findet, auch wenn sie keine Ahnung haben, wie es passiert ist. Es ist Aufgabe von QA, Probleme zu reproduzieren, aber realistisch gesehen ist dies nicht immer möglich. Manchmal hat es nichts mit dem zu tun, was sie in den letzten 10 Minuten getan haben. Vor einem Tag ist etwas in einen ungültigen Zustand geraten, und es wurde nur durch einen der letzten 10 Schritte offensichtlich.

Bei diesen "1 in 1000" -Fehlern sollte die Qualitätssicherung versuchen, sie ein wenig zu reproduzieren. Wenn sie keinen Erfolg haben, sollten sie den Fehler dokumentieren und dann etwas mehr versuchen.

Der Grund, warum sie den Fehler ziemlich früh eingeben sollten, ist, dass der Programmierer den Code viel besser kennt als die Qualitätssicherung und das Problem möglicherweise sofort kennt. Es könnte der Code sein, den sie überarbeitet haben. Es könnte die Funktion sein, die sie zur Hälfte implementiert und dann vergessen haben. Sie haben vielleicht keine Ahnung, aber es macht keinen Sinn, wenn der Tester ein paar Stunden damit verschwendet, ein Problem zu reproduzieren, das für die Person, die es codiert hat, offensichtlich ist. Der Tester kann dem Fehler später jederzeit weitere Details hinzufügen.

Der Fehler sollte so viele Informationen wie möglich enthalten. Was auch immer sich der Tester über die Vorbereitung des Problems erinnern kann, sollte in schmerzhaften Details niedergeschrieben werden. Alle Absturzprotokolle, Datenbank-Snapshots oder relevanten Screenshots sollten ebenfalls angehängt werden.

Wenn der Fehler nie reproduziert wird, großartig! Es tut nicht weh, es in der Datenbank zu haben. Wenn das Programm veröffentlicht wird und ein Benutzer später einen ähnlichen Fehler meldet, können Sie seine Erfahrung mit den Angaben im Bericht vergleichen und nach Ähnlichkeiten suchen.

Nach meiner Erfahrung werden die saftigsten Fehler nicht aus folgenden Testplänen gefunden. Manchmal muss man die Dinge ein paar Wochen schmoren lassen, damit sich Mond und Sterne ausrichten, was einen bösen Fehler verursacht. Wenn die Qualitätssicherung Detektivarbeit leisten und mögliche Ursachen finden kann, klopfen Sie ihnen auf den Rücken. Aber manchmal, wer weiß, was passiert ist?

Dean
quelle
+1 für "Es tut nicht weh, es in der Datenbank zu haben"
PhillC
4

Viele Fehler sind erst reproduzierbar, wenn Sie wissen, wie Sie sie beheben können. Das bedeutet nicht, dass sie nicht repariert werden müssen. Ich habe letztes Jahr einen Fehler behoben, den ich immer noch nicht reproduzieren kann. Es erfordert eine bizarre Kombination eines genau zeitgesteuerten Übertragungsfehlers mit sehr spezifischen Mülldaten an einem bestimmten Speicherort auf dem Stapel. Leider hat einer unserer Kunden das "Glück", ständig in diesen Zustand zu geraten.

Ermutigen Sie die Qualitätssicherung auf jeden Fall, nach Möglichkeit Schritte zur Reproduzierbarkeit aufzunehmen, aber bemängeln Sie sie nicht, wenn dies nicht möglich ist. Manchmal hilft es Ihnen zu wissen, wo Sie die Protokollierung hinzufügen müssen. Manchmal sagt es Ihnen nur, was den Fehler nicht verursacht, aber ein Fehlerbericht ist immer nützlich.

Karl Bielefeldt
quelle
2

Wenn Sie meinen, sollte die Qualitätssicherung die Schritte zur Reproduktion des Fehlers enthalten, wenn dies möglich ist, lautet die Antwort Ja. Wenn Sie meinen, sollten sie nur Fehler aufzeichnen, die sie reproduzieren können, dann absolut nicht. Bugs sind Bugs, egal ob sie nur um Mitternacht bei Vollmond auftreten oder jedes Mal, wenn Sie sie ansehen. Einige Fehler sind nicht deterministisch (klassisches Beispiel ist eine nicht initialisierte Variable, bei der der erfasste Wert halb zufällig ist). Dies bedeutet nicht, dass sie nicht aufgezeichnet, untersucht und wenn möglich behoben werden sollten.

Nicht reproduzierbare Fehler sollten im Allgemeinen eine niedrige Priorität haben, sie sollten jedoch unbedingt aufgezeichnet werden.

jmoreno
quelle
1

IMO, du solltest. QA machen ihre Arbeit nicht, wenn sie Ihnen keine Reproduktionsschritte geben können. Verschwenden Sie keine Zeit damit, etwas zu reproduzieren, das Sie nicht können. Schließen Sie es einfach als "Kann nicht reproduzieren" und fahren Sie fort.

Ihre Zeit ist viel wertvoller als das.

Steve Czetty
quelle
1

Ein Fehlerbericht sollte enthalten:

  • Schritte zum Reproduzieren
  • Tatsächliches Verhalten
  • Erwartetes Verhalten

Z.B:

  • Ich habe alle Lieferanten aus der Datenbank gelöscht (mit DELETE * FROM tSuppliers), den Lieferantendialog geöffnet und auf die Dropdown-Liste Lieferant geklickt.
  • Die Liste enthielt die folgende Meldung : GUPOS ERROR #0000000: SOMETHING WENT WRONG!. Als ich auf die Nachricht klickte, verschwand die App vom Bildschirm und vom Task-Manager.
  • Ich habe erwartet, dass entweder eine leere Liste oder (vorzugsweise) eine Meldung wie "Keine Lieferanten gefunden" angezeigt wird. Das Klicken auf die leere Liste oder die Nachricht sollte keine Auswirkung haben. Die App sollte unter keinen Umständen ohne Vorwarnung verschwinden.

Also ja - es sollte die zu reproduzierenden Schritte enthalten. Die Tatsache, dass sie nicht das Bedürfnis haben, dies einzubeziehen, scheint darauf hinzudeuten, dass sie glauben, ihre Aufgabe sei es, "die Software zu brechen", anstatt Fehler zu identifizieren.

gkrogers
quelle
0

QA sollte in der Lage sein, die Fehler basierend auf den eingegebenen Schritten zu reproduzieren. Wenn sie sich Mühe gaben und sich immer noch nicht reproduzieren konnten, sollten sie die Fehler immer noch mit so vielen Details wie mit dem Zeitstempel eingeben, damit die Entwickler einen Blick auf die Anwendung werfen und Protokolle debuggen können, um weitere Details zu erhalten.

java_mouse
quelle
0

Hier geht es um Geld. Warum sollte ein Teammitglied in der Lage sein, eine schlecht definierte Aufgabe mit geringen Erfolgschancen zu erstellen, die einen (hoffentlich) hochbezahlten Entwickler belastet?

Hier geht es nicht um Hackordnung, Hierarchie, Arroganz, uns gegen sie oder ähnliches. Hier geht es nur darum, in Aktivitäten zu investieren, die dem Produkt einen Mehrwert verleihen.

Wenn nachgewiesen werden kann, dass ein Problem den Wert des Produkts negativ und messbar beeinflusst, sollte es untersucht, reproduziert und behoben werden. Beheben Sie Ihre Produktfehler-Pipeline, um das Rauschen herauszufiltern.

bneely
quelle
-1

Ihr QA-Team ist scheiße

Gehen Sie zu ihnen und fordern Sie sie auf, ein Dokument zu lesen, das jeder professionelle Tester direkt in seinem Gehirn gedruckt haben muss (ich war einmal ein Tester und ich habe es immer noch genau dort in meinem Gehirn): Wie man Fehler effektiv meldet .

Zeigen Sie sie insbesondere auf den Abschnitt "Zeigen Sie mir, wie ich mich zeigen kann" :

Dies ist die Ära des Internets. Dies ist die Ära der weltweiten Kommunikation. In dieser Zeit kann ich meine Software per Knopfdruck an jemanden in Russland senden und er kann mir genauso einfach Kommentare dazu senden. Aber wenn er ein Problem mit meinem Programm hat, kann er mich nicht davor stehen lassen, solange es fehlschlägt. "Show me" ist gut, wenn du kannst, aber oft kannst du nicht.

Wenn Sie einen Fehler einem Programmierer melden müssen, der nicht persönlich anwesend sein kann, besteht das Ziel der Übung darin, ihn in die Lage zu versetzen, das Problem zu reproduzieren . Sie möchten, dass der Programmierer eine eigene Kopie des Programms ausführt, dieselben Schritte ausführt und es auf dieselbe Weise fehlschlägt. Wenn sie das Problem vor ihren Augen sehen können, können sie sich damit befassen ...


Wenn sie dich anschreien und sich beschweren, dass "Käfer aus vielen Richtungen gleichzeitig kommen können" , sag ihnen, dass sie noch mehr saugen, als du vorher gedacht hast. Sagen Sie ihnen, dass Testbarkeit eine Funktion ist, die sie unter anderen Projektfunktionen bewerten sollten, und sie sollten Anstrengungen unternehmen, um diese Funktion richtig zu machen.

  • Verbesserungen der Testbarkeit, die man erzielen könnte, wenn sich ein professioneller Tester darauf konzentriert, könnten Magie ähneln. Das habe ich selbst vor ein paar Monaten gelernt. Der QS-Ingenieur, der mit unserem Team zusammenarbeitet, gab mir eine Handvoll Testbarkeitsanfragen , die ich für einige Komponenten in unserer Anwendung entwickeln musste. Dinge, nach denen er fragte, machten für mich wenig Sinn, aber ich gab es ihm nur unter der Annahme, dass er es als Profi besser weiß. Kurz nachdem ich fertig war, entwickelte er ein Tool, das den Testaufwand um eine Größenordnung reduzierte . Er sagte, dass das meiste davon auf diesen kryptischen Anfragen beruhte, die ich implementiert habe.
Mücke
quelle