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 à developramificação quando concluídos. O desenvolvedor testará seu trabalho nesse featureramo. 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
developgalho
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 à
developramificaçã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
developramo 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
developramificação novamente para corrigir os erros) dificultará a reversão do recurso dadevelopramificação, se possível. Existem vários recursos mesclados e corrigidos nadevelopramificação em momentos diferentes. Isso cria um grande problema quando queremos criar uma versão com apenas alguns dos recursos dadevelopramificaçã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 developramo para o ramo do recurso (acompanhe o developramo). 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
developramo; - 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 à
developfilial. Isso significa que você precisará testardevelopnovamente 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.
