OPS05-BP02 Prueba y validación de los cambios
Cada cambio implementado 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 hacer 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: los cambios en el software se prueban antes de su entrega. Los desarrolladores tienen acceso a los resultados de las pruebas y las validaciones. Su organización tiene un estándar de pruebas que se aplica a todos los cambios de software.
Patrones comunes de uso no recomendados:
-
Implementa un nuevo cambio de software sin hacer ninguna prueba. No funciona en producción, lo que provoca una interrupción del servicio.
-
Los nuevos grupos de seguridad se implementan 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 implementa en producción.
Beneficios de establecer esta práctica recomendada: se reduce la tasa de errores de cambio de las implementaciones 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 implementar 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 hacen 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.
Utilice el poder de la IA generativa con Amazon Q Developer para mejorar la productividad de los desarrolladores y la calidad del código. Amazon Q Developer incluye la generación de sugerencias de código (basadas en modelos de lenguaje de gran tamaño), la producción de pruebas unitarias (incluidas condiciones límite) y mejoras de seguridad del código mediante la detección y la corrección de las vulnerabilidades de seguridad.
Ejemplo de cliente
Como parte de su canalización de integración continua, AnyCompany Retail ejecuta 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 efectuar pruebas de calidad del código? Cuando finalicen las pruebas, ¿quién tiene que saberlo?
-
AWS Deployment Pipeline Reference Architecture
incluye una lista autorizada de tipos de pruebas que pueden llevarse a cabo 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.
-
Utilice Amazon Q Developer, una herramienta de IA generativa que puede ayudar a crear casos de pruebas unitarias (incluidas las condiciones de límite), generar funciones mediante código y comentarios e implementar algoritmos conocidos.
-
Utilice Revisor de Amazon CodeGuru para comprobar si el código de la aplicación presenta defectos.
-
Puede utilizar AWS CodeBuild para hacer pruebas en artefactos de software.
-
AWS CodePipeline puede orquestar sus pruebas de software en una canalización.
-
Recursos
Prácticas recomendadas relacionadas:
Documentos relacionados:
-
Accelerate your Software Development Lifecycle with Amazon Q
-
The Ultimate Cheat Sheet for Using Amazon Q Developer in Your IDE
-
10 ways to build applications faster with Amazon CodeWhisperer
-
Best Practices for Prompt Engineering with Amazon CodeWhisperer
-
Automated AWS CloudFormation Testing Pipeline with TaskCat and CodePipeline
-
Building end-to-end AWS DevSecOps CI/CD pipeline with open source SCA, SAST, and DAST tools
-
Documento técnico de AWS: Práctica de integración y entrega continuas
Videos relacionados:
-
Implement an API with Amazon Q Developer Agent for Software Development
-
Installing, Configuring, & Using Amazon Q Developer with JetBrains IDEs (How-to)
-
Mastering the art of Amazon CodeWhisperer - YouTube playlist
-
AWS re:Invent 2020: Testable infrastructure: Integration testing on AWS
-
AWS Summit ANZ 2021 - Driving a test-first strategy with CDK and test driven development
Recursos relacionados:
Servicios relacionados: