Unser Entwicklungsteam hat die GitFlow- Verzweigungsstrategie verwendet und es war großartig!
Kürzlich haben wir einige Tester eingestellt, um unsere Softwarequalität zu verbessern. Die Idee ist, dass jede Funktion von einem Tester getestet / überprüft werden sollte.
In der Vergangenheit haben Entwickler Features in separaten Feature-Zweigen bearbeitet und sie nach Abschluss wieder mit dem developZweig zusammengeführt. Der Entwickler wird seine Arbeit selbst in diesem featureZweig testen . Jetzt mit Testern beginnen wir, diese Frage zu stellen
Auf welchem Zweig sollte der Tester neue Funktionen testen?
Offensichtlich gibt es zwei Möglichkeiten:
- auf dem einzelnen Feature-Zweig
- auf dem
developAst
Testen auf Entwicklungszweig
Anfangs glaubten wir, dass dies der sichere Weg ist, weil:
- Die Funktion wird mit allen anderen Funktionen getestet, die
developseit Beginn der Entwicklung mit dem Zweig zusammengeführt wurden. - Konflikte können früher als später erkannt werden
- Dies erleichtert dem Tester die Arbeit, er hat immer nur mit einem Zweig (
develop) zu tun . Er muss den Entwickler nicht fragen, welcher Zweig für welches Feature bestimmt ist (Feature-Zweige sind persönliche Zweige, die ausschließlich und frei von relevanten Entwicklern verwaltet werden).
Die größten Probleme dabei sind:
Der
developZweig ist mit Fehlern verschmutzt.Wenn der Tester Fehler oder Konflikte findet, meldet er diese an den Entwickler zurück, der das Problem im Entwicklungszweig behebt (der Feature-Zweig wurde nach dem Zusammenführen abgebrochen). Danach sind möglicherweise weitere Korrekturen erforderlich. Durch das
developFestschreiben oder Zusammenführen mehrerer Teilsequenzen (wenn ein Zweig zum Beheben der Fehler erneut vom Zweig neu erstellt wird ) wird das Zurücksetzen des Features aus demdevelopZweig nach Möglichkeit sehr schwierig. Es gibt mehrere Funktionen, diedevelopzu unterschiedlichen Zeiten mit dem Zweig zusammengeführt und dort fixiert werden . Dies ist ein großes Problem, wenn wir eine Version mit nur einigen Funktionen in derdevelopBranche erstellen möchten
Testen auf Feature Branch
Also überlegten wir noch einmal und beschlossen, Features in den Feature-Zweigen zu testen. Bevor wir testen, führen wir die Änderungen vom developZweig zum Feature-Zweig zusammen (holen Sie den developZweig ein). Das ist gut:
- Sie testen die Funktion weiterhin mit anderen Funktionen im Mainstream
- Weiterentwicklungen (z. B. Fehlerbehebung, Konfliktlösung) verschmutzen den
developZweig nicht. - Sie können leicht entscheiden, die Funktion erst dann freizugeben, wenn sie vollständig getestet und genehmigt wurde.
Es gibt jedoch einige Nachteile
- Der Tester muss den Code zusammenführen und bei Konflikten (sehr wahrscheinlich) den Entwickler um Hilfe bitten. Unsere Tester sind auf Tests spezialisiert und können nicht codieren.
- Ein Feature kann getestet werden, ohne dass ein anderes neues Feature vorhanden ist. Beispiel: Merkmal A und B werden beide gleichzeitig getestet. Die beiden Merkmale sind sich nicht bewusst, da keines von beiden mit dem
developZweig zusammengeführt wurde. Dies bedeutet, dass Siedeveloperneut gegen den Zweig testen müssen, wenn beide Features ohnehin mit dem Entwicklungszweig zusammengeführt werden. Und Sie müssen daran denken, dies in Zukunft zu testen. - Wenn Feature A und B beide getestet und genehmigt werden, aber beim Zusammenführen ein Konflikt festgestellt wird, glauben beide Entwickler für beide Features, dass dies nicht seine eigene Schuld / Aufgabe ist, da sein Feature-Zweig nach dem Test verzweigt. Die Kommunikation ist mit einem zusätzlichen Aufwand verbunden, und manchmal ist jeder, der den Konflikt löst, frustriert.
Oben ist unsere Geschichte. Mit begrenzten Ressourcen möchte ich vermeiden, alles überall zu testen. Wir suchen immer noch nach einem besseren Weg, um damit umzugehen. Ich würde gerne hören, wie andere Teams mit solchen Situationen umgehen.
