Was standards tut Ihre team durchsetzen, die für eine major-version-code-Bereitstellung?

StackOverflow https://stackoverflow.com/questions/700833

  •  22-08-2019
  •  | 
  •  

Frage

Ich bin neugierig, welche Art von standards, die anderen teams machen sicher, dass ist in Ort, vor-code-Schiffe (oder setzt) aus der Tür in den großen Versionen.

Ich bin nicht auf der Suche nach bestimmten Antworten zu jedem, aber hier ist eine Idee von, was ich bin versuchen, um eine Idee zu bekommen.

  • Für server-basierte apps, tun Sie gewährleisten die Kontrolle ist in Ort?Bis zu welchem Grad...nur, dass es antwortet auf ping, dass es trifft alle Ihre Abhängigkeiten zu einem bestimmten Zeitpunkt, dass die Logik, dass die app tatsächlich services ist der sound (z.B. ein Dienst, berechnet 2+2 tatsächlich gibt "4")
  • Benötigen Sie automatisierte build-scripts vor der code freigegeben ist?Bedeutung, alle dev kann zu Fuss auf einem neuen Feld, reißen etwas aus der Quellcodeverwaltung, und starten Sie die Entwicklung?Gegeben, die Dinge wie ein Betriebssystem und IDE, natürlich.
  • Wie über automatisierte deployment-scripts für server-basierte apps?
  • Was Niveau der Unterlagen benötigen Sie für ein Projekt gemacht?"
  • Stellen Sie verdammt sicher, dass Sie haben eine vollwertige backup-plan für alle wichtigen Komponenten des Systems, wenn es ist server-basiert?
  • Tun Sie durchzusetzen code Qualität standards?Denken Sie StyleCop für .NET oder die zyklomatische Komplexität Bewertungen.
  • Unit-Tests?Integration-tests?Performance load testing?
  • Sie haben standards für die Art Ihrer Anwendung ist die Fehlerprotokollierung wird behandelt?Wie über Fehler Meldung?

Wieder, nicht auf der Suche nach einem line-by-line punchlist Antworten auf alles über, unbedingt.In kurzen, was nicht-kodierende Elemente, muss ein code-release abgeschlossen haben, bevor es offiziell als "fertig" für Ihr team?

War es hilfreich?

Lösung

Die minimun:

  1. unit-tests arbeiten
  2. integration tests arbeiten
  3. Deployment auf test-Stadium ok
  4. manuelle kurz-check auf die test-Bühne

Besser:

  1. unit-tests arbeiten
  2. checkstyle ok
  3. integration tests arbeiten
  4. Metriken wie jmeter und test-coverage-bestanden
  5. Deployment auf test-Stadium ok
  6. einige manuelle tests in test Phase

schließlich bereitstellen, die auf die Produktion der Bühne

Alle unit-und integration-tests automatisch arbeiten, am besten auf einem continuous integration-server wie CruiseControl erfolgt durch ant oder maven.Bei der Entwicklung von webservices, die Prüfung mit soapui funktioniert einwandfrei.

Wenn eine Datenbank verwendet, die automatische Aktualisierung ist fertig (mit liquibase für Beispiel), die vor der Bereitstellung.Wenn externe Dienstleistungen verwendet werden, addidional Konfiguration tests sind erforderlich, um sicherzustellen, URLs ok (head-Anforderung von Anwendungs -, Datenbank-connect, wsdl-get, ...).Bei der Entwicklung webpps, eine HTML Validierung auf einigen Seiten wird nützlich sein.Eine manuelle überprüfung des Layouts (verwenden Sie browsershots für Beispiel) wäre nützlich.

(Alle Beispiel-links für Java-Entwicklung)

Und last (but not least):sind alle Akzeptanz-tests noch vorbei?Ist das Produkt, was der Besitzer will?Machen Sie eine live-review mit ihm auf dem test-system bevor wir weiter!

Andere Tipps

Ich am meisten zu tun, web-Entwicklung, so meine Einzelteile kann sich von Ihrem unterscheiden.Nur aus der Spitze von meinem Kopf...

  • Sicherstellen, dass alle web-services up-to-date
  • Sicherstellen, dass alle Datenbank-Skripte/ - änderungen/ - Migrationen sind bereits im Einsatz, um den Produktions-server
  • Min alle js-und css-Dateien.
  • Stellen Sie sicher, dass alle unit/functional/integration/Selenium-tests sind vorbei (Wir Ziel für 95%+ der Testabdeckung während wir uns entwickeln, so sind diese in der Regel ziemlich genau in der Bestimmung eines Problems)

Es gibt noch mehr, ich weiß es, aber ich kann mir nicht denken, das Recht jetzt.

Jedes Projekt ist anders, aber als Faustregel gilt hier sind die wichtigsten Dinge, die ich versuche zu tun haben, vor zu lassen-code raus in die wildnis.

In keiner bestimmten Reihenfolge:

1) Eine version Identifizierung in den Ort, wo es gefunden werden kann, die von einem Benutzer später, diese muss eindeutig sein, um diese freizugeben.(sehr in der Regel eine "Versionsnummer" assoziiert, die auf die ausschüttbaren, die Bibliotheken und ausführbaren, oder den Benutzer sichtbar, von einer "über" - dialog.Könnte eine Reihe an bekannten registrieren oder offset in der firmware)

2) Eine Momentaufnahme der exakten code zu produzieren, der release.(eine Bezeichnung oder ein Zweig des release-Standes in das SCM-system ist gut für diese)

3) Alle die notwendigen Werkzeuge, um erstellen Sie die Quelle muss notiert und archiviert (Quelle von Schritt 2 wird von begrenztem nutzen, ohne diese)

4) das Archiv der aktuellen Version (eine Kopie der genauen installer veröffentlicht, wer weiß, in 7 Jahren Ihre Werkzeuge können nicht in der Lage sein, es zu bauen, aber jetzt haben Sie wenigstens die Quelle code und eine installierbare an Ihrer Seite für die Untersuchung werden).

5) Eine Reihe von dokumentierten änderungen zwischen dieser version und der vorherigen aka Release Notes (ich benutze gerne den Stil von Anhängen an die Liste, so dass alle änderungen an einem Ort verfügbar sind, die für einen Benutzer).

6) release Candidate testen-Zyklus abgeschlossen.Verwendung der ausschüttungsfähigen erstellt, laden und testen mit vollem/test plan geprüft, um sicher zu sein, die Kernfunktionen in Betrieb ist, werden alle neuen Funktionen sind vorhanden und funktionieren wie beabsichtigt.

7) Defekt-tracking-zeigt alle offenen posten gekennzeichnet sind, wie a) Feste b) nicht in einem Mangel c) latente.

Sie können streuen in viele andere Schritte, die je nach Domäne oder Entwicklung Stil, aber ich würde den Mitgliedstaaten, dass die meisten software "sollte" durchführen der oben genannten Schritte, die jede und jeder release.YMMV.

Spaß haben, die Erstürmung der Burg.

  • Codestyle (automatisiert)
  • Automatisierte Tests (Unit- & Integrationtests)
  • Manuelle Tests (einschließlich test-und beta-Phasen)
  • Whitebox-penetration-Test-tool (automated)
  • Blackbox-Penetrationstest-tool (automated)
  • Handbuch Exception/Logging-monitoring auf der test - /beta-Versionen vor der Einführung
  • Fähigkeit zur Wiederherstellung der vorherigen version zu jeder Zeit
  • code-review & "illegale Eincheckvorgänge'

Für web / interne apps, die eine Sache neben der anderen Vorschläge.

Stellen Sie sicher, dass die Einbeziehung der ops - /deployment-team, so dass Sie nicht liefern software, die erfordert mehrere Server verwenden, dann haben Sie (nicht davon ausgehen, die Menschen drängen, die Anforderungen bereits haben).

  • Überprüfen Sie die Checkliste:überprüfen Sie, dass alle neuen Funktionen, change requests und bug-fixes geplant für die version abgeschlossen wurden.
  • Bauen (bauen in die Maschine) kompiliert ohne Warnung noch Fehler im Release-Modus.
  • Alle automatisierten Unit-Tests ohne Fehler ausgeführt.
  • Alle Nachrichten und Bilder wurden genehmigt durch das Produkt-team.
  • Performance-checks sind nicht schlimmer als frühere version.
  • Die volle (manuelle) test plan wurde überprüft, indem die test-Teams ohne Fehler.
    • Die Anwendung ist getestet in vielen möglichen Szenarien (verschiedene Betriebssysteme, Datenbank-engines, Konfigurationen und Anwendungen von Dritten).
    • Alle Funktionen der Anwendung getestet werden:viele Male, die uns passiert, dass eine änderung in einer Eigenschaft brach ein anderes, ein Gedanke nicht in Zusammenhang stehen, shit happens, wir haben also ein Minimum zu reduzieren.
    • Der Installation oder-Bereitstellung funktioniert in allen Szenarien zu
    • Die Einrichtung ist in der Lage zu aktualisieren früheren Versionen

Wir haben einen major-release vor kurzem, das ist also noch ziemlich frisch in meinem Gedächtnis.Wir machen eine Windows-Anwendung mit grafischer Benutzeroberfläche, für die wir release eine binäre ausführbare Datei, also meine Liste ist notwendigerweise zu sein, wesentlich Verschieden von der, die für eine web-only-release.

  1. Release-Kandidaten gehen an das testing-team.Sie brauchen mindestens ein paar Tage mit ihm zu spielen.Wenn Sie irgendwelche bugs finden, die wir als show-Stopper, release abgebrochen.Dies setzt Voraus, Sie haben eine Test-team.Wir nur klar, ein release-Kandidat, wenn Sie mindestens eine Woche vergangen ist, seit seiner build-Datum.

  2. Alle automatisierten Tests, um zu arbeiten und pass.Automatisiertes testen ist als eine Ergänzung zu den live-Tester.

  3. Alle bugs, die markiert als "Blocker" müssen gelöst sein, für die Letzte build.

  4. Publicity material hat, um bereit zu sein (in unserem Fall, eine web-Seite aktualisieren und eine E-Mail-newsletter).Händler sind alarmiert, dass eine neue Version kommt mehrere Wochen im Voraus, so dass Sie können bereiten Sie Ihr material als gut.Meistens ist ein Programmierer nicht beunruhigt, aber tun wir überprüfen marketing-Ansprüche für die Richtigkeit.

  5. Lizenzierung aktualisiert werden, was den Kopierschutz, die wir verwenden.Unsere beta-Versionen und release-Versionen verwenden verschiedene lizenzierungsmodelle an, und diese Veränderung erfordert Programmieraufwand.

  6. Der installer und der Lizenzvereinbarung, die aktualisiert werden müssen.Da die beta-Versionen haben ein Installationsprogramm, das ist in der Regel nur einen text zu ändern, aber es fällt noch der Programmierer eigentlich update das install-script.

  7. Alle Verweise auf die beta-version entfernt werden müssen, werden von der Anwendung selbst.Verpassten wir ein paar von diesen, peinlich.

  8. Hilfedateien und Handbücher gebracht werden musste, um ganz up-to-date und Korrektur zu Lesen, da Sie Teil des release-Paket.

  9. Wenn es bugs, die konnte nicht in der Zeit behoben werden, würden wir zumindest versuchen, den Schaden zu mildern-zum Beispiel erkennen, dass eine solche-und-solche Fehler wurde Auftritt, und bricht den Vorgang mit einer Apologie der Fehlermeldung.Diese trägt enorm dazu bei, sich auf wahrgenommene Stabilität des Produkts.

Weit und Weg, die Schwierigkeiten, die eine major release wurden keine Programmierung Probleme, Sie waren Verwaltungs - /marketing-Probleme.Viele dieser Dinge benötigt Programmierer Aufmerksamkeit -- Installateure helfen mit, das Korrekturlesen, die die feature-Liste machen Sie sicher nichts davon war Unsinn, Korrekturlesen, technische Abschnitte des Handbuchs, die Aktualisierung licensing, etc.Der wichtigste technische Unterschied war die Umstellung von der bug-fixing bug-Milderung.

  1. keine sichtbaren Fehler?ok
  2. unit-test ab?ok (einige ignoriert) ha gut ok
  3. setup-ya sicher.ok
  4. Fehler-Protokollierung ?natürlich !:-) wir brauchen diese !um den Fehler zu beheben!
  5. alle auf cruisecontrol.net schön.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top