#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps
1. Estrategias de QA en un
entorno DevOps
JOSÉ CASTILLO VELÁSQUEZ
D e v O p s E n g i n e e r , M B A C a n d i d a t e , I n g . d e S i s t e m a s , I S T Q B C T A L T e s t M a n a g e r
E m a i l : p e p e _ c a s t 2 @ h o t m a i l . c o m
S e t i e m b r e , 2 0 1 7
2. Agenda
- ¿Qué es DevOps?
- Etapas, pilares y fases de DevOps
- TDD, BDD y ATDD
- Tipos de pruebas en DevOps
- La pirámide de testing
- Tipos de prueba vs Niveles de Prueba
- Reducir el tiempo de pruebas en DevOps – Docker y Niveles de pruebas
- Métricas de testing en DevOps
- Tableros de desempeño
- Conclusiones
Ing. José Castillo Velásquez, #HablemosDeTesting
3. ¿Qué es DevOps?
DevOps es un enfoque de desarrollo de software que implica el desarrollo continuo, pruebas
continuas, integración continua, despliegue continuo y supervisión continua del software a lo
largo de su ciclo de vida de desarrollo.
Estas actividades son posibles sólo en DevOps, no Agile o cascada, y es por eso que las empresas
de primera han elegido DevOps como el camino a seguir para sus objetivos de negocio.
DevOps es el enfoque preferido para desarrollar software de alta calidad en ciclos de desarrollo
más cortos, lo que resulta en una mayor satisfacción del cliente.
Modelo Tradicional
Cascada
•Los requisitos
completos son
claros y fijos.
•La definición del
producto es
estable
Modelo Ágil
•Requerimientos
cambian
constantemente.
•Desarrollo
necesita ser más
rápido.
Reto DevOps
•Requerimientos
cambian
constantemente.
•Desarrollo
necesita ser ágil.
•Operaciones
necesita ser ágil.
Ing. José Castillo Velásquez, #HablemosDeTesting
4. Etapas de DevOps
Desarrollo continuo:
Esta es la etapa en el ciclo de vida de DevOps donde el Software se desarrolla continuamente. Esta etapa involucra las fases de Codificación y Construcción y utiliza herramientas como Git y SVN
para mantener las diferentes versiones del código, y herramientas como Ant, Maven, Gradle para construir / empaquetar el código en un archivo ejecutable que puede ser enviado a Los QA
para las pruebas.
Pruebas continuas:
Es la etapa donde el software desarrollado se prueba continuamente para los errores. Para la prueba continua se usan herramientas de automatización como Selenium, JUnit, etc. Además tipos
de desarrollo de prueba como TDD y BDD. En esta fase, el uso de contenedores Docker para simular el entorno de pruebas sobre la marcha, también es una opción preferida. Una vez que el
código se prueba, se integra continuamente con el código existente.
Integración continua:
Esta es la etapa en la que el código que soporta nueva funcionalidad está integrado con el código existente. Dado que hay un desarrollo continuo de software, el código actualizado necesita ser
integrado continuamente, así como suavemente con los sistemas para reflejar los cambios a los usuarios finales. Jenkins es una herramienta muy popular utilizada para la integración continua.
Despliegue continuo:
Es la etapa en la que el código se despliega en el entorno de producción. Aquí nos aseguramos de que el código se despliegue correctamente en todos los servidores. Si hay alguna adición de
funcionalidad o una nueva característica se introduce entonces uno debe estar listo para recibir mayor tráfico del sitio web. Por lo tanto, también es responsabilidad de SysAdmin escalar los
servidores para alojar más usuarios. Dado que el nuevo código se implementa de forma continua, las herramientas de automatización desempeñan un papel importante para ejecutar las tareas
de forma rápida y frecuente.
Monitoreo continuo:
Esta es una etapa muy crucial en el ciclo de vida de DevOps que tiene como objetivo mejorar la calidad del software mediante el seguimiento de su rendimiento. Esta práctica involucra la
participación del equipo de Operaciones que monitoreará la actividad del usuario por errores o cualquier comportamiento incorrecto del sistema. Esto también se puede lograr haciendo uso de
herramientas de monitoreo dedicadas que monitorearán continuamente el desempeño de la aplicación y resaltarán los problemas.
Ing. José Castillo Velásquez, #HablemosDeTesting
7. TDD, BDD y ATDD
Desarrollo guiado por pruebas o TDD es una técnica de programación que se centra en el hecho de
que las pruebas las escribes antes de programar la funcionalidad, siguiendo el ciclo falla, pasa,
refactoriza [ red, green, refactor ] intentando así mejorar la calidad del software que producimos.
En BDD no se prueba solo unidades o clases, se prueban escenarios y el comportamiento de las
clases a la hora de cumplir dichos escenarios. Los test de aceptación son aquellos destinados a
determinar si los requisitos de cierta funcionalidad han sido cumplidos, como usuarios finales.
Ing. José Castillo Velásquez, #HablemosDeTesting
8. Tipos de testing en DevOps
Cuadrante Q1 - A nivel de unidad contiene unidades de pruebas, tecnología de
cara, pruebas sujetas a la automatización completa y la integración continua.
Cuadrante Q2 - A nivel de sistema, frente a negocios, se trata de pruebas
funcionales, ejemplos, pruebas de historias, prototipos de experiencias de
usuario y simulaciones basadas en los criterios de aceptación, sean manuales o
automatizadas. Creado como parte de la definición de hecho para una historia
Cuadrante Q3 - En el nivel de aceptación del sistema o del usuario, frente a los
negocios, contiene pruebas de pruebas exploratorias, escenarios, flujos de
proceso, pruebas de usabilidad, pruebas de aceptación del usuario, pruebas
alfa y pruebas beta. Estas pruebas suelen ser manuales y orientadas al usuario.
Cuadrante Q4 - En el nivel de aceptación del sistema o operacional, la
tecnología se enfrenta a pruebas de rendimiento, carga, estrés y escalabilidad,
pruebas de seguridad, mantenimiento, administración de memoria,
compatibilidad e interoperabilidad, migración de datos, infraestructura y
pruebas de recuperación. Estas pruebas suelen ser automatizadas.
Ing. José Castillo Velásquez, #HablemosDeTesting
15. Conclusiones
•QA tiene que asegurarse de que todos sus casos de prueba son automatizados y lograr cerca del
100% de cobertura de código.
•QA necesita asegurarse de que sus entornos estén estandarizados y el despliegue en sus cajas
de control de calidad esté automatizado.
•Todas sus tareas de pre-prueba, clean, tareas de post-prueba, etc. son automatizadas y
alineadas con el ciclo de Integración Continua.
•En un entorno DevOps, el papel de QA es alimentar el nuevo código de desarrollo al entorno de
producción.
•Tradicionalmente, el papel del control de calidad es detectar bugs. Pero en la era DevOps, la
responsabilidad principal de QA es evitar que los errores ocurran en el primer lugar. Este
enfoque ayuda a ganar velocidad al mercado y ayuda a reducir los ciclos de prueba.
•La automatización de las pruebas es vital en el entorno DevOps.
Ing. José Castillo Velásquez, #HablemosDeTesting