OPS05-BP02 Probar y validar los cambios
Cada cambio desplegado se debe probar para evitar errores en producción. Esta práctica recomendada se centra en probar los cambios desde el control de versiones hasta la creación de artefactos. Además de los cambios en el código de la aplicación, las pruebas deben incluir la infraestructura, la configuración, los controles de seguridad y los procedimientos operativos. Las pruebas adoptan muchas formas, desde las pruebas unitarias hasta el análisis de componentes de software (SCA). Mover las pruebas más a la izquierda en el proceso de integración y entrega del software se traduce en una mayor certeza de la calidad de los artefactos.
Su organización debe desarrollar estándares de prueba para todos los artefactos de software. Las pruebas automatizadas reducen el trabajo y evitan los errores de las pruebas manuales. En algunos casos puede ser necesario realizar pruebas manuales. Los desarrolladores deben tener acceso a los resultados de las pruebas automatizadas para crear bucles de comentarios que mejoren la calidad del software.
Resultado deseado:
-
Todos los cambios en el software se prueban antes de su entrega.
-
Los desarrolladores tienen acceso a los resultados de las pruebas.
-
Su organización tiene un estándar de pruebas que se aplica a todos los cambios de software.
Antipatrones usuales
-
Despliega un nuevo cambio de software sin realizar ninguna prueba. No funciona en producción, lo que provoca una interrupción del servicio.
-
Los nuevos grupos de seguridad se despliegan con AWS CloudFormation sin haberse probado en un entorno de preproducción. Los grupos de seguridad hacen que la aplicación sea inaccesible para los clientes.
-
Se modifica un método, pero no hay pruebas unitarias. El software no funciona cuando se despliega en producción.
Beneficios de establecer esta práctica recomendada:
-
Se reduce la tasa de errores en los despliegues de software.
-
Se mejora la calidad del software.
-
Los desarrolladores son más conscientes de la viabilidad de su código.
-
Las políticas de seguridad se pueden desplegar con confianza para respaldar el cumplimiento de la organización.
-
Los cambios en la infraestructura, como las actualizaciones automáticas de las políticas de escalamiento, se prueban con antelación para satisfacer las necesidades de tráfico.
Nivel de riesgo expuesto si no se establece esta práctica recomendada: alto
Guía para la implementación
Las pruebas se realizan en todos los cambios, desde el código de la aplicación hasta la infraestructura, como parte de su práctica de integración continua. Los resultados de las pruebas se publican para que los desarrolladores tengan comentarios rápidos. Su organización tiene un estándar de pruebas que deben superar todos los cambios.
Ejemplo de cliente
Como parte de su canalización de integración continua, AnyCompany Retail realiza varios tipos de pruebas en todos los artefactos de software. Practica el desarrollo basado en pruebas, por lo que todo el software tiene pruebas unitarias. Una vez creado el artefacto, ejecuta pruebas integrales. Una vez completada esta primera ronda de pruebas, ejecuta un examen estático de la seguridad de la aplicación, que busca vulnerabilidades conocidas. Los desarrolladores reciben mensajes a medida que se supera cada puerta de prueba. Una vez completadas todas las pruebas, el artefacto de software se almacena en un repositorio de artefactos.
Pasos para la implementación
-
Colabore con las partes interesadas de su organización en el desarrollo de un estándar de pruebas para los artefactos de software. ¿Qué pruebas estándar deben superar todos los artefactos? ¿Hay requisitos de cumplimiento o gobernanza que deban incluirse en la cobertura de las pruebas? ¿Necesita realizar pruebas de calidad del código? Cuando finalicen las pruebas, ¿quién tiene que saberlo?
-
En AWS Deployment Pipeline Reference Architecture
(Arquitectura de referencia de la canalización de despliegue de AWS) se incluye una lista autorizada de tipos de pruebas que pueden realizarse en artefactos de software como parte de una canalización de integración.
-
-
Instrumente su aplicación con las pruebas necesarias en función de su estándar de pruebas de software. Cada conjunto de pruebas debería completarse en menos de diez minutos. Las pruebas deben ejecutarse como parte de una canalización de integración.
-
Amazon CodeGuru Reviewer puede probar el código de su aplicación en busca de defectos.
-
Puede usar AWS CodeBuild para realizar pruebas en artefactos de software.
-
AWS CodePipeline puede orquestar sus pruebas de software en una canalización.
-
Recursos
Prácticas recomendadas relacionadas:
-
OPS05-BP01 Usar control de versiones - Todos los artefactos de software deben estar respaldados por un repositorio controlado por versiones.
-
OPS05-BP06 Compartir estándares de diseño - Los estándares de comprobación de software de su organización informan a sus estándares de diseño.
-
OPS05-BP10 Automatizar completamente la integración y el despliegue - Las pruebas de software deben ejecutarse automáticamente como parte de su canalización más amplia de integración y despliegue.
Documentos relacionados:
-
Adopt a test-driven development approach (Adoptar un enfoque de desarrollo basado en pruebas )
-
Automated AWS CloudFormation Testing Pipeline with TaskCat and CodePipeline
(Canalización automatizada de pruebas de AWS CloudFormation con TaskCat y CodePipeline) -
Building end-to-end AWS DevSecOps CI/CD pipeline with open source SCA, SAST, and DAST tools
(Creación de canalizaciones de CI/CD de AWS DevSecOps de extremo a extremo con herramientas SCA, SAST y DAST de código abierto) -
Getting started with testing serverless applications
(Introducción a las pruebas de aplicaciones sin servidor) -
My CI/CD pipeline is my release captain
(Mi canalización CI/CD es mi capitán de lanzamiento) -
Documento técnico Practicing Continuous Integration and Continuous Delivery on AWS(Practicar la integración continua y la entrega continua en AWS)
Vídeos relacionados:
-
AWS re:Invent 2020: Testable infrastructure: Integration testing on AWS
(Infraestructura comprobable: pruebas de integración en AWS) -
AWS Summit ANZ 2021 - Driving a test-first strategy with CDK and test driven development
(Impulso de una estrategia basada en las pruebas con CDK y desarrollo impulsado por pruebas) -
Testing Your Infrastructure as Code with AWS CDK
(Prueba de la infraestructura como código con AWS CDK)
Recursos relacionados:
-
AWS Deployment Pipelines Reference Architecture: Application
(Arquitectura de referencia de las canalizaciones de despliegue de AWS: aplicación) -
AWS Kubernetes DevSecOps Pipeline
(Canalización de DevSecOps de AWS Kubernetes) -
Policy as Code Workshop – Test Driven Development
(Taller de política como código: desarrollo basado en pruebas) -
Run unit tests for a Node.js application from GitHub by using AWS CodeBuild(Ejecutar pruebas de unidad para una aplicación Node.js desde GitHub mediante AWS CodeBuild)
-
Use Serverspec for test-driven development of infrastructure code (Usar Serverspec para el desarrollo basado en pruebas del código de la infraestructura)
Servicios relacionados: