Agiler Entwicklungsbereitstellungsprozess. Wo testen QS- und Geschäftsinhaber?


9

Ich habe in letzter Zeit viel über verschiedene Bereitstellungsprozesse für Webanwendungen mit SVN oder GIT gelesen, um die derzeitige Bereitstellung dort, wo ich arbeite, neu zu gestalten.

Wie bei vielen Agile-Varianten wird davon ausgegangen, dass alles, was für Master oder Trunk bestimmt ist, produktionsbereit ist. Sowohl GitHub als auch Etsy, http://codeascraft.etsy.com/2010/05/20/quantum-of-deployment/, geben an, dass sie auf dieser Basis arbeiten (obwohl Etsy tatsächlich eine Staging-Umgebung hat).

Dieser Prozess setzt voraus, dass alle Komponententests und CI-Tests ausgeführt wurden. Sie führen die Tests lokal und auf CI aus und verpflichten sich dann zum Trunk. An diesem Punkt ist Ihr Code technisch einwandfrei.

Ihr Code ist möglicherweise technisch korrekt, aber Benutzer- / Funktionstests können weitere Fehler aufdecken, insbesondere beim Front-End-Testen.

Meine Frage ist dies. Wo testen QS- und Geschäftsinhaber die von Ihnen implementierten Funktionsänderungen? Auf Ihrem lokalen Entwicklungscomputer, bevor Sie sich zum Trunk verpflichten, oder auf einem QS / Staging-Computer?

Wenn Sie eine Staging-Maschine haben, auf der Trunk ausgeführt wird, und Sie davon ausgehen, dass der gesamte für Trunk festgeschriebene Code produktionsbereit ist ... eh .., dann ist der Code abgemeldet und kann sowohl technisch als auch geschäftlich in die Produktion aufgenommen werden Perspektive? Wenn Sie nur einen Staging-Computer haben, viele Entwickler, und dort soll der Code für die Qualitätssicherung bereitgestellt werden, wie können Sie dann vom Trunk aus bereitstellen, da viele Entwickleränderungen auf die Abmeldung warten können.

Es würde mich interessieren, wie andere dies angegangen sind.

Antworten:


6

Ob gut oder schlecht, ich sehe dies normalerweise dort, wo die Tests für die Zweigstellenbasis durchgeführt werden und die Geschäftsfreigabe der Prüfpunkt ist, um mit dem Bereitstellungshaupt zu verschmelzen.

Ich habe gesehen, dass dies sowohl bei der Entwicklung auf "Haupt" mit einem separaten Zweig "Bereitgestellt" als auch bei einem Zweig "Entwicklungs" Feature "mit einem Hauptzweig als" Bereitgestellt "durchgeführt wurde.

Der Workflow sieht ungefähr so ​​aus:

  • etwas codieren
  • Führen Sie lokale Tests durch
  • In der Arbeitsniederlassung einchecken
  • (optional) Build Server erstellt Ameisentests
  • QA / Business-Tests
  • Bugfixes (Schleife zurück nach oben)
  • Zusammenführen, um den Zweig bereitzustellen
  • bereitstellen

Einige Leute arbeiten in einem einzigen Zweig, aber wenn Sie manuelle Tests durchführen möchten, wird dies schwierig. Die meisten Leute, denen ich begegnet bin, arbeiten unter der Annahme, dass alles, was beim Festschreiben bereitgestellt werden kann und auch aus einem einzelnen Trunk heraus funktioniert, etwas Kleines tun oder eine RIESIGE Menge automatisierter Tests durchführen, ODER sie betrachten die "Bereitstellung" in dieser Konversation als Seien Sie ein Build für einen Testserver, und der Prozess der Qualitätssicherung zwischen dem Testserver und der Produktion wird separat behandelt.


Danke Bill. Wir arbeiten in einer Umgebung, in der Entwickler ständig separate Funktionen für die Site bereitstellen und bereitstellen. Wenn Sie an einem Feature-Zweig arbeiten, wo werden nach dem Einchecken in den Arbeitszweig die QA / Business-Tests durchgeführt? Wenn Sie nur einen QS-Computer haben, für den Entwickler Zweige festlegen, kann realistischerweise jeweils nur eine Funktion getestet werden, es sei denn, Sie haben möglicherweise einen Standort und eine separate Instanz des Anwendungsservers für jeden Entwickler auf dem QA-Computer eingerichtet Änderungen können isoliert getestet werden, bevor sie in den Trunk übernommen werden.
Bazza

Nach meiner Erfahrung haben wir normalerweise nicht für jeden Entwickler einen eigenen Feature-Zweig erstellt, sondern eher einen für jedes Team, und wir haben für jeden einen Qa-Host eingerichtet, selbst wenn es sich nur um eine zusätzliche Entwicklermaschine handelte.
Bill

Schätzen Sie die Kommentare. Hat mir einige Ideen gegeben.
Bazza

2

Wir haben automatisierte Abnahmetests für denselben Feature-Zweig durchgeführt. Wenn Sie einen Release-Kandidaten erstellen, enthält dieser die automatisierten Tests, die Sie ausgeführt haben, um festzustellen, ob die Funktion erfolgreich ist. Sie testen auch den Release-Kandidaten. Wenn alles vorbei ist, fördern Sie es, indem Sie es zum Master zusammenführen.

Mehr zu diesem Prozess hier:

https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

Schauen Sie sich auch die Kommentare an.

Hoffe das hilft,

Adam


@ Adam - Danke dafür und für den Link. Die Diskussion dort war interessant. Denkanstöße.
Bazza

0

In der Regel ist das Warten auf das Festschreiben, bevor der Code perfekt ist, die halbe Zeit, um die Vorteile des Versionskontrollsystems zurückzunehmen. (Ohne viel Ausarbeitung würde ich sagen, dass man, wenn man nicht mehrfach in VCS einchecken darf, keine Möglichkeit hat, meine eigene Arbeit zurückzusetzen!) Daher bitten wir die Leute immer, weiter einzuchecken (innerhalb ihrer Niederlassung für SVN) oder es können lokale Commits im Falle von GIT sein) so viel sie wollen. Je mehr desto besser.

Wenn jedoch der Punkt erreicht ist, an dem alles erledigt und getestet zu sein scheint , nennen wir es eine Freigabe, und dann wird es mit dem Trunk zusammengeführt. Im Wesentlichen kann die Qualitätssicherung den RC zertifizieren, indem sie einen neuen Check-out in der HEADFiliale durchführt. Wenn es sich um Okey handelt, wird derselbe mit dem Kofferraum zusammengeführt.

Im Wesentlichen verwenden wir das Konzept von Task-Zweigen oder privaten Zweigen, damit die Leute so oft einchecken können, wie sie brauchen. Gleichzeitig ist der Kofferraum relativ frei von fehlerhaften Check-Ins.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.