SlideShare una empresa de Scribd logo
21 días haciendo Tests
en un proyecto entregado y en otro de mantenimiento
“Estos y muchos otros fenómenos observados
comúnmente tienden a mostrar que se requiere
de un mínimo de 21 días para que una imagen
mental establecida desaparezca y cuaje una
nueva”
Maxwell Maltz (1889 -1975)
Psycho-Cybernetics
El reloj de oro
> mvn clean package -DskipTests
El proyecto Entregado
El proyecto Entregado
El Escenario
- Aplicación web monolito modular
- Producción posterior a 2015
- Documentación, presente!
- Estable: Incidencias tipo error < 3 / mes
- Test: definidos por los desarrolladores
- CI / Sonar
- > 50.000 LOC
- Cobertura es <<<< 80 %
- Technical Debt < 1 mes
- Complexities < 3000
- Código duplicado > 4 %
El proyecto Entregado
El compromiso
- Evolutivo clave a nivel de negocio
- Cumplir 888 casos de prueba
- Más cobertura, ...
- … bajar la deuda técnica,
- … y tiene que estar para ya !!!
El proyecto Entregado
Enfoque 1
- Cobertura rápida ??? Sí claro por
supuesto !!!
Técnica 1
- Con Jacoco de copiloto, hasta el
infinito y más allá !!!!
El proyecto Entregado
Conclusiones 1
- El Enfoque 1 no tiene ningún sentido, o
sí, pero no es funcional
- Tope cobertura y crackdown en el
mismo día, el #defectoWallstreet
- Sensibles a los cambios en la capa de
presentación
- Solo para testeo de funcionalidades
completas
El proyecto Entregado
Conclusiones 1
- Dependencia total del entorno y
recursos
- Mucho tiempo invertido en capacitar los
tests
- Tiempo de ejecución >= 3 horas
- Planificación para pasarlos mientras
desarrollo
El proyecto Entregado
Enfoque 2
- Keep calm y veamos lo que tenemos:
- Código mayormente sin cobertura
- Aparentemente fácil de testear
- Estrategia Test poco definida
- Herramientas de test
Técnica 2
- Uso herramientas test disponibles en el
proyecto
El proyecto Entregado
Conclusiones 2
- Métodos private y static no son
testeables
- Necesito del contexto: Servicios y
Repositorios
- Falsos negativos causa ajena
- Dependencia de datos y entorno
- Mucho tiempo para construir los tests
- Tiempo de ejecución << 1 hora
- Ejecución ‘más accesible’ mientras
desarrollo
El proyecto Entregado
Enfoque 3
- Que nos falta
- Eliminar la dependencia del entorno
- Llamadas a servicios y repositorios
- Private, Static y otros no testeables
- Reducir drásticamente el tiempo de ejecución
Técnica 3:
- Selección de las ‘mejores’ herramientas
El proyecto Entregado
Conclusiones 3
- Herramientas:
- TestMe
- Mockito
- PowerMockito
- Beanmother
- Fixture-Factory
- Refactorizar (privados, statics y otros)
- Definición de estrategia test
- Disminuye el tiempo de creación por test
- La cobertura aumenta de ‘modo natural’
El proyecto Entregado
Finalmente
- Se han automatizado los 888 casos de
prueba
- La cobertura aumenta de forma natural
y con sentido
- Aplicación se completa
- Promoción y formación del equipo de
mantenimiento en la cultura test
El proyecto Entregado
Finalmente
- Los test de la estrategia 1 son los
actuales test funcionales
- Los test de la estrategia 2 son los
actuales test de integración
- Los test de la estrategia 3 son los
actuales test unitarios
- Los test se lanzan a demanda
- CI tiene opciones para testar la
aplicación a conveniencia
El proyecto de Mantenimiento
El proyecto de Mantenimiento
El Escenario A
- Aplicación web monolito pseudo modular
- Documentación por recopilación
- En producción posterior a 2010
- Estable, incidencias tipo error < 2 / semana
- Test de integración
- CI / Sonar
- 50.000 LOC
- Cobertura > 70 %
- Technical Debt < 15 días
- Complexities < 5000
- Código duplicado < 15 %
El proyecto de Mantenimiento
El Escenario Z
- Aplicación web monolito pseudo modular
- Documentación por reflexión
- En producción anterior a 2010
- Estable, incidencias tipo error < 5 / semana
- Test sin mantenimiento
- CI / Sonar
- LOC >>>> 50.000
- Cobertura es <<<< 80 %
- Technical Debt >>> 1000 días
- 60.000 < Complexities < 120.000
- Código duplicado < 30 %
El proyecto de Mantenimiento
El compromiso
- Resolver incidencias: errores y soportes
- Evolutivos alcance diverso
- Respetar la convención de arquitectura
- CI / Sonar
- Reducir la deuda técnica
- Iguala o mejora de las métricas principales
- Capacitación para la automatización
El proyecto de Mantenimiento
Enfoque 1
- Incidencias: Errores y Soportes
- Conocimiento limitado sobre procesos
- Descripción en ‘negolenguaje’
- Priorizadas por el usuario
- Evolutivos
- Documentación funcional
- Desarrollo y pruebas
Técnica 1
- Solicitar info y datos para reproducir el
proceso y depurar #likeAPro !!!
El proyecto de Mantenimiento
Conclusiones 1
- El enfoque 1 no tiene ningún sentido, es
una completa pérdida de tiempo!!!
- Pruebas de dudosa repetibilidad
- Falsos negativos (datos muy concretos)
- Dependendencia de terceras personas
- Mucho tiempo invertido en capacitar las
pruebas
- Tiempo de ejecución indeterminado
- Imposible (o casi) ejecutar mientras se
desarrolla
El proyecto de Mantenimiento
Enfoque 2
- Incidencias: Errores y Soportes
- Absoluta dependencia de datos
- Private, Static y otros no testeables
- Evolutivos:
- Dependencia de datos
Técnica 2
- Crear tests de integración
El proyecto de Mantenimiento
Conclusiones 2
- Los métodos private y static no son
testables directamente
- Llamadas a servicios y repositorios
requieren levantar la aplicación
- Falsos negativos: problemas en la
instancia, servicios, base de datos
- Se requieren datos y entorno para soportar
los tests
- Mucho tiempo para construir los tests
- Ejecución parcial durante el desarrollo
El proyecto de Mantenimiento
Enfoque 3
- Incidencias: Errores y Soportes
- Identificación unitaria de procesos
- Análisis entrada - salida #depurando
- Evolutivos:
- Documento funcional como fuente de datos
- Código fuente como planos de datos
Técnica 3
- Crear tests unitarios y mocks
El proyecto de Mantenimiento
Conclusiones 3
- Testeamos con herramientas adecuadas:
- TestMe
- Mockito
- PowerMockito
- Ahora con más de Mocks!!!
- Independencia de contexto, entorno, o
datos
- Reducción de tiempo creación de tests
- Ejecución disponible durante el desarrollo
El proyecto de Mantenimiento
Finalmente
- Resolvemos incidencias más rápido
- Aplicación se va completando
- Soporte Test de procesos aplicación
- Creación de cultura del test
- Formación de equipo mantenimiento
- Aumento de confianza del grupo
- Destierro de las tradiciones manuales
- Mayor independencia
Enfoque Test + Código legacy = PERFECTO!!!
… lo que he aprendido
- Hacer test es amor <3
- Conocimiento técnico aplicación
- Lanzar cualquier parte de la aplicación
- Reducción dependencias: datos, entorno...
- Detectar más errores
- El precio de la Cobertura
- Los test también son diseño
… lo que he cambiado
- Planteamiento de tareas desde el test
- Mejor de diseño, #testenabled
- Lanzar ‘esa’ parte de la aplicación
- Pruebo mejor el código que escribo
- Independencia de preparados de datos
- Análisis estático de mi código
- Solicito testear en el desarrollo
- Depurar alterando los valores no es test
- Repulsión por las tareas no automatizadas
prueba != test
- Hablo de tests
> mvn clean package
El reloj de oro
IDEA Y GUIÓN
DIRECCIÓN
FIXES & BUGS
AMBIENTACIÓN
CRÉDITOS IMÁGENES
POSTPRODUCCIÓN
EXTRAS Y DOBLES
PRESENTADO EN
GRUPO INFO
EVENTO
manu garcia
Dev & QA
manu garcia
Jose Juan
Pulp Fiction
https://www.imdb.com/title/tt0110912/
A Band a Part
manu garcia as himself
GDG TOLEDO
meetup.com/gdgtoledo_es
meetup.com/gdgtoledo_es/events/254795881
CONTACTO
TWITTER
GITHUB
LINKEDIN
manu@developia.info
@manudevelopia
github.com/ManuDevelopia
linkedin.com/in/manugarciarodriguez
manu garcia
desarrollador software
#analysis #CI #codeclean #test #bestpractices
#java #javascript #groovy #golang

