Notre équipe de développement a utilisé la stratégie de branchement GitFlow et ça a été génial!
Récemment, nous avons recruté quelques testeurs pour améliorer la qualité de nos logiciels. L'idée est que chaque fonctionnalité doit être testée / QA par un testeur.
Dans le passé, les développeurs travaillaient sur des fonctionnalités sur des branches de fonctionnalités distinctes et les fusionnaient dans la develop
branche une fois terminé. 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 existe deux options:
- sur la branche des fonctionnalités individuelles
- sur la
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 dans la
develop
branche 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, il n'a affaire qu'à une seule branche (
develop
) à la fois. Il n'a pas besoin de demander au développeur quelle branche est pour quelle fonctionnalité (les branches de fonctionnalités sont des branches personnelles gérées exclusivement et librement par les développeurs concernés)
Le plus gros problème avec ceci est:
La
develop
branche est polluée d'insectes.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 (la branche de fonctionnalité a été abandonnée une fois fusionnée), et d'autres correctifs pourraient être nécessaires par la suite. Plusieurs sous-séquences commits ou fusionnent (si une branche est recréée à
develop
nouveau hors de la branche pour corriger les bogues) rend la restauration de la fonctionnalité de ladevelop
branche très difficile si possible. Plusieurs fonctionnalités fusionnent et sont fixées sur ladevelop
branche à des moments différents. Cela crée un gros problème lorsque nous voulons créer une version avec seulement certaines des fonctionnalités de ladevelop
branche
Test sur la branche de fonctionnalités
Nous avons donc réfléchi à nouveau et avons décidé de tester les fonctionnalités sur les branches de fonctionnalités. Avant de tester, nous fusionnons les modifications de la develop
branche à la branche de fonctionnalité (rattrapez la develop
branche). C'est bon:
- Vous testez toujours la fonctionnalité avec d'autres fonctionnalités du grand public
- Un développement ultérieur (par exemple, correction de bogue, résolution de conflit) ne polluera pas la
develop
branche; - Vous pouvez facilement décider de ne pas publier la fonctionnalité tant qu'elle n'a pas été entièrement testée et approuvée;
Cependant, il y a quelques inconvénients
- Le testeur doit faire la fusion du code, et s'il y a un conflit (très probable), il doit demander de l'aide au 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 se connaissent pas car aucune d'elles n'a été fusionnée dans la
develop
branche. Cela signifie que vous devrez à nouveau tester ladevelop
branche lorsque les deux fonctionnalités sont fusionnées dans la branche de développement de toute façon. Et vous devez vous rappeler de tester cela à l'avenir. - Si les fonctionnalités A et B sont toutes les deux testées et approuvées, mais lors de la fusion, un conflit est identifié, les deux développeurs des deux fonctionnalités pensent que ce n'est pas sa propre faute / travail car sa fonctionnalité a dépassé le test. Il y a une surcharge supplémentaire dans la communication, et parfois celui qui résout le conflit est frustré.
Ci-dessus, notre histoire. Avec des ressources limitées, j'aimerais éviter de tout tester partout. Nous cherchons toujours une meilleure façon de faire face à cela. J'adorerais entendre comment les autres équipes gèrent ce genre de situations.