testing + integración continua
TRANSCRIPT
![Page 1: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/1.jpg)
Testing + Integración continua
![Page 2: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/2.jpg)
Introducción ConceptosHerramientasCI en ArquitecturaPráctica
Agenda
![Page 3: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/3.jpg)
Introducción ConceptosHerramientasCI en ArquitecturaPráctica
Agenda
![Page 4: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/4.jpg)
Conceptos
El Testing, o pruebas de software, es el proceso que verifica y revela la
calidad de un proyecto/producto software.
Las principales ventajas que ofrece la realización de testing son :
● Comprobar la calidad de la solución
● Detectar fallos de implementación
● Detectar comportamientos inesperados o incorrectos durante el ciclo de
construcción del software
● Obliga a modularizar el software correctamente
● Reduce el tiempo de resolución de incidencias
![Page 5: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/5.jpg)
Conceptos
● Aunque exige dedicar esfuerzo (coste para las empresas) para crear y
mantener los test, los beneficios obtenidos son mayores que la inversión
realizada
● Permite delegar responsabilidades ya que el testing manual no se debería
realizar por ningún integrante del equipo encargado de implementar la
solución para evitar “vicios adquiridos”
● El testing se puede utilizar incluso para implementar funcionalidad en
base a metodologías alrededor de los test (TDD)
● Tranquilidad y seguridad al equipo e indirectamente a la organización
![Page 6: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/6.jpg)
Conceptos
Un test unitario es la forma de comprobar el correcto funcionamiento de un
módulo de código. Nos permite comprobar que cada módulo de nuestro
sistema funciona correctamente por separado
Un simple servicio encargado de realizar sumas
![Page 7: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/7.jpg)
Conceptos
Un test unitario es la forma de comprobar el correcto funcionamiento de un
módulo de código. Nos permite comprobar que cada módulo de nuestro
sistema funciona correctamente por separado
![Page 8: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/8.jpg)
Conceptos
Un test de integración nos permite comprobar la integración entre varios
componentes o módulos de nuestro software.
● Permite comprobar la integración entres distintos módulos de nuestra
solución.
● Permita comprobar la integración con sistemas de terceros.
○ Sistemas de Mensajería JMS
○ Base de datos
○ Notificaciones
○ Etc
![Page 9: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/9.jpg)
Conceptos
Un test de integración nos permite comprobar la integración entre varios
componentes o módulos de nuestro software.
● Permite comprobar la integración entres distintos módulos de nuestra
solución.
● Permita comprobar la integración con sistemas de terceros.
○ Sistemas de Mensajería JMS
○ Base de datos
○ Notificaciones
○ Etc
App
Mod. 1
Mod. 2
![Page 10: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/10.jpg)
Conceptos
Un test de integración nos permite comprobar la integración entre varios
componentes o módulos de nuestro software.
● Permite comprobar la integración entres distintos módulos de nuestra
solución.
● Permita comprobar la integración con sistemas de terceros.
○ Sistemas de Mensajería JMS
○ Base de datos
○ Notificaciones
○ Etc
App
Mod. 1
Mod. 2
App
Mod. 1
Mod. 2
![Page 11: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/11.jpg)
Conceptos
Un test de integración nos permite comprobar la integración entre varios
componentes o módulos de nuestro software.
● Permite comprobar la integración entres distintos módulos de nuestra
solución.
● Permita comprobar la integración con sistemas de terceros.
○ Sistemas de Mensajería JMS
○ Base de datos
○ Notificaciones
○ Etc
App
Mod. 1
Mod. 2
App
Mod. 1
Mod. 2
App
Mod. 1
Mod. 2
![Page 12: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/12.jpg)
Conceptos
Un test funcional es una prueba basada en la ejecución, revisión y
retroalimentación de las funcionalidades previamente diseñadas para el
software (requisitos).
● Suelen formar parte de un plan de pruebas que puede ir ligado a la
aceptación.
● Generan informes con el resultado de ejecución de las pruebas.
● Están escritos en lenguaje “normal”, sin tecnicismos.
○ Ej: “Cuando un usuario de administración se registre en la aplicación
deberá ver todos sus expedientes pendientes.”
![Page 13: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/13.jpg)
Conceptos
● Mediante las herramientas adecuadas se pueden automatizar
App
a=3 b=4
res = 7
![Page 14: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/14.jpg)
Conceptos
● Mediante las herramientas adecuadas se pueden automatizar
App
a=3 b=4
res = 7
App
a=3 b=4
res = 7
![Page 15: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/15.jpg)
Conceptos
La cobertura de código es una medida (porcentual) que indica la cantidad de
código fuente abarcado por los test ejecutados contra nuestro proyecto.
Permite :
● Conocer cuánto porcentaje del código está probado.
● Detectar código no testeado.
● Fijar un porcentaje sobre el cual una entrega o proyecto puede ser
considerado “NO APTO”.
○ Ej: “El grado de cobertura de código debe superar el 60%”
![Page 16: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/16.jpg)
Integración Continua
Punto de partida sin integración continua :
● Los equipos trabajan de forma aislada sobre el mismo código
● Cuanto más tiempo pasan sin realizar entregas de código, más difieren las
versiones entre unos y otros
● Estas situaciones pueden dar lugar al llamado “integration hell”, en el que
se ha de dedicar mucho tiempo a integrar las distintas ramas de código.
○ ¿Qué sucede cuando alguien del equipo hace un commit con errores a
las 20:00? ¿Problema de mi yo del mañana?
![Page 17: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/17.jpg)
Integración Continua
¿Qué és?
● Práctica de desarrollo software donde los miembros del equipo integran
su trabajo frecuentemente, al menos una vez al día.
● En cada integración, se realiza lo siguiente:
○ Construcción automática de la aplicación
○ Ejecución de pruebas automáticas.
○ Comprobación de la calidad del software a través de métricas
predefinidas.
● Abarca todo el ciclo de vida de construcción de la solución:
○ Compilación -> Test Unitarios -> Test Integración -> Test Funcionales -
> Test QA -> Despliegue (puesta producción)
![Page 18: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/18.jpg)
Equipos de desarrollo
Control de versiones
Construcción automática
Tests unitarios
Análisis de código
Provisionamiento y despliegue de la aplicación
Tests Integración Tests funcionales
Reportes
Este flujo de trabajo se realiza en cada entrega al repositorio
Integración Continua
![Page 19: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/19.jpg)
Integración Continua
● Se puede realizar sin intervención humana
○ Cada fase se realiza mediante herramientas automatizadas
● Cada ciclo genera informes que son almacenados para su consulta en
base a:
○ las métricas del software,
○ las pruebas unitarias,
○ los test de integración.
● Las tareas de construcción son orquestadas y mantenidas por el servidor
de Integración continua.
Sistematización Automatización Detección temprana Errores
![Page 20: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/20.jpg)
Mejores prácticas
● Mantener un solo repositorio, con ramas.
● Automatizar la construcción
● Hacerla auto-testeable
● Todo el mundo entrega el código todos los días
● Notificaciones instantáneas
● Está permitido cometer errores
● Las pruebas se realizan en un clon de producción
● Hacer fácil la obtención de los entregables
● Visibilidad de las builds
● Automatizar el despliegue
![Page 21: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/21.jpg)
Beneficios generales
● Reduce tiempo, coste y retrabajos al evitar los “integration hells”
● Proporciona feedback rápido del impacto en el proyecto de los cambios
realizados
● El proceso comprueba la calidad del software constantemente lo que
permite asegurar la calidad del producto en base a su consistencia
● Permite evaluar la mejora/empeoramiento del producto
● Detección y notificación temprana de errores
● Permite la refactorización del código con mayores garantías
“Continuous Integration doesn’t get rid of bugs, but it does make them
dramatically easier to find and remove.”
Martin Fowler, Chief Scientist, ThoughtWorks
![Page 22: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/22.jpg)
Beneficios generales
● Los errores son detectados con mayor rapidez y solucionados con poca
inversión.
● Evita el “caos del último minuto” en la fecha de entrega
● Facilita poder revertir código a una versión estable (la última)
● Versión funcional siempre disponible para los stakeholders
● La frecuencia de las entregas fuerza al desarrollo de aplicaciones más
modulares con código menos complejo y más modular.
![Page 23: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/23.jpg)
Beneficios de las pruebas automáticas
● Fuerza la disciplina y buena práctica de probar a menudo de manera
automática
● Feedback automático y continuo del impacto en todo el sistema de
cambios localizados
● Facilita y agiliza la corrección de problemas durante el desarrollo
● Las métricas generadas dan feedback inmediato a los desarrolladores
● Todas las pruebas automáticas se convierten en pruebas de regresión
![Page 24: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/24.jpg)
Continuous delivery (entregas continuas)
● Práctica que permite tener siempre disponible un producto que cumple
con las normas de calidad impuestas
● Estabilización temprana del código. Al hacer deliver en cada push, el
código ha de ser estable.
● La aplicación está construida y lista para desplegar manualmente
● Evita cuellos de botella en puestas en marcha simultáneas
○ En algunos entornos se compilan todas las apps en la puesta en
marcha
○ La ventana de tiempo disponible es pequeña
![Page 25: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/25.jpg)
Continuous deployment (despliegues continuos)
● Práctica de realizar la puesta en marcha “en producción” de un producto
de forma automática si pasa todo el ciclo de calidad previsto
● Las pruebas automáticas deben cubrir el 100% de los casos
● Difícil de conseguir con aplicaciones con muchas dependencias externas
● Monitorización automática en producción de la puesta en marcha
● Empleado en empresas muy enfocadas a la tecnología
● El tiempo desde la programación hasta la puesta en marcha se reduce a
horas
![Page 26: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/26.jpg)
Introducción ConceptosHerramientasCI en ArquitecturaPráctica
Agenda
![Page 27: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/27.jpg)
Herramientas: Maven
● Herramienta para la gestión y construcción de
aplicaciones.
● Facilita la gestión del ciclo de construcción de
proyectos software.
● Permite la reutilización de la lógica de
construcción.
● Gestión de librerías y dependencias entre
módulos y proyectos.
● Gran cantidad de plugins disponibles.
![Page 28: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/28.jpg)
Herramientas: Subversion / GIT
● Herramienta de control de versiones y
repositorio de código fuente.
● Sistema centralizado.
● Gestión de históricos de los cambios realizados
sobre los ficheros.
● Facilita la ramificación de los proyectos.
● Permite etiquetar los proyectos y su
versionamiento.
![Page 29: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/29.jpg)
Herramientas: Nexus
● Sistema de control y almacenamiento de
librerías o artefactos.
● Permite centralizar en un único punto la
gestión de las dependencias.
● Sirve como repositorio donde instalar los
artefactos generados por los proyectos.
● Permite versionado de artefactos.
● Gestiona los dos estados de desarrollo de un
artefacto (snapshot y release).
![Page 30: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/30.jpg)
Herramientas: Nexus
![Page 31: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/31.jpg)
Herramientas: Jenkins
● Herramienta de integración continua.
● Identifica las distintas tareas en jobs.
● Mantiene un histórico de la ejecución y el
resultado de los mismos.
● Los jobs son altamente configurables,
permitiendo lanzar desde compilaciones de
aplicaciones java, android, iOs, hasta deploys
contra servidores de aplicaciones.
● Notifica a los afectados en caso de
eventualidades.
● Monitorización de resultados.
● Enorme cantidad de plugins disponible.
![Page 32: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/32.jpg)
Herramientas: Jenkins
![Page 33: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/33.jpg)
Herramientas: Jenkins
![Page 34: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/34.jpg)
Herramientas: Jenkins
![Page 35: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/35.jpg)
Herramientas: Sonarqube
● Herramienta utilizada para evaluar la calidad del
software.
● Recopila, analiza y permite visualizar las métricas de
la calidad del software.
● Realiza análisis estático del código en función de
unas reglas configurables y ampliables.
● Nos permite conocer el porcentaje de cumplimiento
de las reglas en los proyectos.
● Monitoriza la evolución de la calidad.
![Page 36: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/36.jpg)
Herramientas: Sonar
![Page 37: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/37.jpg)
Herramientas: TestLink
● Herramienta de gestión de pruebas
● Afianza la calidad del software
● Permite crear y gestionar casos de prueba
● Organiza los casos de prueba en planes de
pruebas
● Gestiona y publica los resultados de los
test
● Trazabilidad con los requisitos
![Page 38: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/38.jpg)
Herramientas: TestLink
![Page 39: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/39.jpg)
Herramientas: Sahi
● Herramienta para la automatización de
pruebas de capa vista.
● Permite la grabación de casos de prueba y
la posterior reproducción.
● Permite ampliar la funcionalidad mediante
scripts.
● Generación de informes detallados.
● Versiones para los sistemas operativos y
navegadores más conocidos.
● Integrado con Jenkins para lanzar la
ejecución de las pruebas desde las tareas.
![Page 40: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/40.jpg)
Herramientas: Sahi
![Page 41: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/41.jpg)
Herramientas gestión: Visual Management
● Herramienta de gestión de tareas.
● Panel de visualización de tareas basado
en Kanban
● Basada en metodología ágil.
● Permite tener una visión global del
estado del proyecto y responder
ágilmente ante eventualidades.
● Integrado con las herramientas
corporativas para la gestión del
proyecto (Teamforge y logbook).
![Page 42: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/42.jpg)
Herramientas gestión: Visual Management
![Page 43: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/43.jpg)
Introducción ConceptosHerramientasCI en ArquitecturaPráctica
Agenda
![Page 44: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/44.jpg)
CI en Arquitectura
Desarrollador
![Page 45: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/45.jpg)
CI en Arquitectura
Desarrollador
Control de versiones
![Page 46: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/46.jpg)
CI en Arquitectura
Desarrollador
Control de versiones
Compilación
![Page 47: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/47.jpg)
CI en Arquitectura
Desarrollador
Control de versiones
Compilación
Test Unitarios
![Page 48: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/48.jpg)
CI en Arquitectura
Desarrollador
Control de versiones
Compilación
Control de calidad
Test Unitarios
![Page 49: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/49.jpg)
CI en Arquitectura
Desarrollador
Control de versiones
Compilación
Deploy PreITG
Control de calidad
Test Unitarios
![Page 50: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/50.jpg)
CI en Arquitectura
Desarrollador
Control de versiones
Compilación
Deploy PreITG
Test Integración
Control de calidad
Test Unitarios
Análisis código
Publica documentación
Despliega aplicaciones
Instala librerías
![Page 51: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/51.jpg)
Sahi
![Page 52: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/52.jpg)
Infraestructura CI
● Los entornos de integración continua tienen detrás una infraestructura adaptada a la complejidad de las soluciones que integre.
● La complejidad puede variar desde la ejecución de los test, siendo este punto el más simple, hasta la creación completa de entornos con herramientas de aprovisionamiento.
![Page 53: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/53.jpg)
Infraestructura CI
5 Servidores29 VMs
![Page 54: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/54.jpg)
IBM
![Page 55: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/55.jpg)
Cisco
![Page 56: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/56.jpg)
Preguntas
![Page 57: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/57.jpg)
Introducción ConceptosHerramientasCI en ArquitecturaPráctica
Agenda
![Page 58: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/58.jpg)
Demo
● Proyecto FWK3 entorno local
● Tarea Jenkins asociada a proyecto
○ Commit erróneo
● Sonar FWK3
● Deploy Nexus FWK3
● Informes Generados
● Documentación publicada
![Page 59: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/59.jpg)
Práctica ejercicios Testing
https://github.com/joseripla/uvtesting
![Page 61: Testing + Integración continua](https://reader033.vdocuments.pub/reader033/viewer/2022052606/586f5ec31a28abf0508bd832/html5/thumbnails/61.jpg)
www.capgemini.com