Ich bin Produktbesitzer in einem agilen Team. Wenn ich PO-Abnahmetests durchführe, mache ich mir normalerweise Notizen, um einige Randfälle auszuprobieren. Es ist nicht ungewöhnlich, dass ich etwas entdecke und es dann an die Entwickler zurückgebe. Ich werde von einem der Entwickler zurückgedrängt, wenn ich seine Geschichten ablehne. Er sagt, es sei unfair, da ich die Randfälle und die Reaktion des Programms in den Akzeptanzkriterien nicht spezifiziere, da er dazu neigt, nur das zu codieren, was ich in der Geschichte beschreibe. Ich habe ihn ermutigt, mich zu fragen, während er beim Codieren auf Edge-Cases stößt, aber er ist der Meinung, dass es nicht seine Aufgabe ist, die Edge-Cases zu durchdenken. Es ist meins und ich sollte neue Geschichten für den nächsten Sprint schreiben.
Zu meiner Verteidigung kenne ich sein Design für die Story erst, nachdem er es implementiert hat. Daher ist es schwierig, alle Möglichkeiten zu durchlaufen (wird sich die Konfiguration in einer DB- oder Eigenschaftendatei befinden?). Nehmen wir der Einfachheit halber an, wir haben eine Geschichte, um einer Taschenrechner-App eine Unterteilung hinzuzufügen. Wäre es in der idealen SCRUM-Welt meine Aufgabe, den Akzeptanzkriterien ein "Handle Divide by Zero-Szenario" hinzuzufügen, oder sollte er diese Fälle während der Entwicklung durcharbeiten, damit die App nicht am 5/0 implodiert? Um klar zu sein, in diesem Fall würde ich nicht akzeptieren, wenn die App am 05.0. Schwer abstürzt, aber ich würde bestehen, wenn sie protokolliert, DIV0 druckt oder auf andere Weise, um den Fehler zu behandeln ... nur solange dies nicht der Fall ist nicht abstürzen.
Antworten:
Ich denke, die Antwort ist, dass Sie beide über Ihre eigenen Randfälle nachdenken sollten. Er als Entwickler sollte datenspezifische Randfälle behandeln, wie z. B. den Absturz der App aufgrund einer bestimmten Benutzereingabe. 5/0 fällt sicherlich in diesen Teil des Spektrums. Der Entwickler sollte nach Ihnen fragen, was Ihrer Meinung nach eine angemessene Fehlermeldung wäre, wenn die im Rahmen der Benutzerinteraktion eingegebene Eingabe zu etwas Ungültigem führt.
Ihr Teil des Spektrums ist die geschäftliche Seite der Dinge. Wie soll sich der Rechner verhalten, wenn das Benutzerkonto die Schaltfläche Teilen nicht verwenden darf? Wie soll es sich verhalten, wenn das Konto die Mod-Operation verwenden darf, aber keinen Zugriff auf die Teilungsfunktion hat?
Die wichtige Botschaft, die Sie meiner Meinung nach vermitteln müssen und die von allen Teammitgliedern akzeptiert wird, ist, dass Sie alle im selben Team sind. Wenn das Produkt nicht vollständig ist, ist das Produkt nicht vollständig und das Team ist schuld, kein bestimmtes Mitglied.
quelle
Das Team muss zusammenarbeiten, anstatt die Einstellung / das Mantra "Nicht mein Job, nicht meine Verantwortung" zu haben.
Akzeptanzkriterien sind:
In der Regel beantwortet die Geschäftsakzeptanz die Frage:
Die Funktion hat eine Reihe von Anforderungen, die geschäftsorientiert sind. Wenn ich beispielsweise auf diese Schaltfläche drücke, erwarte ich, dass diese Aktion ausgeführt wird. Es werden die erwarteten Geschäftsszenarien und das erwartete Verhalten aufgelistet, jedoch nicht alle möglichen Fälle.
Es wird erwartet, dass die Geschäftsanforderungen vor einer Iteration definiert werden, damit die Qualitätssicherung alle technischen Anforderungen für nicht geschäftliche Anforderungen entwickeln kann. Die Qualitätssicherung sollte nach Bedarf sowohl destruktive als auch Randfälle entwickeln.
Beide Anforderungssätze sollten vor Beginn einer Story-Arbeit überprüft werden, damit eine formale Schätzung und Verpflichtung für die Arbeitseinheit erfolgen kann. Sobald dies erledigt ist, können die Features / Storys bearbeitet werden. An diesem Punkt ist jedem klar, was sowohl aus geschäftlicher als auch aus technischer Sicht zu liefern ist.
Die Geschichte wird endgültig akzeptiert, sobald die Mitglieder des Geschäfts- und Qualitätssicherungsteams die Geschichte abzeichnen. Dies sollte während der Iteration sowohl für die Akzeptanz des Geschäfts als auch für die Akzeptanz der Qualitätssicherung geschehen. Dies ist die Definition von done (DoD), die signalisiert, dass zusätzliche Story-Arbeiten gestartet werden können.
Alle neuen Erkenntnisse können als Fehler oder zusätzliche Story-Spikes protokolliert werden. In einer perfekten Welt würde dies niemals passieren, aber in Wirklichkeit gibt es normalerweise eine gewisse "Entdeckung", die bei der Arbeit an einem Feature / einer Story auftritt. Das ist natürlich.
Das Team sollte zusammenarbeiten (Unternehmen, Qualitätssicherung, Entwickler), um alle nebulösen Entdeckungsanforderungen zu ermitteln. Wenn dies agil ist, sollten alle am selben Tisch sitzen, um die Kommunikation und die schnelle Lösung eventuell auftretender Fragen zu fördern. Es sollte ungefähr so aussehen:
QA:
DEV:
GESCHÄFT:
DEV:
Oder wenn es viel Arbeit ist, wird dem Rückstand eine neue Geschichte hinzugefügt. Das Team kann die ursprüngliche Story weiterhin akzeptieren, da sie alle ursprünglichen Anforderungen erfüllt, und die Spike-Story in der nächsten Iteration aufgreifen.
quelle
Das Schreiben von Software, die sich angesichts falscher oder mehrdeutiger Eingaben robust verhält, ist ein wesentlicher Bestandteil der Arbeit eines Softwareentwicklers.
Wenn Ihre Entwickler dies nicht so sehen, fügen Sie zusätzliche nicht funktionale Anforderungen in die Anforderungsspezifikation ein, in der diese Anforderung explizit angegeben ist, und geben Sie Ihren Entwicklern ein Beispiel für Ihren Testprozess, damit sie diesen Prozess selbst anwenden können, bevor Sie ihr endgültiges Dokument einreichen Code zur Überprüfung.
Abnahmetests sollten ohnehin ein wesentlicher Bestandteil jedes Anforderungsdokuments sein. Wenn eine Anforderung nicht auch ihre Kriterien für die Annahme angibt, ist sie nicht wirklich eine Anforderung. Es ist ein Wunsch.
quelle
Was hier passiert ist, ist, dass Sie Wert entdeckt haben . Der Eingabewert wurde nicht berücksichtigt, als die Story (und die Akzeptanzkriterien) geschrieben wurden oder als der Code geschrieben wurde. Wenn es nicht Teil der Akzeptanzkriterien ist, haben Sie nicht wirklich eine Grundlage, um die Geschichte abzulehnen.
Was wir in meinem Team tun würden, ist:
Der Vorteil hierbei ist, dass Sie überlegen müssen, ob die Behebung dieses Fehlers das nächstwichtigste ist. Es kann wichtig genug sein oder nicht, um es zu beheben, aber es ist wichtig, dass sein Wert berücksichtigt wird.
Natürlich müssen Sie noch einen Weg finden, um Entwickler (und sich selbst) zu ermutigen, diese Randfälle im Voraus zu untersuchen. Wenn Ihr Entwicklerteam keine Zeit damit verbringt, Geschichten aufzuschlüsseln, ermutigen Sie es, eine detaillierte Planungssitzung abzuhalten, bevor Sie mit der Arbeit beginnen.
quelle
Einige Beobachtungen:
Ich kenne Ihre Arbeitskultur oder Ihren Prozess nicht, aber für mich ist es ein schwerer Schritt, eine Geschichte abzulehnen. Wenn ich der Entwickler wäre, würde ich auch einen Push-Back generieren, da es sich um eine aufgezeichnete Aktion handelt, die sich schlecht auf mich und das Team auswirkt.
Es ist unfair von ihm zu erwarten, dass Sie alle Randfälle kennen. Gleichzeitig ist es unfair, dass Sie das von ihm erwarten. Jede Änderung birgt Risiken, und wenn Probleme entdeckt werden, müssen Sie als Team zusammenarbeiten, um sie zu beheben.
Sie sollten das Design nicht kennen müssen. Es kann hilfreich sein, das Design zu kennen, um erste fundierte Vermutungen darüber anzustellen, welche Storys für das Backlog-Management einfacher oder schwieriger sind. Vermeiden Sie es jedoch, den Entwickler in Ihr Design einzuschließen, wenn Sie Geschichten schreiben. Es macht den ganzen Spaß, wenn Sie einfach eine sprachaktivierte Tastatur für die Bestellung sind.
Es hört sich so an, als ob ihr an Prozessverbesserungen arbeiten und Teambuilding betreiben sollt. Einige Dinge, die ich für den Prozess vorschlagen könnte:
quelle
Die Anforderungen sollten klar und präzise sein. Wenn dies nicht der Fall ist, passiert genau das, was Ihnen passiert ist. Es ist Ihre Schuld, und das Schlimmste, was Sie tun können, wenn Sie Anforderungen festlegen, ist, Dinge anzunehmen.
Sie konkretes Beispiel über die Division durch Null. Wenn Sie nicht angegeben haben, dass Sie den Fehler protokollieren möchten, beschweren Sie sich nicht, wenn der Entwickler 100 als Ergebnis druckt.
Aber in solchen Fällen würde ich einfach fehlende Lücken füllen und sie an den Entwickler weitergeben. Schließlich treten Fehler in den Anforderungen auf.
quelle