Nossa equipe de desenvolvimento tem usado a estratégia de ramificação do GitFlow e tem sido ótima!
Recentemente, recrutamos alguns testadores para melhorar nossa qualidade de software. A idéia é que todos os recursos sejam testados / controle de qualidade por um testador.
No passado, os desenvolvedores trabalham em recursos em ramificações de recursos separadas e os mesclam de volta à develop
ramificação quando concluídos. O desenvolvedor testará seu trabalho nesse feature
ramo. Agora, com testadores, começamos a fazer esta pergunta
Em qual filial o testador deve testar novos recursos?
Obviamente, existem duas opções:
- no ramo do recurso individual
- no
develop
galho
Teste no ramo de desenvolvimento
Inicialmente, acreditávamos que este é o caminho certo a seguir, porque:
- O recurso é testado com todos os outros recursos mesclados à
develop
ramificação desde o início do desenvolvimento. - Qualquer conflito pode ser detectado mais cedo ou mais tarde
- Isso facilita o trabalho do testador, ele está lidando apenas com um ramo (
develop
) o tempo todo. Ele não precisa perguntar ao desenvolvedor sobre qual ramificação é para qual característica (ramificações de características são ramificações pessoais gerenciadas exclusiva e livremente pelos desenvolvedores relevantes)
Os maiores problemas com isso são:
O
develop
ramo está poluído com insetos.Quando o testador encontra bugs ou conflitos, ele os reporta ao desenvolvedor, que corrige o problema no ramo de desenvolvimento (o ramo de recursos foi abandonado uma vez mesclado) e pode haver mais correções necessárias posteriormente. A subsequência múltipla confirma ou mescla (se uma ramificação for recriada fora da
develop
ramificação novamente para corrigir os erros) dificultará a reversão do recurso dadevelop
ramificação, se possível. Existem vários recursos mesclados e corrigidos nadevelop
ramificação em momentos diferentes. Isso cria um grande problema quando queremos criar uma versão com apenas alguns dos recursos dadevelop
ramificação
Teste na ramificação de recursos
Então, pensamos novamente e decidimos que deveríamos testar os recursos nos ramos de recursos. Antes de testarmos, mesclamos as alterações do develop
ramo para o ramo do recurso (acompanhe o develop
ramo). Isso é bom:
- Você ainda testa o recurso com outros recursos no mainstream
- Desenvolvimento adicional (por exemplo, correção de bug, resolução de conflitos) não poluirá o
develop
ramo; - Você pode facilmente decidir não liberar o recurso até que ele seja totalmente testado e aprovado;
No entanto, existem algumas desvantagens
- O testador precisa fazer a mesclagem do código e, se houver algum conflito (muito provável), ele precisará pedir ajuda ao desenvolvedor. Nossos testadores são especializados em teste e não são capazes de codificação.
- um recurso pode ser testado sem a existência de outro novo recurso. por exemplo, os recursos A e B estão sendo testados ao mesmo tempo, os dois recursos não se conhecem porque nenhum deles foi mesclado à
develop
filial. Isso significa que você precisará testardevelop
novamente a ramificação quando os dois recursos forem mesclados à ramificação de desenvolvimento de qualquer maneira. E você deve se lembrar de testar isso no futuro. - Se os Recursos A e B forem testados e aprovados, mas quando um conflito for identificado, ambos os desenvolvedores dos dois recursos acreditam que não é sua própria falha / trabalho porque seu recurso passou no teste. Há uma sobrecarga extra na comunicação e, às vezes, quem resolve o conflito fica frustrado.
Acima está a nossa história. Com recursos limitados, gostaria de evitar testar tudo em qualquer lugar. Ainda estamos procurando uma maneira melhor de lidar com isso. Eu adoraria ouvir como outras equipes lidam com esse tipo de situação.