Processus de déploiement de développement agile. Où le contrôle qualité et les propriétaires d'entreprise testent-ils?

9

J'ai beaucoup lu récemment sur divers processus de déploiement d'applications Web en utilisant SVN ou GIT, en vue de repenser la façon dont nous déployons actuellement où je travaille.

Comme c'est le cas avec de nombreuses saveurs d'Agile, il est supposé que tout ce qui est engagé dans la maîtrise ou le tronc est prêt pour la production. GitHub et Etsy, http://codeascraft.etsy.com/2010/05/20/quantum-of-deployment/, disent qu'ils fonctionnent sur cette base (bien qu'Etsy ait en fait un environnement de transfert).

Ce processus suppose que tous les tests unitaires et les tests CI ont été exécutés. Vous exécutez les tests localement et sur CI, puis vous vous engagez sur le tronc. Donc, à ce stade, votre code est techniquement solide.

Votre code peut être techniquement correct, mais les tests utilisateurs / fonctionnels peuvent révéler plus de bogues, en particulier en ce qui concerne les tests frontaux.

Ma question est la suivante. Où les AQ et les propriétaires d'entreprise testent-ils les modifications de fonctionnalités que vous avez mises en œuvre? Sur votre machine de développement locale avant de vous engager sur le tronc, ou sur une machine d'assurance qualité / de transfert?

Si vous avez une machine intermédiaire qui s'exécute sur le tronc et que vous supposez que tout le code engagé dans le tronc est prêt pour la production ... eh .. alors à quel moment le code est-il signé et prêt à entrer en production à la fois technique et commercial perspective? Si vous n'avez qu'une seule machine intermédiaire, de nombreux développeurs et que c'est là que le code doit être QA, alors comment pouvez-vous déployer à partir du tronc, car de nombreux changements de développeurs peuvent attendre la signature.

J'aimerais savoir comment les autres ont abordé cela?

Bazza
la source

Réponses:

6

Pour le meilleur ou pour le pire, je vois généralement cela se faire là où les tests sont effectués par rapport à la base de la succursale et la signature de l'entreprise est ce que le point de contrôle doit fusionner avec le déploiement principal.

J'ai vu cela se faire à la fois avec le développement sur "principal" avec une branche "déployée" distincte ou une branche "fonctionnalité" de développement avec une principale comme "déployée".

le flux de travail finit par ressembler à ceci:

  • coder quelque chose
  • exécuter des tests locaux
  • s'enregistrer à la branche de travail
  • (facultatif) build server builds ant tests
  • Test d'AQ / Business
  • corrections de bugs (boucle en haut)
  • fusionner pour déployer une branche
  • déployer

Certaines personnes travaillent à partir d'une seule branche, mais si vous devez subir des tests manuels, cela devient difficile. La plupart des gens que j'ai rencontrés qui travaillent sur l'hypothèse que tout ce qui peut être déployé lors de la validation et qui fonctionnent également à partir d'un seul tronc font quelque chose de petit, ou ont une ÉNORME quantité de tests automatisés, OU ils considèrent le «déploiement» dans cette conversation pour être un build pour un serveur de test et le processus d'AQ qui se produit entre le serveur de test et la production est géré séparément.

Facture
la source
Merci Bill. Nous travaillons dans un environnement où les développeurs s'engagent et déploient constamment des fonctionnalités distinctes pour le site. Si vous travaillez sur une branche de fonctionnalité, après avoir vérifié dans la branche de travail, où voyez-vous les tests QA / Business en cours? Si vous n'avez qu'une seule machine QA sur laquelle les développeurs valident des branches, alors en réalité, une seule fonctionnalité peut être testée à la fois, sauf si vous avez peut-être un site et une instance distincte du serveur d'applications configurés pour chaque développeur sur la machine QA, donc son les modifications peuvent être testées isolément avant de s'engager dans le tronc.
Bazza
d'après mon expérience, nous n'avons généralement pas créé de branche de fonctionnalité distincte pour chaque développeur, plus une pour chaque équipe et nous avons configuré un hôte qa pour chacune d'entre elles, même s'il ne s'agissait que d'une machine de développement supplémentaire.
Bill
Appréciez les commentaires. M’a donné quelques idées.
Bazza
2

Nous avons des tests d'acceptation automatisés sur la même branche de fonctionnalité. Lorsque vous créez une version candidate, elle inclut les tests automatisés que vous avez exécutés pour voir si la fonctionnalité réussit. Vous testez également la version candidate. Lorsque tout passe, vous le promouvez ensuite en fusionnant pour le maîtriser.

Plus d'informations sur ce processus ici:

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

Vérifiez également les commentaires.

J'espère que cela t'aides,

Adam

adymitruk
la source
@Adam - Merci pour cela et le lien. La discussion a été intéressante. Nourriture pour la pensée.
Bazza
0

En règle générale, attendre de valider avant que le code soit parfait est la moitié du temps pour reprendre les avantages du système de contrôle de version. (Sans beaucoup d'élaboration, je dirais qu'à moins qu'on ne permette plusieurs enregistrements à VCS, on n'a aucun moyen de revenir sur mon propre travail!) Donc, comme une pratique, nous demandons toujours aux gens de garder l'enregistrement (dans leur branche pour SVN ou il peut s'agir de commits locaux en cas de GIT) autant qu'ils le souhaitent. En fait, mieux c'est.

Cependant, lorsque le point arrive où tout semble être fait et testé - nous l'appelons une version puis il est fusionné avec le tronc. Essentiellement, QA peut certifier le RC en prenant un nouveau contrôle sur la HEADbranche et s'il / elle est Okey, il en va de même avec le tronc.

Donc, nous utilisons essentiellement le concept de branches de tâches ou de branches privées afin que les gens soient libres d'effectuer les enregistrements autant qu'ils le souhaitent. Dans le même temps, le coffre est relativement exempt de tout enregistrement cassé .

Dipan Mehta
la source