Notas: Testing
Ponente: Jean-Michel Garnier
Antecedentes
- Mythical Month Man: 1/2 testing (1975)
- “Test Drive Development” (2002)
- “Refactoring” de Martin Fowler (1999)
- “Integración contínua” de Martin Fowler (2000)
- David Heinemeier y 37Signals
Qúe es en Rails (Ruby Test::Unit)
- automatizable
- rápido (11s, 4000 líneas, 1900 de tests)
- integración contínua
- mejora el diseño con la refactorización!
- se genera automáticamente para scaffolding
- BBDD desarrollo, test y producción
- Fixtures: datos reutilizables para test, basado en YAML
Testing
- Tests unitarios para el modelo
- Tests funcionales para el controlador
- Mocks: clase falsa que implementa la misma clase que la real
- aisla clases de sus dependencias (ej. modelo)
- reemplazar una dependencia (conexión, servicios externos…)
- incrementar el rendimiento (no usar la BBDD)
- reparto de trabajo para cada capa de la applicación
- Mocks: clase falsa que implementa la misma clase que la real
- Tests de aceptación de usuario (vista)
Herramientas
Selenium: tests de usuarios
- IDE + TestRunner
- componentes ppmente en js
- servidor selenium usa el navegador
- compatible con AJAX
- plugin FF para grabar Tests unitarios
- automatización de pruebas
- compatibilidad crowss-browser
- Compatible con Windows, MacOS, Linux
Aspect?
- Behaviour Driven development, se basa en las especificaciones en vez de tests
Ruby Fitness Test
- Aceptación de usuario y reglas de negocio
- Wiki para tests, menos completo que Selenium
Consejos
- RadRails, dist. Eclipse que incorpora GUI para tests
- RCov: que partes estan cubiertas por Tests -> mostrar al cliente
- AgileDox: generar especificaciones funcionales a partir de los tests

