martes, agosto 22, 2006

Charla de Test Driven Development

Dentro de lo que es la comunidad técnica, en IBM, algo de lo que voy a hablar en algún post, el próximo jueves voy a dar una charla sobre TDD. Aca soy casi un evangelizador de esta práctica, por las ventajas que esta provee, y todavía no puedo creer que solo en mi proyecto y algún otro se use. No estaba previsto que yo de esta charla, sino la persona que más sabe de esto, que yo conozco, Emilio Costa Giomi, lo conocí trabajando en Telefonica el año pasado, y fue un placer discutir con un taliban de las metodologías ágiles y diseño, pero lamentablemente (para IBM) el ya no está más trabajando para IBM.
Como objetivo de esta charla es espero explicar que es TDD, y que ventajas tiene para se empiece a usar de manera mas seria. Esto va a ser más o menos la agenda que tengo, si alguno tiene algún tipo de consejo o ayuda, será bienvenida.

  • Global Delivery, Java Developer, the importance of TDD
  • Agile Methodologies and TDD. TDD is not just for Agile Methodologies
  • TDD Introduction. What is TDD? Buzzword. Hello world example.
  • TDD Process. Test First. Automating. Repeat. Flows and Stages
  • Using TDD inside a project and others best practices (Measurings, Refactoring, Continuous Integration, etc).
  • Dependency Management Techniques. MockObjects.
  • TDD as Design. Dependency Injection Patterns. TDD as Specification.
  • Tools, Books and Frameworks References
  • Two Common Problems Examples. (Web UI TDD and Data Access TDD)
  • Why TDD?

3 comentarios:

1000io dijo...

TDD tiene un impacto significativo sobre las actividades de desarrollo, pero en realidad tiene un impacto tanto o mas fuerte a nivel de management y en la relación con el cliente. Porque en realidad los tests dejan de ser una fase del desarrollo y pasan a ser una herramienta de manejo del proyecto.

Andres Calabrese dijo...

Para la charla puede ser bueno mencionar las cosas que se le critican a TDD. Ej: que lleva mucho tiempo/que no se pueden cumplir los plazos de esta manera.

Explicar por que esto no es verdad y los beneficios que trae esta inversión de tiempo.

Anónimo dijo...

Parece que va a ser muy interesante la charla.
Es importante dejar en claro la importancia del Testing como una actividad integrada con el proceso de desarrollo e incluso diseño.
Porque el pensar en como testear un modulo al momento de desarrollarlo nos hace toparnos tempranamente con cuestiones importantes que generalmente se dejan de lado por la urgencia de brindar una funcionalidad y que luego se vuelven dificiles de manejar. Como ser la separacion de concerns, el manejo de dependencias, interfaces mal definidas, requerimientos pobremente definidos, etc..
El tener un codigo bien cubierto por testing facilita los cambios, no se tiene tanto "miedo" de cambiar algo si se sabe que se tienen los medios para saber que no se "rompio" nada.
Los test cases son una buena manera de reforzar la definicion de contratos, un test case sirve como ejemplo del uso de un componente lo que ayuda a clarificar su contrato.
Los test cases son un buen complemento a la documentacion y estimulan los cambios y la evolucion controlada del codigo (refactoring).
Suerte con la charla!