Transcript
Page 1: Testing en proyectos Grails del día a día. Greach 2013

Testing en proyectos Grails del día a día

Greach - Madrid - Enero 2013

viernes, 25 de enero de 13

Page 2: Testing en proyectos Grails del día a día. Greach 2013

¿Quién soy?

• @dani_latorre

• Jobsket, elDisparate.de, Minchador...

• Freelance, contractor, consultor...

• CachiruloValley crew

viernes, 25 de enero de 13

Page 3: Testing en proyectos Grails del día a día. Greach 2013

viernes, 25 de enero de 13

Page 4: Testing en proyectos Grails del día a día. Greach 2013

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

Page 5: Testing en proyectos Grails del día a día. Greach 2013

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

Page 6: Testing en proyectos Grails del día a día. Greach 2013

¿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

Page 7: Testing en proyectos Grails del día a día. Greach 2013

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

Page 8: Testing en proyectos Grails del día a día. Greach 2013

Estilo de testing

• Testear comportamientos, no métodos

• Nombres autodocumentados

• Pensarlos en un estilo de aceptación

viernes, 25 de enero de 13

Page 9: Testing en proyectos Grails del día a día. Greach 2013

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

Page 10: Testing en proyectos Grails del día a día. Greach 2013

Red-Green-Refactor

viernes, 25 de enero de 13

Page 11: Testing en proyectos Grails del día a día. Greach 2013

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

Page 12: Testing en proyectos Grails del día a día. Greach 2013

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

Page 13: Testing en proyectos Grails del día a día. Greach 2013

Mocks & stubs

• @TestFor

• @Mock / mockDomain

• ExpandoMetaClass

• mockFor

• Spock mocks

viernes, 25 de enero de 13

Page 15: Testing en proyectos Grails del día a día. Greach 2013

Controller unit test

• En ocasiones uso los “baratos” del CRUD

• Demo

viernes, 25 de enero de 13

Page 18: Testing en proyectos Grails del día a día. Greach 2013

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

Page 19: Testing en proyectos Grails del día a día. Greach 2013

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

Page 20: Testing en proyectos Grails del día a día. Greach 2013

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

Page 21: Testing en proyectos Grails del día a día. Greach 2013

Continuous testing

• Auto Test

• Guard

• Integración continua (Jenkins)

viernes, 25 de enero de 13

Page 22: Testing en proyectos Grails del día a día. Greach 2013

Análisis de código

• CodeNarc Plugin

• Test Code Coverage Plugin (Cobertura)

• Otros para Java: Findbugs, PMD, Checkstyle...

viernes, 25 de enero de 13

Page 23: Testing en proyectos Grails del día a día. Greach 2013

¿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

Page 24: Testing en proyectos Grails del día a día. Greach 2013

¿Preguntas?

viernes, 25 de enero de 13

Page 25: Testing en proyectos Grails del día a día. Greach 2013

¿Preguntas?

[email protected]

• www.danilat.com

viernes, 25 de enero de 13


Top Related