Fases de teste durante o processo de Continuous Delivery
O segredo para agregar valor e qualidade ao produto é a garantia contínua de que não há impacto negativo das alterações efetuadas e das novas implementações durante todo o processo de Continuous Integration (CI) e Continuous Delivery (CD).
Os testes devem ser incluídos nas diferentes fases do CI/CD. É crucial garantir que recebemos feedback rápido sobre o impacto das alterações. Para tal, é necessário executar diversos tipos de testes, manuais e automáticos, continuamente durante todo o processo de release.
Code Analysis
Quando é efetuado check-in, o código é compilado e são executados processos de qualidade, como o code analisys. Esta verificação é efetuada sem que a aplicação seja executada. Ocorre antes da build e dos testes unitários. Este tipo de análise valida que o código está em conformidade com as regras definidas.
De forma a manter o nível de qualidade e legibilidade do código, recorremos à ferramenta open source SonarQube. A plataforma aplica as regras pré-definidas e personalizadas, e verifica se elas estão a ser cumpridas. No final da análise, são fornecidas várias informações úteis e sugestões de melhoria na página do SonarQube.
Testes Unitários
De uma forma geral, os testes devem ser efetuados o mais cedo possível. Os erros detectados no início do processo de desenvolvimento podem ser corrigidos mais facilmente e mais rapidamente. Nesse sentido, os testes unitários devem representar a maior parte da nossa estratégia de testes. Os developers são encorajados a criar testes unitários, que são executados após a compilação da solução.
Finalmente, a ferramenta de builds cria os binários para a aplicação.
Continuous delivery (CD) é a próxima fase e implica fazer o deploy do código da aplicação, que neste caso segue todo o já fluxo indicado anteriormente.
Testes Automáticos
Os testes automáticos correm logo após o lançamento diário de builds (clique aqui), são testes tipicamente rápidos de executar, de forma a assegurar a qualidade e fiabilidade do produto.
Integração: Quando executados estes testes permitem certificarmo-nos que os componentes trabalham corretamente juntos, garantindo que as novas implementações e alterações são validadas e a sua integração no produto não impacta nem atrasa as entregas previstas.
Aumento da cobertura: Devem ser criados testes de API para todas as novas funcionalidades/componentes criados. Esta cobertura irá permitir libertar os testers para testes exploratórios de nível mais elevado.
Testes Funcionais
Nesta fase (stagging), os testes são executados num ambiente semelhante ao ambiente de produção. Os seguintes testes são executados:
Testes funcionais: São efetuados manualmente pelos testers da equipa, com o objetivo de validar os requisitos funcionais da aplicação. Estes testes permitem encontrar as não conformidades do software em relação aos requisitos definidos, aumentando a confiança sobre o produto.
Testes de usabilidade: É nesta fase que os testers da equipa, efetuam testes tendo como preocupação a facilidade com o qual o utilizador usa o produto, no sentido de melhorar a experiencia do utilizador.