Más contenido relacionado

Similar a 21 días haciendo tests (lo que he aprendido)

2011 1 administración-de_proyectos_informáticos_tema-03_caceres_meza_jack_daniel
2011 1 administración-de_proyectos_informáticos_tema-03_caceres_meza_jack_daniel2011 1 administración-de_proyectos_informáticos_tema-03_caceres_meza_jack_daniel
2011 1 administración-de_proyectos_informáticos_tema-03_caceres_meza_jack_daniel
Jack Daniel Cáceres Meza
 
CA Lisa: virtualizacion de servicios
CA Lisa: virtualizacion de serviciosCA Lisa: virtualizacion de servicios
CA Lisa: virtualizacion de servicios
Urena Nicolas
 
PMBOK
PMBOKPMBOK
Comunicación Gestión y Tecnologia Para Análisis De Incidentes
Comunicación Gestión y Tecnologia Para Análisis De IncidentesComunicación Gestión y Tecnologia Para Análisis De Incidentes
Comunicación Gestión y Tecnologia Para Análisis De Incidentes
sarestrep
 
Trabajo final de administracion
Trabajo final de administracionTrabajo final de administracion
Trabajo final de administracionIvan Martinez
 
Ciclo Vida del Software
Ciclo Vida del SoftwareCiclo Vida del Software
Ciclo Vida del Software
Wilfredo Mogollón
 
EGobix - Acta de Constitucion Software de Vigilancia
EGobix - Acta de Constitucion Software de VigilanciaEGobix - Acta de Constitucion Software de Vigilancia
EGobix - Acta de Constitucion Software de Vigilancia
Ministerio de Justicia del Peru
 
Portafolio de Introducción a la Gerencia de Proyectos.
Portafolio de Introducción a la Gerencia de Proyectos.Portafolio de Introducción a la Gerencia de Proyectos.
Portafolio de Introducción a la Gerencia de Proyectos.
Raynilda Ortega Calcaño
 
Ucv sesion 15 diseño optimiz -redes
Ucv sesion 15 diseño optimiz -redesUcv sesion 15 diseño optimiz -redes
Ucv sesion 15 diseño optimiz -redesTaringa!
 
Introducción al proceso unificado de desarrollo de software en Curso de Anali...
Introducción al proceso unificado de desarrollo de software en Curso de Anali...Introducción al proceso unificado de desarrollo de software en Curso de Anali...
Introducción al proceso unificado de desarrollo de software en Curso de Anali...
Educagratis
 
UPCnet: la implantación del Moodle como Campus Virtual en la universidad
UPCnet: la implantación del Moodle como Campus Virtual en la universidadUPCnet: la implantación del Moodle como Campus Virtual en la universidad
UPCnet: la implantación del Moodle como Campus Virtual en la universidad
CRISEL BY AEFOL
 
Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales
atSistemas
 
Scrum en el proyecto
Scrum en el proyectoScrum en el proyecto
Scrum en el proyecto
Giovanni Hernandez
 
Scrum en el proyecto
Scrum en el proyectoScrum en el proyecto
Scrum en el proyecto
Giovanni Hernandez
 
Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación
Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animaciónLenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación
Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación
Luis Fernando Aguas Bucheli
 
Implementacion del departamento de help desk marvin zumbado
Implementacion del departamento de help desk   marvin zumbadoImplementacion del departamento de help desk   marvin zumbado
Implementacion del departamento de help desk marvin zumbadoMarvin Zumbado
 
Gestion de proyectos informaticos 2013 2
Gestion de proyectos informaticos 2013 2Gestion de proyectos informaticos 2013 2
Gestion de proyectos informaticos 2013 2
Virginia Polcan
 
Curso Lideres de Procesos.ppt
Curso Lideres de Procesos.pptCurso Lideres de Procesos.ppt
Curso Lideres de Procesos.ppt
Boris518712
 
soporte.ppt
soporte.pptsoporte.ppt
soporte.ppt
LadyOviedo1
 

Similar a 21 días haciendo tests (lo que he aprendido) (20)

2011 1 administración-de_proyectos_informáticos_tema-03_caceres_meza_jack_daniel
2011 1 administración-de_proyectos_informáticos_tema-03_caceres_meza_jack_daniel2011 1 administración-de_proyectos_informáticos_tema-03_caceres_meza_jack_daniel
2011 1 administración-de_proyectos_informáticos_tema-03_caceres_meza_jack_daniel
 
CA Lisa: virtualizacion de servicios
CA Lisa: virtualizacion de serviciosCA Lisa: virtualizacion de servicios
CA Lisa: virtualizacion de servicios
 
PMBOK
PMBOKPMBOK
PMBOK
 
Comunicación Gestión y Tecnologia Para Análisis De Incidentes
Comunicación Gestión y Tecnologia Para Análisis De IncidentesComunicación Gestión y Tecnologia Para Análisis De Incidentes
Comunicación Gestión y Tecnologia Para Análisis De Incidentes
 
Trabajo final de administracion
Trabajo final de administracionTrabajo final de administracion
Trabajo final de administracion
 
Ir ok
Ir okIr ok
Ir ok
 
Ciclo Vida del Software
Ciclo Vida del SoftwareCiclo Vida del Software
Ciclo Vida del Software
 
EGobix - Acta de Constitucion Software de Vigilancia
EGobix - Acta de Constitucion Software de VigilanciaEGobix - Acta de Constitucion Software de Vigilancia
EGobix - Acta de Constitucion Software de Vigilancia
 
Portafolio de Introducción a la Gerencia de Proyectos.
Portafolio de Introducción a la Gerencia de Proyectos.Portafolio de Introducción a la Gerencia de Proyectos.
Portafolio de Introducción a la Gerencia de Proyectos.
 
Ucv sesion 15 diseño optimiz -redes
Ucv sesion 15 diseño optimiz -redesUcv sesion 15 diseño optimiz -redes
Ucv sesion 15 diseño optimiz -redes
 
Introducción al proceso unificado de desarrollo de software en Curso de Anali...
Introducción al proceso unificado de desarrollo de software en Curso de Anali...Introducción al proceso unificado de desarrollo de software en Curso de Anali...
Introducción al proceso unificado de desarrollo de software en Curso de Anali...
 
UPCnet: la implantación del Moodle como Campus Virtual en la universidad
UPCnet: la implantación del Moodle como Campus Virtual en la universidadUPCnet: la implantación del Moodle como Campus Virtual en la universidad
UPCnet: la implantación del Moodle como Campus Virtual en la universidad
 
Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales
 
Scrum en el proyecto
Scrum en el proyectoScrum en el proyecto
Scrum en el proyecto
 
Scrum en el proyecto
Scrum en el proyectoScrum en el proyecto
Scrum en el proyecto
 
Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación
Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animaciónLenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación
Lenguajes de Programación: Hilos, Ciclos de Vida, sincronización, animación
 
Implementacion del departamento de help desk marvin zumbado
Implementacion del departamento de help desk   marvin zumbadoImplementacion del departamento de help desk   marvin zumbado
Implementacion del departamento de help desk marvin zumbado
 
Gestion de proyectos informaticos 2013 2
Gestion de proyectos informaticos 2013 2Gestion de proyectos informaticos 2013 2
Gestion de proyectos informaticos 2013 2
 
Curso Lideres de Procesos.ppt
Curso Lideres de Procesos.pptCurso Lideres de Procesos.ppt
Curso Lideres de Procesos.ppt
 
soporte.ppt
soporte.pptsoporte.ppt
soporte.ppt
 

Último

Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
Federico Toledo
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
oscartorres960914
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
cuentauniversidad34
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
lasocharfuelan123
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
RobertSotilLujn
 

Último (10)

Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
 

