SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
Testing en proyectos
                              Grails del día a día
                                Greach - Madrid - Enero 2013




viernes, 25 de enero de 13
¿Quién soy?

                     • @dani_latorre
                     • Jobsket, elDisparate.de, Minchador...
                     • Freelance, contractor, consultor...
                     • CachiruloValley crew

viernes, 25 de enero de 13
viernes, 25 de enero de 13
Freelance ¿ágil?

                     • Trabajo con un equipo, siempre
                     • Hay personas que usarán mi software
                     • Me creo el manifiesto
                     • Trato de aplicar los principios

viernes, 25 de enero de 13
Manifiesto ágil

                     • Individuos e interacciones   sobre procesos y herramientas



                     • Software funcionando sobre documentación extensiva



                     • Colaboración con el cliente      sobre negociación contractual



                     • Respuesta ante el cambio    sobre seguir un plan




viernes, 25 de enero de 13
¿Por qué testeo?

                     • Hacer cambios con mayor confianza
                     • Descubrir un error cuanto antes
                     • Tener trazabilidad del origen de error
                     • Escribir mejor código
                     • Mejorar la calidad

viernes, 25 de enero de 13
Tipos de tests

                     • Unitarios (JUnit y Spock)
                     • Integración (JUnit y Spock)
                     • Funcionales (Spock + Geb)
                     • Con usuarios (Manuales + analítica web)

viernes, 25 de enero de 13
Estilo de testing

                     • Testear comportamientos, no métodos
                     • Nombres autodocumentados
                     • Pensarlos en un estilo de aceptación


viernes, 25 de enero de 13
TDD

                     • Escribe un test
                     • Ejecuta los tests y mira si falla
                     • Escribe el código para que pase el test
                     • Comprobar que todos los tests pasan
                     • Limpia y refactoriza

viernes, 25 de enero de 13
Red-Green-Refactor




viernes, 25 de enero de 13
TDD as if you meant it
                     • Escribe un test lo más pequeño posible
                     • Ejecuta los tests y mira si falla
                     • Implementa la solución en el propio test
                     • Refactoriza duplicaciones. Introduce
                             métodos y clases sólo cuando mejore el
                             diseño del código.


viernes, 25 de enero de 13
Unit testing
                     • Los más rápidos y con mayor trazabilidad
                             de errores
                     • Sin el entorno de Grails
                     • Domain, services, muchos controllers y
                             algunos taglibs
                     • Groovy y Java “helpers”

viernes, 25 de enero de 13
Mocks & stubs

                     • @TestFor
                     • @Mock / mockDomain
                     • ExpandoMetaClass
                     • mockFor
                     • Spock mocks

viernes, 25 de enero de 13
Domain unit test
                     • Demo
                     • https://github.com/danilat/CachiruloHub/
                             blob/master/hub/test/unit/hub/
                             TagTests.groovy
                     • https://github.com/danilat/CachiruloHub/
                             blob/master/hub/test/unit/hub/
                             CompanyTests.groovy


viernes, 25 de enero de 13
Controller unit test


                     • En ocasiones uso los “baratos” del CRUD
                     • Demo


viernes, 25 de enero de 13
Service unit test

                     • Demo
                     • https://github.com/danilat/bitly-shortener/
                             blob/master/test/unit/com/grails/plugins/
                             bitly/BitlyServiceTests.groovy




viernes, 25 de enero de 13
TagLib unit test

                     • Demo
                     • https://github.com/danilat/bitly-shortener/
                             blob/master/test/unit/com/grails/plugins/
                             bitly/BitlyTagLibTests.groovy




viernes, 25 de enero de 13
Integration testing

                     • Pruebo más cosas (db, mensajería...)
                     • Más lentos y menor trazabilidad de error
                     • Algunos controllers, services y taglibs
                     • Casos difíciles de testear unitariamente
                             ¿mal diseñados?



viernes, 25 de enero de 13
Functional testing
                     • Test de aceptación desde el navegador
                     • Los más lentos y que menor trazabilidad de
                             error dan
                     • Son muy débiles
                     • Uso para pocos escenarios por
                             funcionalidad


