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
  • 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