Archive for November, 2009



Curso de TDD en Sevilla

tdd_telvent1_nov09

Durante los pasados 26 y 27 de Noviembre he tenido la suerte de impartir un curso de Test Driven Development al equipo de Telvent Outsourcing en sus oficinas de Sevilla. Ha sido gracias a Antonio Pizarro y a Álvaro Lobato que contactaron conmigo y me facilitaron todos los medios para que el curso fuese posible.

Es el cuarto curso de TDD que imparto y pienso que es el que mejor ha salido hasta ahora. Lógicamente la experiencia es fundamental, pero la clave de que haya ido tan bien es la participación tan alta que ha habido por parte de los asistentes, que fueron un total de 20, y su grado de experiencia. Son un grtdd_telvent3_nov09upo de profesionales excepcional. Practican Scrum desde hace dos años y esto ha facilitado mucho las cosas porque comprendían el dinamismo del desarrollo perfectamente. Enseguida comprendieron las ventajas del diseño emergente. Ha sido una gozada implementar juntos las soluciones a los distintos problemas que se fueron planteando. Por cierto, esta vez no ha sido el ejemplo de la calculadora de cursos anteriores sino un ejemplo nuevo, algo más "empresarial".

tdd_telvent2_nov09
Impartir un curso a desarrolladores con experiencia siempre es un reto porque generalmente los técnicos somos muy criticos con quienes imparten los cursos. Siempre hay una cierta desconfianza. Este reto me encanta cuando las personas que tengo en frente son verdaderamente profesionales porque en ese caso se produce sinergia, un reconocimiento mutuo y  se suman las ganas de trabajar, lo cual hace que la actividad sea muy constructiva.
Buena parte de los asistentes, de éste equipo de Telvent Outsourcing que pilota Alvaro, tienen una carrera profesional muy prometedora (sé que no todos estaban el el equipo de Alvaro pero cómo no recuerdo quienes sí y quienes no, los meto a todos en el mismo equipo 🙂 )

Espero que nos veamos pronto en algún otro evento técnico. Si alguno de los asistentes tiene cuenta en LinkedIn y/o blog, estaré encantado de añadir su url a mi blogroll, sólo hace falta que me lo envíe.

Me quedó pena que no consiguiese que todos saliesemos juntos en una foto de equipo pero si unimos las tres fotos creo que estamos todos menos Pablo ¿no?.

Finalmente me queda agradecer a Alvaro que estuviese pendiente de que todo saliese bien y me atendiese con tanta amabilidad. Este tío es un crack, tendremos que tenerlo vigilado de cerca 😉

Hasta la próxima !

Mock frameworks for Java

After using EasyMock for several months I found Mockito. Yeah, the name sounds terrible in Spanish: little snot. It will be hard for me to tell spanish developers mockito features avoiding laughs. Guys, be careful with names next time 🙂

Mockito API is so cool that you no longer have to care if you're using a mock or a stub. You just use test doubles the way you need them and nothing more. Record/Replay metaphor is no longer used. The framework knows when are you writing the arrange, the act and the assert steps.

See how easy it is to mock out a void method (EmailAddress is a JPA Model):

  1.  
  2. @Test
  3. public void persistorSaves() throws Exception {
  4. EmailAddress emailMock =
  5. mock(EmailAddress.class);
  6. Persistor<EmailAddress> persistor =
  7. new Persistor<EmailAddress>();
  8.  
  9. persistor.Save(emailMock);
  10.  
  11. verify(emailMock).save();
  12. }
  13.  

Check out some examples: http://schuchert.wikispaces.com/Mockito.LoginServiceExample

My favorite mock frameworks so far are Mockito for Java and Rhino.Mocks for C#. They share pretty much all these nice features.

MVC Frameworks for Java

Model-View-Controller is everywhere now days. I've been testing two open source frameworks which look great:

  • VRaptor: Apparently easy to use, easy for REST services development, looks brilliant. However, I spent two hours struggling with Tomcat in order to add permissions for the sample application to run. None of the exceptions regarding these permissions where in the documentation. I had to edit file /etc/tomcat6/policy.d/04webapps.policy on Ubuntu 9.10 adding several lines (permission java.lang.RuntimePermission "getProtectionDomain", "read";). Eventually I got a serialization exception and discarded the framework. Too much time to make the sample application run.
    I noticed that writing integration tests looks easy but the ones found in the documentation where called "unit test" when they are not unit tests, they are integration tests. That is the reason many people believe that just because JUnit is running the test it is a unit test, when it is not.
  • Play! Framework: Very similar to VRaptor but much more easy to get started with. The framework runs a development server out of the box which makes it very easy to try out your first application within minutes. It has a command line tool similar to Django which rocks.  The only think I don't like so far is that controller actions are "static" which makes unit testing controllers impossible. Fortunately the FunctionalTest class is great to write those kind of tests so I would move the business logic out of the controllers so I can test-drive it, and use the controllers just to wire up views and models. It would be great if they remove the static constraint in future versions of the framework.

Agile Spain TV

Gracias a JM Beas tenemos un canal de video en Vimeo: Agile Spain TV. En el primer capitulo teneis a Agustin Yagüe hablando de Kanban. Enhorabuena al grupo de Madrid por este avance!!!

Nuevo blog de JM Beas

Ya era hora de poder volverle a leer. Despues de que hace unas semanas blogger le quitara su blog, Jose Manuel está nuevamente activo en http://jmbeas.iexpertos.com

Espero que te devuelvan los contenidos pronto.