viernes, 25 de enero de 13
Spock + Geb

                     • Prueba de aceptación > Spec
                     • Page Object Pattern, encapsula páginas y
                             ayuda a fortalecer test
                     • Sintaxis “tipo” jQuery
                     • Demo

viernes, 25 de enero de 13
Continuous testing

                     • Auto Test
                     • Guard
                     • Integración continua (Jenkins)


viernes, 25 de enero de 13
Análisis de código

                     • CodeNarc Plugin
                     • Test Code Coverage Plugin (Cobertura)
                     • Otros para Java: Findbugs, PMD,
                             Checkstyle...




viernes, 25 de enero de 13
¿Añadir funcionalidad?
                     • Historia/s de usuario
                     • Mockup/prototipo de baja resolución
                     • Tests unitarios/integración
                     • Tests funcionales
                     • Tests con usuario (si se hacen)
                     • Despliegue y analítica
viernes, 25 de enero de 13
¿Preguntas?




viernes, 25 de enero de 13
¿Preguntas?


                     • dani@danilat.com
                     • www.danilat.com


viernes, 25 de enero de 13

Contenu connexe

Similaire à Testing en proyectos Grails del día a día. Greach 2013

To mock or not to mock
To mock or not to mockTo mock or not to mock
To mock or not to mockEloi Poch
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturinowebcat
 
