São tantos os tipos e formatos de testes que podemos executar em um fluxo de trabalho, com a finalidade de entregar melhorias constantes nos ambientes de execução da aplicação, que as vezes podemos nos perder em meio a esta pluralidade.
Pensando nisto, eu proponho um modelo de pipeline de CI/CD que utilize de maneira adequada os tipos essenciais de testes, culminando em uma proposta de implementação na nuvem que atinja os objetivos de escalabilidade, confiabilidade e eficiência da aplicação.
Testes automatizados e manuais do modelo de pipeline de CI/CD
Testes Unitários
Smoke Test
Testes de Aceitação
Testes Integrados
Testes Funcionais
Testes de Regressão
Testes Manuais
Testes não Funcionais
Modelo de pipeline CI/CD

A execução contínua dos testes antecipa os problemas de produção permitindo realizar ajustes e garantir assim a confiabilidade da aplicação.
Composto de diversas etapas o modelo de pipeline CI/CD proposto possui muitas atividades, mas com certeza as principais e em maior número são os testes, os quais aparecem em todas as etapas. A sua importância é indiscutível e sua execução contínua é vital para atingir a qualidade e a eficiência da aplicação, proporcionando rentabilidade aos negócios.
A análise estática realizada na etapa de validações tem como função principal verificar a qualidade do código entregue, apontando desenvolvimento inadequado ou não condizente com as melhores práticas na construção de código fonte.
Os testes unitários e de aceite devem ser criados pelo desenvolvedor a fim de garantir que o código construído está funcionando e que não indisponibiliza o uso da aplicação.
Os testes de aceite devem validar somente o contexto interno da aplicação, sem interações com o ambiente externo, tornando-se produtivo e imune a impactos indesejáveis gerados por outras aplicações.
Os testes de aceite de usuário são desenvolvidos preferencialmente pelos testers, os quais possuem o conhecimento necessário das massas de testes e dos requisitos definidos pelo Project Owner. Estes testes serão executados automaticamente pelo pipeline. Os testers também executam manualmente alguns testes complexos e de usabilidade.
Os testes não funcionais são realizados pelo pessoal da área de operações, sendo alguns testes automatizados e outros manuais: testes de capacidade, performance e testes de segurança. O teste de segurança DAST deve ser realizado nesta etapa, contudo o teste de segurança SAST deve ter sido realizado juntamente com a análise estática na etapa de validações.
Por fim, se tudo estiver sido executado com sucesso, estaremos entregando a aplicação em produção após o smoke test, que garante que a aplicação está no ar, ou melhor está na nuvem.
Estar na nuvem nos faz nos sentir felizes e realizados.
Solução de cloud computing
Para esta solução, usei o Terraform juntamente com o Amazon Web Services para fim de provisionar e executar os deploys nos ambientes necessários para as etapas de aceitação funcional, testes de aceite do usuário, aceitação não funcional e produção.
A escolha do Terraform garante que podemos utilizar este modelo com muitas ofertas de Cloud: Google Cloud, Microsoft Azure e outras.

Conclusão
Muito já ouvimos falar sobre alcançar qualidade, disponibilidade e eficiência no desenvolvimento de aplicações, mas apesar de toda a tecnologia e recursos que temos na atualidade, ainda estamos presos a escolhas simples e atitudes determinadas. Defina sua suite de testes, execute-a com excelência e continuamente para que atinja os melhores resultados.
Texto por Marco Santos (Entusiasta DevOps (SRE) | AWS | IaC | Terraform)