21 días haciendo tests (lo que he aprendido)

  • 1. 21 días haciendo Tests en un proyecto entregado y en otro de mantenimiento
  • 2. “Estos y muchos otros fenómenos observados comúnmente tienden a mostrar que se requiere de un mínimo de 21 días para que una imagen mental establecida desaparezca y cuaje una nueva” Maxwell Maltz (1889 -1975) Psycho-Cybernetics
  • 4. > mvn clean package -DskipTests
  • 6. El proyecto Entregado El Escenario - Aplicación web monolito modular - Producción posterior a 2015 - Documentación, presente! - Estable: Incidencias tipo error < 3 / mes - Test: definidos por los desarrolladores - CI / Sonar - > 50.000 LOC - Cobertura es <<<< 80 % - Technical Debt < 1 mes - Complexities < 3000 - Código duplicado > 4 %
  • 7. El proyecto Entregado El compromiso - Evolutivo clave a nivel de negocio - Cumplir 888 casos de prueba - Más cobertura, ... - … bajar la deuda técnica, - … y tiene que estar para ya !!!
  • 8. El proyecto Entregado Enfoque 1 - Cobertura rápida ??? Sí claro por supuesto !!! Técnica 1 - Con Jacoco de copiloto, hasta el infinito y más allá !!!!
  • 9. El proyecto Entregado Conclusiones 1 - El Enfoque 1 no tiene ningún sentido, o sí, pero no es funcional - Tope cobertura y crackdown en el mismo día, el #defectoWallstreet - Sensibles a los cambios en la capa de presentación - Solo para testeo de funcionalidades completas
  • 10. El proyecto Entregado Conclusiones 1 - Dependencia total del entorno y recursos - Mucho tiempo invertido en capacitar los tests - Tiempo de ejecución >= 3 horas - Planificación para pasarlos mientras desarrollo
  • 11. El proyecto Entregado Enfoque 2 - Keep calm y veamos lo que tenemos: - Código mayormente sin cobertura - Aparentemente fácil de testear - Estrategia Test poco definida - Herramientas de test Técnica 2 - Uso herramientas test disponibles en el proyecto
  • 12. El proyecto Entregado Conclusiones 2 - Métodos private y static no son testeables - Necesito del contexto: Servicios y Repositorios - Falsos negativos causa ajena - Dependencia de datos y entorno - Mucho tiempo para construir los tests - Tiempo de ejecución << 1 hora - Ejecución ‘más accesible’ mientras desarrollo
  • 13. El proyecto Entregado Enfoque 3 - Que nos falta - Eliminar la dependencia del entorno - Llamadas a servicios y repositorios - Private, Static y otros no testeables - Reducir drásticamente el tiempo de ejecución Técnica 3: - Selección de las ‘mejores’ herramientas
  • 14. El proyecto Entregado Conclusiones 3 - Herramientas: - TestMe - Mockito - PowerMockito - Beanmother - Fixture-Factory - Refactorizar (privados, statics y otros) - Definición de estrategia test - Disminuye el tiempo de creación por test - La cobertura aumenta de ‘modo natural’
  • 15. El proyecto Entregado Finalmente - Se han automatizado los 888 casos de prueba - La cobertura aumenta de forma natural y con sentido - Aplicación se completa - Promoción y formación del equipo de mantenimiento en la cultura test
  • 16. El proyecto Entregado Finalmente - Los test de la estrategia 1 son los actuales test funcionales - Los test de la estrategia 2 son los actuales test de integración - Los test de la estrategia 3 son los actuales test unitarios - Los test se lanzan a demanda - CI tiene opciones para testar la aplicación a conveniencia
  • 17. El proyecto de Mantenimiento
  • 18. El proyecto de Mantenimiento El Escenario A - Aplicación web monolito pseudo modular - Documentación por recopilación - En producción posterior a 2010 - Estable, incidencias tipo error < 2 / semana - Test de integración - CI / Sonar - 50.000 LOC - Cobertura > 70 % - Technical Debt < 15 días - Complexities < 5000 - Código duplicado < 15 %
  • 19. El proyecto de Mantenimiento El Escenario Z - Aplicación web monolito pseudo modular - Documentación por reflexión - En producción anterior a 2010 - Estable, incidencias tipo error < 5 / semana - Test sin mantenimiento - CI / Sonar - LOC >>>> 50.000 - Cobertura es <<<< 80 % - Technical Debt >>> 1000 días - 60.000 < Complexities < 120.000 - Código duplicado < 30 %
  • 20. El proyecto de Mantenimiento El compromiso - Resolver incidencias: errores y soportes - Evolutivos alcance diverso - Respetar la convención de arquitectura - CI / Sonar - Reducir la deuda técnica - Iguala o mejora de las métricas principales - Capacitación para la automatización
  • 21. El proyecto de Mantenimiento Enfoque 1 - Incidencias: Errores y Soportes - Conocimiento limitado sobre procesos - Descripción en ‘negolenguaje’ - Priorizadas por el usuario - Evolutivos - Documentación funcional - Desarrollo y pruebas Técnica 1 - Solicitar info y datos para reproducir el proceso y depurar #likeAPro !!!
  • 22. El proyecto de Mantenimiento Conclusiones 1 - El enfoque 1 no tiene ningún sentido, es una completa pérdida de tiempo!!! - Pruebas de dudosa repetibilidad - Falsos negativos (datos muy concretos) - Dependendencia de terceras personas - Mucho tiempo invertido en capacitar las pruebas - Tiempo de ejecución indeterminado - Imposible (o casi) ejecutar mientras se desarrolla
  • 23. El proyecto de Mantenimiento Enfoque 2 - Incidencias: Errores y Soportes - Absoluta dependencia de datos - Private, Static y otros no testeables - Evolutivos: - Dependencia de datos Técnica 2 - Crear tests de integración
  • 24. El proyecto de Mantenimiento Conclusiones 2 - Los métodos private y static no son testables directamente - Llamadas a servicios y repositorios requieren levantar la aplicación - Falsos negativos: problemas en la instancia, servicios, base de datos - Se requieren datos y entorno para soportar los tests - Mucho tiempo para construir los tests - Ejecución parcial durante el desarrollo
  • 25. El proyecto de Mantenimiento Enfoque 3 - Incidencias: Errores y Soportes - Identificación unitaria de procesos - Análisis entrada - salida #depurando - Evolutivos: - Documento funcional como fuente de datos - Código fuente como planos de datos Técnica 3 - Crear tests unitarios y mocks
  • 26. El proyecto de Mantenimiento Conclusiones 3 - Testeamos con herramientas adecuadas: - TestMe - Mockito - PowerMockito - Ahora con más de Mocks!!! - Independencia de contexto, entorno, o datos - Reducción de tiempo creación de tests - Ejecución disponible durante el desarrollo
  • 27. El proyecto de Mantenimiento Finalmente - Resolvemos incidencias más rápido - Aplicación se va completando - Soporte Test de procesos aplicación - Creación de cultura del test - Formación de equipo mantenimiento - Aumento de confianza del grupo - Destierro de las tradiciones manuales - Mayor independencia Enfoque Test + Código legacy = PERFECTO!!!
  • 28. … lo que he aprendido - Hacer test es amor <3 - Conocimiento técnico aplicación - Lanzar cualquier parte de la aplicación - Reducción dependencias: datos, entorno... - Detectar más errores - El precio de la Cobertura - Los test también son diseño
  • 29. … lo que he cambiado - Planteamiento de tareas desde el test - Mejor de diseño, #testenabled - Lanzar ‘esa’ parte de la aplicación - Pruebo mejor el código que escribo - Independencia de preparados de datos - Análisis estático de mi código - Solicito testear en el desarrollo - Depurar alterando los valores no es test - Repulsión por las tareas no automatizadas prueba != test - Hablo de tests
  • 30. > mvn clean package
  • 31. El reloj de oro
  • 32. IDEA Y GUIÓN DIRECCIÓN FIXES & BUGS AMBIENTACIÓN CRÉDITOS IMÁGENES POSTPRODUCCIÓN EXTRAS Y DOBLES PRESENTADO EN GRUPO INFO EVENTO manu garcia Dev & QA manu garcia Jose Juan Pulp Fiction https://www.imdb.com/title/tt0110912/ A Band a Part manu garcia as himself GDG TOLEDO meetup.com/gdgtoledo_es meetup.com/gdgtoledo_es/events/254795881