[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development TechniquesEduardo Turiño
 
Agile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvilAgile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvilagilenavarra
 
Gestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo softwareGestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo softwareLaura M. Castro
 
Estrategias de aplicación de pruebas
Estrategias de aplicación de pruebasEstrategias de aplicación de pruebas
Estrategias de aplicación de pruebasCristi Coba
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDDFran Grau
 
Pruebas Exploratorias en Entornos Ágiles
Pruebas Exploratorias en Entornos ÁgilesPruebas Exploratorias en Entornos Ágiles
Pruebas Exploratorias en Entornos ÁgilesatSistemas
 
20180313 Keep Calm And Test Your Code RiojaDotNet
20180313 Keep Calm And Test Your Code RiojaDotNet20180313 Keep Calm And Test Your Code RiojaDotNet
20180313 Keep Calm And Test Your Code RiojaDotNetalbertortizcape
 
Test doubles
Test doublesTest doubles
Test doubles540deg
 
Clean code 9
Clean code 9Clean code 9
Clean code 9540deg
 
Charla TestingUy 2019: Compartiendo el Sombrero del Testing
Charla TestingUy 2019: Compartiendo el Sombrero del TestingCharla TestingUy 2019: Compartiendo el Sombrero del Testing
Charla TestingUy 2019: Compartiendo el Sombrero del TestingClaudia Badell
 
Charla TestingUy 2019 - Compartiendo el sombrero del testing
Charla TestingUy 2019 - Compartiendo el sombrero del testingCharla TestingUy 2019 - Compartiendo el sombrero del testing
Charla TestingUy 2019 - Compartiendo el sombrero del testingTestingUy
 
ALMSaimada Testing Funcional
ALMSaimada Testing FuncionalALMSaimada Testing Funcional
ALMSaimada Testing FuncionalGlobe Testing
 
Artalde Tdd intro
Artalde Tdd introArtalde Tdd intro
Artalde Tdd introfperezplain
 

Similaire à Testing en proyectos Grails del día a día. Greach 2013 (20)

To mock or not to mock
To mock or not to mockTo mock or not to mock
To mock or not to mock
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
 
[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques
 
Gradle vs Maven
Gradle vs MavenGradle vs Maven
Gradle vs Maven
 
Agile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvilAgile university day - Un día en un equipo ágil de desarrollo móvil
Agile university day - Un día en un equipo ágil de desarrollo móvil
 
Pruebas automaticas
Pruebas automaticasPruebas automaticas
Pruebas automaticas
 
Gestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo softwareGestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo software
 
Estrategias de aplicación de pruebas
Estrategias de aplicación de pruebasEstrategias de aplicación de pruebas
Estrategias de aplicación de pruebas
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDD
 
Pruebas Exploratorias en Entornos Ágiles
Pruebas Exploratorias en Entornos ÁgilesPruebas Exploratorias en Entornos Ágiles
Pruebas Exploratorias en Entornos Ágiles
 
20180313 Keep Calm And Test Your Code RiojaDotNet
20180313 Keep Calm And Test Your Code RiojaDotNet20180313 Keep Calm And Test Your Code RiojaDotNet
20180313 Keep Calm And Test Your Code RiojaDotNet
 
U2T4 - Pruebas del Software
U2T4 - Pruebas del SoftwareU2T4 - Pruebas del Software
U2T4 - Pruebas del Software
 
Test doubles
Test doublesTest doubles
Test doubles
 
Clean code 9
Clean code 9Clean code 9
Clean code 9
 
Practicas tecnicas
Practicas tecnicasPracticas tecnicas
Practicas tecnicas
 
Prueba del sistema (1) 1
Prueba del sistema (1) 1Prueba del sistema (1) 1
Prueba del sistema (1) 1
 
Charla TestingUy 2019: Compartiendo el Sombrero del Testing
Charla TestingUy 2019: Compartiendo el Sombrero del TestingCharla TestingUy 2019: Compartiendo el Sombrero del Testing
Charla TestingUy 2019: Compartiendo el Sombrero del Testing
 
Charla TestingUy 2019 - Compartiendo el sombrero del testing
Charla TestingUy 2019 - Compartiendo el sombrero del testingCharla TestingUy 2019 - Compartiendo el sombrero del testing
Charla TestingUy 2019 - Compartiendo el sombrero del testing
 
ALMSaimada Testing Funcional
ALMSaimada Testing FuncionalALMSaimada Testing Funcional
ALMSaimada Testing Funcional
 
Artalde Tdd intro
Artalde Tdd introArtalde Tdd intro
Artalde Tdd intro
 

Plus de Dani Latorre

5 aniversario de Agile-Aragón
5 aniversario de Agile-Aragón5 aniversario de Agile-Aragón
5 aniversario de Agile-AragónDani Latorre
 
A falta de APIs buenas son tortas. XV Betabeers Zaragoza
A falta de APIs buenas son tortas. XV Betabeers ZaragozaA falta de APIs buenas son tortas. XV Betabeers Zaragoza
A falta de APIs buenas son tortas. XV Betabeers ZaragozaDani Latorre
 
Selenium como herramienta de Web Scraping
Selenium como herramienta de Web ScrapingSelenium como herramienta de Web Scraping
Selenium como herramienta de Web ScrapingDani Latorre
 
Vinalab, de visitas a clientes
Vinalab, de visitas a clientesVinalab, de visitas a clientes
Vinalab, de visitas a clientesDani Latorre
 
Cocina tu idea, crea tu producto
Cocina tu idea, crea tu productoCocina tu idea, crea tu producto
Cocina tu idea, crea tu productoDani Latorre
 
Agile Manifesto - EINA
Agile Manifesto - EINAAgile Manifesto - EINA
Agile Manifesto - EINADani Latorre
 
Como se hizo elDisparate.de
Como se hizo elDisparate.deComo se hizo elDisparate.de
Como se hizo elDisparate.deDani Latorre
 
Modulariza tus aplicaciones Grails - Springio 2012
Modulariza tus aplicaciones Grails - Springio 2012Modulariza tus aplicaciones Grails - Springio 2012
Modulariza tus aplicaciones Grails - Springio 2012Dani Latorre
 
Grails: Aumenta tu productividad en tus aplicaciones web Java
Grails: Aumenta tu productividad en tus aplicaciones web JavaGrails: Aumenta tu productividad en tus aplicaciones web Java
Grails: Aumenta tu productividad en tus aplicaciones web JavaDani Latorre
 
Optimiza tus webs Grails. Greach 2011
Optimiza tus webs Grails. Greach 2011Optimiza tus webs Grails. Greach 2011
Optimiza tus webs Grails. Greach 2011Dani Latorre
 
Opendata - TheEvnt 2011
Opendata - TheEvnt 2011Opendata - TheEvnt 2011
Opendata - TheEvnt 2011Dani Latorre
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesDani Latorre
 
Groovy Koans - SpringIO 2011
Groovy Koans - SpringIO 2011Groovy Koans - SpringIO 2011
Groovy Koans - SpringIO 2011Dani Latorre
 
GHOP - GSoC Campus Party 2008
GHOP - GSoC Campus Party 2008GHOP - GSoC Campus Party 2008
GHOP - GSoC Campus Party 2008Dani Latorre
 

Plus de Dani Latorre (16)

5 aniversario de Agile-Aragón
5 aniversario de Agile-Aragón5 aniversario de Agile-Aragón
5 aniversario de Agile-Aragón
 
A falta de APIs buenas son tortas. XV Betabeers Zaragoza
A falta de APIs buenas son tortas. XV Betabeers ZaragozaA falta de APIs buenas son tortas. XV Betabeers Zaragoza
A falta de APIs buenas son tortas. XV Betabeers Zaragoza
 
Selenium como herramienta de Web Scraping
Selenium como herramienta de Web ScrapingSelenium como herramienta de Web Scraping
Selenium como herramienta de Web Scraping
 
Vinalab, de visitas a clientes
Vinalab, de visitas a clientesVinalab, de visitas a clientes
Vinalab, de visitas a clientes
 
Cocina tu idea, crea tu producto
Cocina tu idea, crea tu productoCocina tu idea, crea tu producto
Cocina tu idea, crea tu producto
 
Agile Manifesto - EINA
Agile Manifesto - EINAAgile Manifesto - EINA
Agile Manifesto - EINA
 
Agile Manifesto
Agile ManifestoAgile Manifesto
Agile Manifesto
 
Como se hizo elDisparate.de
Como se hizo elDisparate.deComo se hizo elDisparate.de
Como se hizo elDisparate.de
 
Modulariza tus aplicaciones Grails - Springio 2012
Modulariza tus aplicaciones Grails - Springio 2012Modulariza tus aplicaciones Grails - Springio 2012
Modulariza tus aplicaciones Grails - Springio 2012
 
Grails: Aumenta tu productividad en tus aplicaciones web Java
Grails: Aumenta tu productividad en tus aplicaciones web JavaGrails: Aumenta tu productividad en tus aplicaciones web Java
Grails: Aumenta tu productividad en tus aplicaciones web Java
 
Optimiza tus webs Grails. Greach 2011
Optimiza tus webs Grails. Greach 2011Optimiza tus webs Grails. Greach 2011
Optimiza tus webs Grails. Greach 2011
 
Opendata - TheEvnt 2011
Opendata - TheEvnt 2011Opendata - TheEvnt 2011
Opendata - TheEvnt 2011
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernes
 
Groovy Koans - SpringIO 2011
Groovy Koans - SpringIO 2011Groovy Koans - SpringIO 2011
Groovy Koans - SpringIO 2011
 
Taller Grails
Taller GrailsTaller Grails
Taller Grails
 
GHOP - GSoC Campus Party 2008
GHOP - GSoC Campus Party 2008GHOP - GSoC Campus Party 2008
GHOP - GSoC Campus Party 2008
 

Dernier

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 

Dernier (20)

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 

Testing en proyectos Grails del día a día. Greach 2013

  • 1. Testing en proyectos Grails del día a día Greach - Madrid - Enero 2013 viernes, 25 de enero de 13
  • 2. ¿Quién soy? • @dani_latorre • Jobsket, elDisparate.de, Minchador... • Freelance, contractor, consultor... • CachiruloValley crew viernes, 25 de enero de 13
  • 3. viernes, 25 de enero de 13
  • 4. Freelance ¿ágil? • Trabajo con un equipo, siempre • Hay personas que usarán mi software • Me creo el manifiesto • Trato de aplicar los principios viernes, 25 de enero de 13
  • 5. Manifiesto ágil • Individuos e interacciones sobre procesos y herramientas • Software funcionando sobre documentación extensiva • Colaboración con el cliente sobre negociación contractual • Respuesta ante el cambio sobre seguir un plan viernes, 25 de enero de 13
  • 6. ¿Por qué testeo? • Hacer cambios con mayor confianza • Descubrir un error cuanto antes • Tener trazabilidad del origen de error • Escribir mejor código • Mejorar la calidad viernes, 25 de enero de 13
  • 7. Tipos de tests • Unitarios (JUnit y Spock) • Integración (JUnit y Spock) • Funcionales (Spock + Geb) • Con usuarios (Manuales + analítica web) viernes, 25 de enero de 13
  • 8. Estilo de testing • Testear comportamientos, no métodos • Nombres autodocumentados • Pensarlos en un estilo de aceptación viernes, 25 de enero de 13
  • 9. TDD • Escribe un test • Ejecuta los tests y mira si falla • Escribe el código para que pase el test • Comprobar que todos los tests pasan • Limpia y refactoriza viernes, 25 de enero de 13
  • 11. TDD as if you meant it • Escribe un test lo más pequeño posible • Ejecuta los tests y mira si falla • Implementa la solución en el propio test • Refactoriza duplicaciones. Introduce métodos y clases sólo cuando mejore el diseño del código. viernes, 25 de enero de 13
  • 12. Unit testing • Los más rápidos y con mayor trazabilidad de errores • Sin el entorno de Grails • Domain, services, muchos controllers y algunos taglibs • Groovy y Java “helpers” viernes, 25 de enero de 13
  • 13. Mocks & stubs • @TestFor • @Mock / mockDomain • ExpandoMetaClass • mockFor • Spock mocks viernes, 25 de enero de 13
  • 14. Domain unit test • Demo • https://github.com/danilat/CachiruloHub/ blob/master/hub/test/unit/hub/ TagTests.groovy • https://github.com/danilat/CachiruloHub/ blob/master/hub/test/unit/hub/ CompanyTests.groovy viernes, 25 de enero de 13
  • 15. Controller unit test • En ocasiones uso los “baratos” del CRUD • Demo viernes, 25 de enero de 13
  • 16. Service unit test • Demo • https://github.com/danilat/bitly-shortener/ blob/master/test/unit/com/grails/plugins/ bitly/BitlyServiceTests.groovy viernes, 25 de enero de 13
  • 17. TagLib unit test • Demo • https://github.com/danilat/bitly-shortener/ blob/master/test/unit/com/grails/plugins/ bitly/BitlyTagLibTests.groovy viernes, 25 de enero de 13
  • 18. Integration testing • Pruebo más cosas (db, mensajería...) • Más lentos y menor trazabilidad de error • Algunos controllers, services y taglibs • Casos difíciles de testear unitariamente ¿mal diseñados? viernes, 25 de enero de 13
  • 19. Functional testing • Test de aceptación desde el navegador • Los más lentos y que menor trazabilidad de error dan • Son muy débiles • Uso para pocos escenarios por funcionalidad viernes, 25 de enero de 13
  • 20. Spock + Geb • Prueba de aceptación > Spec • Page Object Pattern, encapsula páginas y ayuda a fortalecer test • Sintaxis “tipo” jQuery • Demo viernes, 25 de enero de 13
  • 21. Continuous testing • Auto Test • Guard • Integración continua (Jenkins) viernes, 25 de enero de 13
  • 22. Análisis de código • CodeNarc Plugin • Test Code Coverage Plugin (Cobertura) • Otros para Java: Findbugs, PMD, Checkstyle... viernes, 25 de enero de 13
  • 23. ¿Añadir funcionalidad? • Historia/s de usuario • Mockup/prototipo de baja resolución • Tests unitarios/integración • Tests funcionales • Tests con usuario (si se hacen) • Despliegue y analítica viernes, 25 de enero de 13
  • 25. ¿Preguntas? • dani@danilat.com • www.danilat.com viernes, 25 de enero de 13