Notre équipe de développement a utilisé le GitFlow stratégie de branchement et c'est génial !
Récemment, nous avons recruté un couple de testeurs pour améliorer la qualité de nos logiciels. L'idée est que chaque fonctionnalité devrait être testée/QA par un testeur.
Dans le passé, les développeurs travaillaient sur des fonctionnalités sur des branches de fonctionnalités séparées et les fusionnaient à nouveau dans la branche de la develop
branche quand c'est fait. Le développeur testera lui-même son travail sur cette feature
branche. Maintenant, avec les testeurs, nous commençons à poser cette question
Sur quelle branche le testeur doit-il tester les nouvelles fonctionnalités ?
Évidemment, il y a deux options :
- sur la branche des caractéristiques individuelles
- sur le
develop
branche
Test sur la branche de développement
Au départ, nous pensions que c'était la voie à suivre, car.. :
- La fonctionnalité est testée avec toutes les autres fonctionnalités fusionnées à la
develop
depuis le début de son développement. - Tout conflit peut être détecté plus tôt que plus tard
- Cela facilite le travail du testeur, qui ne s'occupe que d'une seule branche (
develop
) à tout moment. Il n'a pas besoin de demander au développeur quelle branche correspond à quelle fonctionnalité (les branches de fonctionnalité sont des branches personnelles gérées exclusivement et librement par les développeurs concernés).
Les plus gros problèmes avec ça sont :
-
El
develop
La branche est polluée par des bogues.Lorsque le testeur trouve des bogues ou des conflits, il les signale au développeur, qui corrige le problème sur la branche de développement (les branches de fonctionnalités sont abandonnées une fois fusionnées), et d'autres corrections peuvent être nécessaires par la suite. De multiples commits ou fusions subséquents (si une branche est recréée à partir de la branche de développement).
develop
pour corriger les bogues) permet d'annuler la fonctionnalité à partir de la branche de ladevelop
branche très difficile si possible. Il y a de multiples fonctionnalités qui fusionnent et sont corrigées sur la branchedevelop
à différents moments. Cela crée un gros problème lorsque nous voulons créer une version avec seulement certaines des fonctionnalités de la branchedevelop
branche
Test sur la Feature Branch
Nous avons donc réfléchi à nouveau et décidé que nous devions tester les fonctionnalités sur les branches de fonctionnalités. Avant de tester, nous fusionnons les changements de la branche develop
vers la branche des fonctionnalités (pour rattraper le retard de la develop
branche ). C'est une bonne chose :
- Vous testez toujours la fonctionnalité avec d'autres fonctionnalités dans le courant dominant.
- Un développement ultérieur (par exemple, la correction d'un bogue, la résolution d'un conflit) ne polluera pas le site Web de l'UE.
develop
branche ; - Vous pouvez facilement décider de ne pas diffuser la fonctionnalité avant qu'elle ne soit entièrement testée et approuvée ;
Cependant, il y a quelques inconvénients
- Le testeur doit effectuer la fusion du code et, en cas de conflit (très probable), il doit demander l'aide du développeur. Nos testeurs sont spécialisés dans les tests et ne sont pas capables de coder.
- une fonctionnalité pourrait être testée sans l'existence d'une autre nouvelle fonctionnalité. Par exemple, les fonctionnalités A et B sont toutes deux testées en même temps, les deux fonctionnalités ne sont pas au courant l'une de l'autre parce qu'aucune d'entre elles n'a été fusionnée à l'ensemble des fonctionnalités.
develop
branche. Cela signifie que vous devrez tester contre ladevelop
lorsque les deux fonctionnalités seront fusionnées dans la branche de développement de toute façon. Et vous devez vous souvenir de tester cela à l'avenir. - Si les fonctionnalités A et B sont toutes deux testées et approuvées, mais qu'un conflit est identifié lors de la fusion, les deux développeurs des deux fonctionnalités pensent que ce n'est pas leur faute ou leur travail parce que leur branche de fonctionnalité a passé le test. Il y a une surcharge de communication, et parfois la personne qui résout le conflit est frustrée.
Ci-dessus, notre histoire. Avec des ressources limitées, j'aimerais éviter de tout tester partout. Nous sommes toujours à la recherche d'une meilleure façon de faire face à cette situation. J'aimerais savoir comment d'autres équipes gèrent ce genre de situation.