
Integração contínua
Hoje entramos no nosso sexto episódio de série de artigos mensais sobre teste de software e hoje vamos falar sobre a integração contínua.
A integração contínua no desenvolvimento de software nasceu a partir da necessidade do desenvolvimento paralelo, vários desenvolvedores trabalhando ao mesmo tempo na solução de várias regras de negócio em um mesmo projeto e ao final deste desenvolvimento, a confiança de que a alteração realizada não afetou alguma parte já produzida anteriormente. Em outras palavras, na busca por entregas mais frequentes e com mais qualidade.
Esta situação nos remete a uma preocupação constante de qualquer time quando está no processo de desenvolvimento. A parte mais difícil durante o desenvolvimento é a Manutenção. Isto porque quem está desenvolvendo o software são pessoas, passíveis de erros. E é necessária uma forma de garantir que estes erros sejam encontrados o quanto antes.
Mas como funciona a integração contínua?
Até um tempo atrás, uma equipe com vários desenvolvedores podiam trabalhar isoladamente e a medida que cada desenvolvedor finalizava seu código, era enviado a um repositório central que continha os códigos de todos os desenvolvedores. Só que quando este desenvolvedor atualizava este repositório, alguns erros eram gerados. E a cada atualização realizada pelos outros desenvolvedores, resultava no acúmulo de erros sem correção, afinal o desenvolvedor 2 não saberia que o desenvolvedor 1 atualizou este repositório com um código que criava um erro.
Diante deste cenário, a integração continua tem como sua principal característica, efetuar validações a fim de encontrar estes erros no momento em que o desenvolvedor está atualizando o repositório. Funciona mais ou menos assim:
Figura 1- Integração contínua
Na Figura 1, podemos identificar um gerente e dois desenvolvedores. Este time está produzindo uma solução, mas cada um com um código diferente. A medida que cada desenvolvedor finaliza, este efetua o check in de suas alterações no repositório. No momento em que o repositório recebe o código, o servidor (Source control server) verifica as alterações recebidas comparando com o código que ele já possui, realizando um fetch changes. Neste momento é que a “mágica” acontece. Este servidor vai executar vários testes neste código a fim de buscar erros no código e ao final desta validação será enviado ao gerente e aos desenvolvedores o resultado do teste. Se falhou ou se obteve sucesso. Este processo de validação ocorre de forma muito mais rápida que uma pessoa tentar realizar esta validação manualmente e consequentemente teremos uma diminuição dos custos, afinal a próxima etapa deste desenvolvimento será o teste e as pessoas que farão o teste não precisam se preocupar com o que já foi testado, podendo então focar apenas nas alterações.
Os principais benefícios da integração contínua são:
- Melhora na produtividade do desenvolvedor
- Testes realizados mais cedo
- Bugs encontrados mais rapidamente
- Entregas sendo realizadas mais rapidamente
Hoje no mercado algumas ferramentas são utilizadas para permitir a integração contínua. As principais são:
- Jenkins
- Travis CI
- GitLab CI/CD
- Hudson
- Cruise Control
- Bamboo
- Team City
- CloudBees
- AWS CodePipeline
- Bitbucket Pipelines
- CircleCI
- Azure Pipelines
- CodeShip
- Sauce Labs
Todas estas ferramentas tem uma grande capacidade de aplicar a integração contínua, basta verificar qual melhor se aplica ao cenário de cada empresa.
E então, gostou do artigo? Então vemos no nosso próximo artigo desta série sobre teste de software. Até lá!
Quer fazer parte do nosso time? #VemPraDBC
Confira nossas vagas em: https://dbc.compleo.com.br/

