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 develop
Zweig zusammengeführt. Der Entwickler wird seine Arbeit selbst in diesem feature
Zweig 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
develop
Ast
Testen auf Entwicklungszweig
Anfangs glaubten wir, dass dies der sichere Weg ist, weil:
- Die Funktion wird mit allen anderen Funktionen getestet, die
develop
seit 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
develop
Zweig 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
develop
Festschreiben 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 demdevelop
Zweig nach Möglichkeit sehr schwierig. Es gibt mehrere Funktionen, diedevelop
zu 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 derdevelop
Branche 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 develop
Zweig zum Feature-Zweig zusammen (holen Sie den develop
Zweig ein). Das ist gut:
- Sie testen die Funktion weiterhin mit anderen Funktionen im Mainstream
- Weiterentwicklungen (z. B. Fehlerbehebung, Konfliktlösung) verschmutzen den
develop
Zweig 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
develop
Zweig zusammengeführt wurde. Dies bedeutet, dass Siedevelop
erneut 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.