Wenn Sie das Scrum-Framework verwenden, umfasst ein Sprint-Zyklus Entwicklung und Qualitätssicherung. Am Ende des Sprints werden die bearbeiteten und getesteten Aufgaben präsentiert und freigegeben.
Normalerweise gibt es für ein Team von 3 bis 4 Entwicklern 1 QA-Ressource. Was wird von den Entwicklern erwartet, wenn QA stattfindet? Da die Anzahl der Entwickler viel höher ist als die Anzahl der QA-Tester, werden Fehlerkorrekturen sehr schnell erledigt und die Entwickler haben gegen Ende des Sprints nichts zu tun.
Was wird von den Entwicklern während dieser QA-Tests erwartet, während sie Scrum folgen?
Ihre Frage enthält einige falsche Annahmen über die lineare Natur des Testens innerhalb eines agilen Prozesses. Ein ausgereiftes agiles Team mit funktionsübergreifenden Fähigkeiten behandelt Entwicklung und Testen als miteinander verflochtene Aktivitäten und nicht als aufeinander folgende.
Sie sollten danach streben, Entwicklung und Tests zu integrieren, sodass es sich nicht um grundlegend getrennte Arbeitsabläufe handelt. Andernfalls müssen Sie die mit dem derzeit implementierten Workflow verbundenen Risiken und Prozessdefizite formal akzeptieren.
Typischerweise gibt es für ein Team von 3 bis 4 Entwicklern 1 QA-Ressource. Was wird von den Entwicklern erwartet, wenn QA stattfindet. Da die Anzahl der Entwickler viel größer ist als die QA, werden Fehlerkorrekturen sehr schnell erledigt und die Entwickler haben gegen Ende des Sprints nichts zu tun.
Sie machen kein Scrum, Sie machen einen Wasserfall. Die Aktivitäten sollten funktionsübergreifend sein und einen facettenreichen Teamansatz für alle Aufgaben nutzen.
Beispielsweise sollten Tester und Entwickler während eines Sprints im Gleichschritt arbeiten. Tester sollten früh und oft einbezogen werden, indem sie den Entwicklern helfen, testbare Funktionen zu entwerfen, indem sie von Anfang an an Testkriterien arbeiten, bevor eine einzige Codezeile geschrieben wird, und dazu beitragen, dass Tests zuerst geschrieben werden.
Die QA-Leute sollten jeden Tag kontinuierliche Integration durchführen, damit es eine enge (und idealerweise sofortige) Feedback-Schleife zwischen Entwicklung und Test gibt. Durch die Zusammenarbeit mit den Entwicklern wird QA nicht als separate Folgeaktivität behandelt, sondern zu einem wesentlichen Bestandteil der Design- und Entwicklungszyklen und nicht zu einer externen Angelegenheit.
Was wird von den Entwicklern erwartet, wenn QA stattfindet. Da die Anzahl der Entwickler viel größer ist als die QA, werden Fehlerkorrekturen sehr schnell erledigt und die Entwickler haben gegen Ende des Sprints nichts zu tun.
So wie von Testern erwartet wird, dass sie vom ersten Tag an mit den Entwicklern involviert sind, wird von Entwicklern erwartet, dass sie während der Testaufgaben mit der QA zusammenarbeiten. Anstatt den Testern Code über die Mauer zu werfen, sollten Entwickler und Tester am Testprozess zusammenarbeiten, damit Fehler behoben werden, sobald sie entdeckt werden.
Stellen Sie sich ein Pair-Programming-Szenario vor, in dem ein Tester und ein Entwickler gemeinsam an einer Testsuite arbeiten. Anstatt dass ein Entwickler eine Wand aus Code auf dem Tester ablegt und dann auf Ergebnisse wartet, könnten die beiden bei Tests und Refactorings zusammenarbeiten . Zum Beispiel:
Wenn Ihr Team aus irgendeinem Grund nicht kooperativ über testbezogene Aktivitäten schwärmen kann oder will, muss der Prozess diese Kosten für das Team sichtbar machen . Wenn Entwickler und QA darauf bestehen, mit Aufgaben Volleyball zu spielen, indem sie Dinge über ein Netz hin und her werfen, anstatt sich zu integrieren, um die Arbeit gemeinsam zu erledigen, dann machen Sie diesen (möglicherweise dysfunktionalen) Prozess einfach vollständig sichtbar.
Haben Tester in der ersten Phase eines Sprints wirklich nichts zu tun? Nein, aber wenn das Ihr Prozess ist, erkennen Sie an, dass Tester, die einen halben Sprint lang im Team bleiben, einer der Kosten für die Geschäftstätigkeit sind. Wenn Entwickler in der zweiten Hälfte eines Sprints wirklich überhaupt nichts zum Testprozess beitragen können, dann erkennen Sie ausdrücklich an, dass Ihre Entwickler dafür bezahlt werden, 50 % der Zeit auf Facebook abzuhängen, und können dies akzeptieren Kosten für die Geschäftsabwicklung innerhalb des von Ihnen gewählten Prozesses.
Gesunde Teams behandeln alle Mitglieder als funktionsübergreifende Ressourcen, die in jedem Schritt des Prozesses einen Mehrwert bieten. Selbst wenn Sie das Testen nicht vollständig als erstklassige Aktivität in Ihre Sprints integrieren möchten, können sich Tester und Entwickler bei aktuellen Aufgaben gegenseitig unterstützen. Beispielsweise kann ein Tester während der Entwicklung zusammenarbeiten, um Testhalterungen zu entwerfen, während der Entwickler das Feature schreibt; Während des Testens kann der Entwickler dann eine Codeabdeckungsanalyse durchführen oder daran arbeiten, Testergebnisse in Dokumentation umzuwandeln, während der Tester die Tests durchführt.
Wenn das Team auf diese Weise nicht kooperativ arbeiten kann oder will, kann die Organisation einfach die Tatsache akzeptieren, dass einige Rollen innerhalb des Teams an bestimmten Stellen im Prozess untätig sind. Obwohl es nicht ideal ist, kann es politisch notwendig sein, einfach anzuerkennen, dass 50 % Ihrer Rollen zu einem bestimmten Zeitpunkt untätig sind und dass dies akzeptable Kosten für die Geschäftstätigkeit innerhalb Ihres aktuellen Entwicklungsprozesses sind. Ich persönlich halte dies zwar für eine suboptimale Option, aber es ist immer noch besser, als dem Trugschluss der 100%igen Auslastung zum Opfer zu fallen, der versucht, alle beschäftigt zu halten, selbst wenn dies verschwenderisch ist und keinen Wert generiert ... und manchmal sogar aktiv reduziert Produktivität.
Sie könnten eine Reihe von Dingen tun. Was sie tun sollten, hängt von der Scrum/XP-Reife Ihres Unternehmens ab, aber hier sind einige allgemeine Punkte:
QA-Arbeit – Ja, Entwickler können QA, ob es nun darum geht, neue automatisierte Tests zu schreiben, die bestehende Testabdeckung zu erweitern oder die Testkomplexität zu reduzieren, manuelle Tests oder Leistungs-/Lasttests durchzuführen, Entwickler können und sollten QA durchführen. Das gesamte Team besitzt die Qualität des Produkts. Besonders disziplinierte Entwickler werden TDD verwenden, sodass die meisten Tests durchgeführt werden, bevor die Story an die Qualitätssicherung geht. Scrum-Teams mit 0 QA-Ressourcen sind weit verbreitet.
Tech-Schulden/Refactoring/Fehlerbehebung
Spikes für größere funktionale Stories kommen im nächsten Sprint
Erlernen neuer Fähigkeiten sowohl im Soft- als auch im technischen Bereich. Das Ende eines Sprints ist (wie jeder andere) eine großartige Zeit für kontinuierliche Verbesserungen. Haben Sie einen Entwickler, der denkt, es sei nicht seine Aufgabe zu testen. Koordinieren Sie ihn in der zweiten Hälfte des Sprints mit einer QA-Ressource.
Pflege des Backlogs/Arbeiten mit PO, um technische Überlegungen anzustellen.
Lernen, Geschichten/Aufgaben zu schreiben und zu pflegen, die klein sind, sodass nicht alle Tests in der zweiten Hälfte der Iteration stattfinden.
Verbesserung von Werkzeugen oder Prozessen rund um die kontinuierliche Integration.
Fazit: Wenn Ihre Entwickler in der zweiten Hälfte Ihrer Iteration untätig sind, während die QA Tests durchführt, haben Sie einige Möglichkeiten, die Vorteile echter Scrum/XP-Praktiken zu nutzen, anstatt das Mini-Wasserfall-Scrum zu leben.
"Normalerweise gibt es für ein Team von 3 bis 4 Entwicklern 1 QA-Ressource"
Da ist dein Problem. Es gibt drei Rollen in Scrum , Product Owner, Scrum Master und Mitglied des Entwicklungsteams. Ihr Entwicklungsteam soll ein multifunktionales Team sein, das auf die gleichen Ziele hinarbeitet. Es ist in Ordnung, Leute mit unterschiedlichen Fähigkeiten zu haben (in der Qualitätssicherung, in der Entwicklung), aber wenn Sie Teammitglieder haben, die nur sehr spezifische Dinge tun können (z. B. Tester, die nur manuelle Tests durchführen können), ist dies ein Problem, das Sie beheben müssen. Testautomatisierung ist eine nützliche Gemeinsamkeit zwischen Entwicklern und Testern.
Es hört sich so an, als ob Sie nicht wirklich Scrum praktizieren, sondern „Timeboxed Waterfall“. Mit diesem Ansatz ist jeder Sprint ein eigenes Mini-Wasserfall-Projekt, mit der Entwicklung am Anfang und dem Testen am Ende. Wie Sie festgestellt haben, führt dies zu Zeitverschwendung, da Tester zu Beginn des Sprints wenig zu tun haben und Entwickler am Ende des Sprints wenig zu tun haben.
Stattdessen sollte das Team daran arbeiten, sicherzustellen, dass jeder so voll wie möglich beschäftigt ist ( Achtung, nicht zu 100 % ausgelastet, siehe Kommentare unten). Während der täglichen Standups und bei der Sprint-Planung sollte Ihr Team versuchen, herauszufinden, wie es den Testern sofort etwas liefern kann, und dies dann während des Sprints wiederholen, damit die Tester die Funktionalität in Teilen testen können, während sie geliefert wird.
Ein häufiger Teil des Standups könnte sein, dass ein Tester sagt, dass er später an diesem Tag nichts zu tun hat. Vielleicht bietet ein Entwickler dann an, ein paar Fehler zu beheben, von denen er weiß, dass sie an diesem Morgen geschlossen werden können, anstatt etwas Größeres zu beginnen. Das füllt dann eine Lücke für den Tester, während ein anderer Entwickler eine Arbeit fertigstellt, damit er morgen mit dem Testen beginnen kann. Niemand bricht sich den Magen, aber Sie haben einen höheren Arbeitsdurchsatz.
Es ist ein etwas ungewöhnliches Setup, das Sie dort haben, aber was Entwickler tun können, ist, sich auf den nächsten Sprint vorzubereiten, technische Herausforderungen mit den neuen User Stories zu lösen oder die vorhandene Codebasis umzugestalten.
Die zweite Option, das „Scrum Book“, würde vorschlagen, dass die Entwickler auch Tests durchführen sollen (Cross-Functional-Team-Idiom), natürlich kann ein Entwickler nicht testen, was er/sie implementiert hat.
Dritte Option: Vielleicht möchten Sie darüber nachdenken, zwei Sprints parallel, aber verschoben zu haben. Eine für die QA und eine für die Entwicklung. Die QA würde einen halben Zyklus später als die Entwicklung beginnen. Mit diesem Setup arbeiten Entwickler und QA, ohne lange Zeit untätig zu sein. Stellen Sie nur sicher, dass Sie in jedem Sprint Kapazität für Fehlerbehebungen haben, da sonst die Qualität des Codes abnimmt.
Vierte Option: Sie können einen weiteren QA beauftragen, um das Testen zu beschleunigen.
Der Entwickler kann daran arbeiten, sowohl den Prozess als auch das Team durch mehrere Maßnahmen zu verbessern, die für das Ende des Sprints erforderlich sind, wie zum Beispiel:
Verweise
Ich bin Entwickler.
Lassen Sie mich Ihnen sagen, was Sie falsch machen ...
Gar nichts! So ist Scrum aufgebaut und kein System ist perfekt. Kein Wunder, dass Sie gerade meine Antwort lesen, denn es handelt sich um ein universelles Scrum-Problem.
Folgendes sollten Sie nicht tun:
Hier ist, was ich am besten fand:
Wirklich, Nr. 1 (WORK AHEAD) hat mir am besten gedient, denn Nr. 2, Nr. 3 und Nr. 4 sollten während des gesamten Sprints durchgeführt werden, nicht nur, wenn der Code von der QA getestet wird!!!
Auch #5 versteht sich von selbst.
Also, ja ... Arbeiten Sie voraus!
Wenn ich meine Stories im aktuellen Sprint fertig habe, frage ich, mit welcher Story ich im nächsten Sprint beginnen soll.
Ich beginne mit einer Story aus dem folgenden Sprint, und weil ich früh angefangen habe, bevor der Sprint beginnt, beende ich meine nächsten Sprint-Storys (wenn auch nicht alle auf einmal) kurz nach Beginn des nächsten Sprints, Mitte des nächsten Sprints oder einige wenige Tage vor dem Ende (nicht ein oder zwei Tage vor dem Sprint Review).
Dadurch hat die QA genügend Zeit, meinen Code zu testen, und ich habe genug Zeit, um auf ihr Feedback zu reagieren. Außerdem bietet das Vorausarbeiten während des gesamten Sprints Testaufgaben für die QA, nicht nur in den letzten paar Tagen! Dadurch wird die QA-Arbeitslast ausgeglichen und nicht alles gegen Ende des Sprints.
Auch hier lautet die Antwort: WORK AHEAD!
Dadurch wird die Bereitstellung von Funktionen während des gesamten Sprintzyklus sichergestellt, wodurch die Testlast während des gesamten Sprints ausgeglichen wird!
Hier ist ein guter Artikel, den ich über meine Erfahrungen mit dem Thema geschrieben habe: Ich habe das Engpassproblem beim Agile-Testen gelöst!
https://medium.com/@salibsamer/i-solved-scrum-sprint-end-testing-bottleneck-problem-bfd6222284a1
Judith