Enciendo la polémica. Alguno de uds trabaja/trabajo bajo esta
metodología? Es realmente ventajosa?
Me explico. Es muy muy fácil aplicar el *proceso* de TDD y sentir una
sensación de seguridad que no se corresponde ni mucho menos con la
realidad. Y sí, sí, también se puede hacer /bien/, no lo dudo. Pero he
visto muchos que se suponen experimentados, que conocen bien la
metodología, que llevan tiempo aplicándola o incluso explicándola, y
que caen en problemas (imho graves) de seguridad injustificada y
fragilidad real. Porque aplicar el *proceso* es, como decía, muy
fácil. Pero a la vez, es muy fácil aplicarlo sin ir más allá del
proceso en sí. Me puedo hacer un test, pasarlo, otro, pasarlo, otro,
pasarlo, etc, y terminar teniendo un 50% de tests completamente
innecesarios y una implementación que sigue siendo frágil.
Por otra parte, veo BDD más interesante. Por un lado me parece subir
un nivel de abstracción y pasar a, como dice Javier, diseñar más bien
una documentación o una especificación. Es más, me gustaría más BDD si
además se le añadiera la práctica de que esa especificación sea como
mínimo, "revisable" por cualquiera (i.e. una persona que no programa)
y sirviera de /contrato/. Que fuera el documento sobre el que se
negocia la funcionalidad (aunque quizá no fuera el único).
Es decir, que no me importaría reunirme con el
cliente/responsable/jefe/loquesea y usar esto (o algo de este estilo)
como guía:
def "Proceso: filtrado parcial de los elementos del listado"(){
given:"Estamos en la pagina del inventario"
and: "Al consultar sin informar el filtro nos lista algun elemento"
when: "Informarmos los campos del filtrado y pinchamos en consultar"
then: "El numero de elementos filtrados tiene que ser igual o menor"
}
De cualquier modo, y a modo de aviso sobre mi postura sobre algunos
temas, para que nos vayamos conociendo xD:
Yo tiendo a ser (al menos en mi cabeza) más artístico que ingeniero.
Hay toda una serie de metodologías y procesos que, simplemente, veo ir
pasando ante mi con los años pero muy pocos los veo que /duren/. Esto
no quiere decir que no aprecie practicar algunas *disciplinas
personales*, por supuesto. Pero en general, lo que nunca apreciaré es
ningún proceso, metodología o práctica, que se base en una aplicación
rígida y estricta de un principio o una serie de reglas sin más.