Quelles sont les normes de votre équipe pour faire respecter un déploiement de code version majeure?

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

  •  22-08-2019
  •  | 
  •  

Question

Je suis curieux de savoir quel genre de normes d'autres équipes assurez-vous est en place avant que les navires de code (ou déploie) à la porte dans les versions majeures.

Je ne cherche pas des réponses spécifiques à chacun, mais voici une idée de ce que je suis en train de faire une idée.

  • Pour les applications basées sur le serveur, garantissez-vous la surveillance est en place? Dans quelle mesure ... juste qu'il répond à un ping, qu'il peut frapper toutes ses dépendances à un moment donné, que la logique que l'application est en fait son services (par exemple, un service qui calcule 2 + 2 retourne en fait « 4 « )
  • Avez-vous besoin de scripts automatisés de construction avant que le code est libéré? Signification, tout dev peut marcher sur une nouvelle boîte, Yank quelque chose du contrôle de source, et commencer à développer? Étant donné les choses comme un système d'exploitation et IDE, bien sûr.
  • Comment sur les scripts de déploiement automatisés, pour les applications basées sur le serveur?
  • Quel est le niveau de la documentation avez-vous besoin d'un projet à « faire? »
  • Est-ce que vous faites dang que vous avez un plan de sauvegarde à part entière pour tous les principaux composants du système, si elle est basée sur le serveur?
  • Avez-vous respecter les normes de qualité de code? Pensez StyleCop pour les évaluations complexité .NET ou cyclomatique.
  • Les tests unitaires? Les tests d'intégration? les tests de charge de la performance?
  • Avez-vous des normes sur la façon dont est gérée la journalisation des erreurs de votre application? Que diriez-vous de notification d'erreur?

Encore une fois, ne cherche pas une PunchList ligne par ligne des réponses à tout ce qui précède, nécessairement. En bref, quels éléments non codantes doivent une version du code ont terminé avant qu'il ne soit officiellement considéré comme « fait » pour votre équipe?

Était-ce utile?

La solution

Le minimun:

  1. tests unitaires travail
  2. tests d'intégration travail
  3. déployer sur scène test ok
  4. court vérification manuelle sur scène de test

Mieux:

  1. tests unitaires travail
  2. checkstyle ok
  3. tests d'intégration travail
  4. jmeter et couverture de test passé
  5. déployer sur scène test ok
  6. quelques tests manuels sur scène de test

déployer enfin sur la scène de la production

Tous les tests unitaires et d'intégration fonctionnent automatiquement, mieux sur un serveur d'intégration continue comme CruiseControl fait par ant ou Maven. Lors du développement de webservices, des tests avec SoapUI fonctionne très bien.

Si une base de données utilisée, mise à jour automatique est effectuée (avec liquibase par exemple) avant le déploiement. Lorsque les services externes sont utilisés, les tests de configuration addidional sont nécessaires pour assurer les URL sont ok (demande de la tête de l'application, base de données se connecter, wsdl obtenir, ...). Lors de l'élaboration webpps, un HTML validation sur certaines pages sera utile. Une vérification manuelle de la mise en page (utilisation Browsershots par exemple) serait utile.

(Tous les exemples de liens pour le développement Java)

Enfin (mais pas moins): sont tous les tests d'acceptation encore passait? Le produit est-ce que le propriétaire veut? Faire un examen en direct avec lui sur le système de test avant d'aller plus loin!

Autres conseils

Je fais surtout le développement web, de sorte que mes articles peuvent être différentes de la vôtre. Juste à côté du haut de ma tête ...

  • Assurez-vous tous les services Web sont à jour
  • Vérifiez que tous les scripts de base de données / modifications / migrations sont déjà déployés sur le serveur de production
  • Min tous js et fichiers css.
  • Assurez-vous que toutes les unités / tests fonctionnels / intégration / Sélénium sont passe (Nous visons 95% + couverture de test alors que nous développons, donc ce sont généralement assez précis pour déterminer un problème)

Il y a plus, je sais qu'il est, mais je ne peux pas penser à tout moment.

Chaque projet est différent, mais en règle générale ici sont les choses essentielles que j'essaie d'avoir fait avant de laisser le code vont dans la nature.

Dans aucun ordre particulier:

1) Une identification de la version en place où il se trouve par un utilisateur plus tard, celle-ci doit être unique à cette version. (Très généralement un « numéro de version » associée au distribuables, les bibliothèques et exécutables ou utilisateur visible à partir d'un « de » boîte de dialogue. Peut-être un numéro à un registre bien connu ou le décalage dans le firmware)

2) Un aperçu du code exact utilisé pour produire la sortie. (Une étiquette ou une branche de la libération dans le système SCM est bon pour cela)

3) Tous les outils nécessaires pour recréer la source doivent être notées et archivées (source de l'étape 2 devient une utilisation limitée sans que cela)

4) Une archive de la version actuelle (une copie du programme d'installation exacte publié, qui sait en 7 ans vos outils peuvent ne pas être en mesure de le construire, mais maintenant au moins vous avez le code source et un installable à vos côtés à des fins d'enquête).

5) Une série de changements documentés entre cette version de version et la précédente aka Notes de version (je préfère utiliser le style de annexant à la liste afin que tous les changements de version sont disponibles en un seul endroit pour un utilisateur).

6) cycle d'essai de libération du candidat complet. Utilisation de la charge créée de distribuables et test à l'aide d'un plan test complet / pour être sûr Info brute fonctionnalité de base est opérationnelle, toutes les nouvelles fonctionnalités sont présentes et fonctionnent comme prévu.

7) le suivi des défauts montre tous les articles en circulation sont marqués comme a) fixe b) pas un défaut c) différé.

Vous pouvez saupoudrer dans beaucoup d'autres étapes en fonction de domaine ou d'un style de développement, mais je voudrais dire que la plupart des logiciels « devrait être » d'effectuer les étapes ci-dessus chaque libération. YMMV.

Amusez-vous bien prenant d'assaut le château.

  • Codestyle (automatisé)
  • Tests automatisés (Unit- et Integrationtests)
  • Tests manuels (y compris les tests et les étapes bêta)
  • Whitebox outil de test de pénétration (automatisé)
  • outil de test de pénétration de Blackbox (automatisé)
  • Exception Manuel / journalisation surveillance sur le test / étapes bêta avant le déploiement
  • possibilité de revenir à la version précédente à tout moment
  • revue de code et 'checkins illégaux'

Pour les applications web / interne une chose en plus des autres suggestions.

Assurez-vous d'impliquer les opérations / équipe de déploiement afin que vous ne livrez pas un logiciel qui nécessite plusieurs serveurs puis ils ont (n'ont pas les gens assumer poussant les exigences déjà).

  • Passez en revue la liste de contrôle:. Vérifier que toutes les nouvelles fonctionnalités, les demandes de changement et des corrections de bugs prévues pour la version ont été finis
  • Construire (dans la machine de construction) compile sans avertissement ni erreur en mode de sortie.
  • Tous les tests unitaires automatisés fonctionnent sans erreur.
  • Tous les messages et les images ont été approuvées par l'équipe produit.
  • contrôles de performance ne sont pas pires que la version ancienne.
  • Le plan de test complet (manuel) a été vérifié par l'équipe de test sans erreurs.
    • L'application est testée dans de nombreux scénarios possibles (différents OS, moteurs de base de données, configurations et applications tierces).
    • Toutes les fonctionnalités de l'application sont testées:. Plusieurs fois qui nous est arrivé qu'un changement d'une caractéristique a éclaté une autre pensait sans rapport, merde arrive, donc nous devons minimiser
    • La configuration ou le déploiement fonctionne dans tous les scénarios trop
    • Le programme d'installation est en mesure de mettre à niveau les versions antérieures

Nous avons fait une version majeure récemment, c'est donc encore assez frais dans mon esprit. Nous faisons une application Windows avec une interface graphique pour laquelle nous libérons un exécutable binaire, donc ma liste est nécessairement va être sensiblement différent de celui pour une sortie uniquement web.

  1. candidats de sortie vont à l'équipe de test. Ils ont besoin d'au moins quelques jours pour jouer avec elle. S'ils trouvent des bugs que nous considérons comme show-bouchons, la libération est annulée. Vous avez une équipe suppose de test. Nous ne dégageons un candidat de libération si au moins une semaine a passé depuis sa date de construction.

  2. Tous les tests automatisés doit travailler et passer. Les tests automatisés est considéré comme un supplément aux testeurs en direct.

  3. Les bogues marqués comme "bloqueurs" doivent être résolus pour la version finale.

  4. matériel de publicité doit être prêt (dans notre cas, une mise à jour pages Web et un bulletin électronique). Les revendeurs sont alertés qu'un communiqué arrive plusieurs semaines à l'avance, afin qu'ils puissent préparer leur matériel aussi bien. Ce ne sont pas la plupart du temps un problème de programmeur, mais nous faisons les demandes de paiement marketing pour la précision.

  5. Permis doit être mis à jour pour refléter ce que protection contre la copie que nous utilisons. Nos versions bêta et les versions de libération utilisent différents modèles de licences, et ce changement nécessite l'effort de programmation.

  6. Le programme d'installation et contrat de licence doivent être mis à jour. Étant donné que les versions bêta ont un programme d'installation, cela est généralement un simple changement de texte, mais il tombe encore aux programmeurs pour réellement mettre à jour le script d'installation.

  7. Toute référence à la version bêta doivent être retirés de l'application elle-même. Nous avons raté quelques d'entre eux, honteusement.

  8. fichiers d'aide et manuels devaient être mis complètement à jour et relisez, car ils faisaient partie du paquet de libération.

  9. S'il y avait des bugs qui ne pouvaient être fixés dans le temps, nous aurions au moins essayer de limiter les dégâts - par exemple, détecter que tel ou tel bug se produisait, et annuler l'opération avec un apologétique message d'erreur. Cela contribue énormément à la stabilité perçue du produit.

Et de loin, les difficultés d'une version majeure ne sont pas des problèmes de la programmation, ils étaient des problèmes administratifs / marketing. Beaucoup de ces choses nécessitent une attention programmeur - aider avec les installateurs, relectures la liste des fonctionnalités pour vous assurer que rien de tout cela est un non-sens, les sections techniques relectures du manuel, les licences de mise à jour, etc. La principale différence technique a été le passage de bug-fixing à bug-atténuante.

  1. pas de bugs visibles? ok
  2. Travaux de test unitaire? ok (certains ignorés) ha bien ok
  3. Configuration ya sûr. ok
  4. journalisation des erreurs? bien sur ! :-) nous en avons besoin ! pour corriger les bugs!
  5. tout sur beau cruisecontrol.net.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top