Wir sind ein großes Team (10-12 Entwickler und 4 Entwickler), das an mehreren Projekten mit demselben Git-Repository arbeitet. Es ist ein Spring-Boot-basierter Backend-Webservice. Wir suchen eine gute Git-Verzweigungs- und Bereitstellungsstrategie. Wir haben auch ein QA-Team, das sicherstellt, dass unsere Funktionen wie erwartet funktionieren (bis zu einem gewissen Grad fehlerfrei).
Nachdem ich einige Artikel gelesen hatte, hatte ich das Gefühl, dass das Gitflow- Modell für uns gut funktionieren würde. Hier kommt meine Frage.
Wo sollte unser QA-Team unsere Funktionen testen?
- sollten sie auf dem Feature-Zweig testen, wo sie Fehler auslösen, und der Entwickler wird dies beheben. Sobald der QA-Test bestanden ist, werden wir zusammengeführt, um zu entwickeln. und QA wird wieder den Integerationstest in der Entwicklungsbranche durchführen.
- sollten wir alle funktionen (nach unittests und grundlagentests vom entwickler) zusammenführen um branch zu entwickeln und den qa von dort testen zu lassen. Fehlerbehebungen und Tests werden auch in der Entwicklung durchgeführt.
Ich bin gespannt, welche Herangehensweise für andere gut funktioniert hat.
Gute Frage. Ich glaube nicht, dass es eine "offizielle" richtige Antwort darauf gibt. Es hängt davon ab, wie schnell Sie testen können.
Das wesentliche Problem besteht darin, dass bei jeder Zusammenführung, Kompilierung oder Bereitstellung möglicherweise ein Fehler auftritt. Je weiter oben die Kette ist, die Sie testen, desto eher wissen Sie über Fehler Bescheid, aber desto öfter müssen Sie erneut testen.
Um sicherzugehen, dass Sie die von den Kunden verwendete Software getestet haben, müssen Sie die Live-Bereitstellung wirklich testen, bevor der Datenverkehr des Kunden (unter der Annahme einer Web-App) über ein blau / grünes Bereitstellungsmuster zu diesen Servern geleitet wird.
Aber offensichtlich ist es etwas spät am Tag, als Sie den Code zum ersten Mal überhaupt überprüft haben!
Wenn Sie einen Release-Zweig in einer Qa-Umgebung testen, können Sie das Risiko eingehen und die Live-Tests nur auf Rauchtests reduzieren. und wende Bugfixes auf den Release-Zweig an. Sie können jedoch nicht beurteilen, ob ein Feature vollständig ist, bevor Sie ein Release erstellen
Wenn Sie die Entwicklung testen, erhalten Sie Zweige mit Mini-Bugfix-Funktionen. Features werden noch zusammengeführt, bevor sie bewertet werden. Außerdem können Features für die nächste Version mit dem Testen der aktuellen Version kollidieren.
Wenn Sie Feature-Zweige testen, benötigen Sie eine Million Umgebungen und müssen die Reihenfolge der Zusammenführungen und Testabmeldungen orchestrieren. plus viel erneutes Testen.
Aus meiner Erfahrung würde ich empfehlen:
Schnelltest des Feature-Zweigs auf dem Dev-Rechner. Stellen Sie einfach sicher, dass die Funktion vollständig ist, und die Tester / Entwickler sind sich einig, was die Anforderungen bedeuten.
Tägliche Tests / automatisierte Tests für den auf QA-Servern implementierten Dev Branch. Hiermit können Sie alle Funktionen zusammen testen und mitteilen, wann Sie zur Veröffentlichung bereit sind.
Wenn alle Funktionen vorhanden sind, der Test jedoch noch nicht abgeschlossen ist. zB der Sprint ist beendet. Erstellen Sie einen Release-Zweig und stellen Sie ihn in einer zweiten qa-Umgebung bereit. Auf diese Weise können Fehlerbehebungen / Tests in Version 1 gleichzeitig mit den Funktionen in Version 2 fortgesetzt werden.
(Scrum Devotees werden sagen, du solltest nur Fehlerbehebungen in Sprint 2 vornehmen, aber lass uns praktisch sein)
Rauchtests vor dem Umschalten auf Live-Grün / Blau-Einsatz. Diese sind sehr wichtig, da Sie Konfigurations- / Umgebungsfehler feststellen werden, nach denen während der Entwicklung niemand wirklich sucht.
quelle
Ich stimme Thomas Owens zu. Sie sollten wahrscheinlich zweimal testen. Einmal im Feature-Zweig, bevor er zusammengeführt wird, und einmal im Hauptzweig, bevor Sie ihn freigeben.
Tatsächlich liebe ich diesen Workflow so sehr, dass ich ein Tool namens Topico entwickelt habe , das automatisch verfügbare Versionen Ihrer App für jede Pull-Anfrage erstellt und ausführt , wobei jede eine eigene Test-URL hat. Auf diese Weise kann Ihr QA-Team Feature-Zweige isoliert testen, ohne dass eine dynamische Testumgebung auf dem eigenen Computer eingerichtet werden muss.
Dieser Ansatz bedeutet, dass nur Code, der den menschlichen Test bestanden hat, jemals Ihren Hauptzweig erreicht und somit seine Integrität beibehält.
Ich habe dies bei einigen Unternehmen eingeführt und es hat unseren Veröffentlichungszyklen sehr geholfen. Wir sind jetzt in der Lage, Veröffentlichungen genau zu planen, und wir können viel besser verstehen, was wahrscheinlich in die nächste Veröffentlichung kommt und was auf eine zukünftige Veröffentlichung warten muss. Es gibt dir einfach viel mehr Selbstvertrauen.
quelle