OPS05-BP02 Testar e valide as alterações
Cada alteração implantada deve ser testada para evitar erros na produção. A prática recomendada concentra-se em testar alterações do controle de versão na build de artefato. Além das alterações do código da aplicação, o teste deve incluir infraestrutura, configuração, controles de segurança e procedimentos de operações. O teste assume muitas formas, desde testes de unidade à análise dos componentes do software (SCA). Mova os testes mais para a esquerda na integração do software e o processo de entrega resultará em maior certeza da qualidade do artefato.
Sua organização deve desenvolver padrões de teste para todos os artefatos de software. Os testes automatizados reduzem o trabalho e evitam erros de testes manuais. Os testes manuais podem ser necessários em alguns casos. Os desenvolvedores precisam ter acesso aos resultados dos testes automatizados para criar loops de feedback que melhorem a qualidade do software.
Resultado desejado:
-
Todas as alterações do software são testadas antes de serem entregues.
-
Os desenvolvedores têm acesso aos resultados dos testes.
-
Sua organização tem um padrão de testes que se aplica a todas as alterações do software.
Antipadrões comuns:
-
Você implanta uma nova alteração do software sem nenhum teste. Ele não é executado na produção, o que ocasiona uma interrupção.
-
Novos grupos de segurança são implantados com o AWS CloudFormation sem serem testados em um ambiente de pré-produção. Os grupos de segurança tornam sua aplicação inacessível para seus clientes.
-
Um método é modificado, mas não há testes de unidade. O software falha quando é implantado em produção.
Benefícios do estabelecimento desta prática recomendada:
-
A taxa de falha de alteração de implantações de software é reduzida.
-
A qualidade do software é aprimorada.
-
Os desenvolvedores aumentaram a conscientização sobre a viabilidade do código deles.
-
As políticas de segurança podem ser distribuídas com confiança para apoiar a conformidade da organização
-
Alterações da infraestrutura, como atualizações da política de escalabilidade automática, são testadas com antecedência para atender às necessidades de tráfego.
Nível de exposição a riscos quando esta prática recomendada não é estabelecida: alto
Orientações para a implementação
Testes são realizados em todas as alterações, desde o código da aplicação à infraestrutura, como parte de sua prática de integração contínua. Os resultados dos testes são publicados para que os desenvolvedores tenham feedback rápido. Sua organização tem um padrão de testes de que todas as alterações devem ser aprovadas.
Exemplo de clientes
Como parte do pipeline de integração contínua, a AnyCompany Retail realiza alguns tipos de teste em todos os artefatos de software. Eles praticam desenvolvimento orientado a testes para que todo o software tenha testes de unidade. Depois que o artefato é criado, eles executam testes completos. Depois que a primeira etapa de testes é concluída, eles executam uma verificação de segurança da aplicação estática, que procura vulnerabilidades conhecidas. Os desenvolvedores recebem mensagens à medida que cada gate de testes é aprovado. Depois que todos os testes são concluídos, o artefato de software é armazenado em um repositório de artefatos.
Etapas da implementação
-
Trabalhe com stakeholders em sua organização para desenvolver um padrão de testes para artefatos de software. Em quais testes padrão todos os artefatos devem ser aprovados? Há requisitos de conformidade ou governança que devem ser incluídos na cobertura de testes? Você precisa realizar testes de qualidade de código? Quando os testes são concluídos, quem precisa saber?
-
A Arquitetura de referência de pipeline de implantação da AWS
contém uma lista oficial de tipos de teste que podem ser realizados em artefatos de software como parte de um pipeline de integração.
-
-
Instrumente sua aplicação com os testes necessários com base em seu padrão de testes de software. Cada conjunto de testes deve ser concluído em menos de dez minutos. Os testes devem ser executados como parte de um pipeline de integração.
-
O Amazon CodeGuru Reviewer pode testar seu código de aplicação quanto a defeitos.
-
Você pode usar o AWS CodeBuild para realizar testes em artefatos de software.
-
O AWS CodePipeline pode orquestrar seus testes de software em um pipeline.
-
Recursos
Práticas recomendadas relacionadas:
-
OPS05-BP01 Usar o controle de versão: deve ser feito backup de todos os artefatos de software em um repositório com controle de versão.
-
OPS05-BP06 Compartilhar os padrões de design: os padrões de teste de software de sua organização informam seus padrões de design.
-
OPS05-BP10 Automatizar totalmente a integração e a implantação: os testes de software devem ser executados automaticamente como parte de seu pipeline maior de implantação e integração.
Documentos relacionados:
-
Adopt a test-driven development approach (Adotar uma abordagem de desenvolvimento orientada a testes)
-
Automated AWS CloudFormation Testing Pipeline with TaskCat and CodePipeline
(Pipeline automatizado de testes do AWS CloudFormation com TaskCat e CodePipeline) -
Building end-to-end AWS DevSecOps CI/CD pipeline with open source SCA, SAST, and DAST tools
(Criar um pipeline de CI/CD completo do AWS DevSecOps e ferramentas DAST) -
Getting started with testing serverless applications
(Conceitos básicos de testes de aplicações com tecnologia sem servidor) -
My CI/CD pipeline is my release captain
(Meu pipeline de CI/CD é meu capitão de lançamentos) -
Whitepaper Practicing Continuous Integration and Continuous Delivery on AWS (Praticar a integração e entrega contínuas na AWS)
Vídeos relacionados:
-
AWS re:Invent 2020: Testable infrastructure: Integration testing on AWS
(AWS re:Invent 2020: Infraestrutura testável: teste de integração no AWS -
AWS Summit ANZ 2021 - Driving a test-first strategy with CDK and test driven development
(AWS Summit ANZ 2021: Conduzir uma estratégia de primeiro teste com o CDK e desenvolvimento orientado a testes) -
Testing Your Infrastructure as Code with AWS CDK
(Testar sua infraestrutura como código com o AWS CDK)
Recursos relacionados:
-
AWS Deployment Pipeline Reference Architecture - Application
(Arquitetura de referência de pipeline de implantação da AWS: aplicação) -
AWS Kubernetes DevSecOps Pipeline
(Pipeline do AWS Kubernetes DevSecOps) -
Workshop sobre política como código: desenvolvimento orientado a testes
-
Run unit tests for a Node.js application from GitHub by using AWS CodeBuild (Executar testes de unidade para uma aplicação Node.js do GitHub usando o AWS CodeBuild)
-
Use Serverspec for test-driven development of infrastructure code (Usar o Serverspec para desenvolvimento orientado a testes do código de infraestrutura)
Serviços relacionados: