TCR (Test && Commit || Revert) como alternativa a TDD

Hará un año y poco que Kent Beck nos dio a conocer un nuevo flujo de trabajo, alternativo al de TDD, y que llamó TCR, de «Test && Commit || Revert», donde cada vez que un Test se ejecuta y pasa correctamente el código se «comitea», pero si no pasa el Test el nuevo código… se borra (git reset –hard). 

TCR es diferente al TDD, es más radical aún, sobre todo por la «R» de Revertir, de borrar, de que si escribes código que no pasa sus pruebas… este se elimina automáticamente y se intenta de nuevo.

Derivadas de todo esto…

  • Con TCR, una prueba fallida nunca es el objetivo. 
  • Sólo vas a tener pruebas «en verde»
  • Si no quieres borrar un montón de código… no escribas mucho código. 
  • Se potencia la idea de realizar pequeños incrementos que mantengan las pruebas en verde. Extremadamente incremental, de pocas en pocas líneas en cada incremento. Incluso las pruebas se hacen en pequeños incrementos.

El tema es relativamente reciente, por lo que tenemos poca experiencia con ello, veremos. Al menos, por ahora, que te suene y que pensemos sobre ello, hay que sopesarlo.

Probablemente, quizá, de manera similar a como ocurre con el pair programming (¿Cuándo conviene hacer pair programming? ¿siempre? ¿en ocasiones?), no sea una práctica de sea continuo y sea más apropiada para momentos puntuales. 

Puede parecer una locura, lo es, suena a ello, pero, recuerda, que en su día eXtreme Programming, TDD o Pair Programming (creados, o potenciados, por Kent Beck)… también parecieron locuras. 

Javier Garzás

3 comentarios en “TCR (Test && Commit || Revert) como alternativa a TDD”

  1. Así de primeras, me parece muy interesante el hecho de obligar a trabajar en pequeños incrementos, pero creo que puede ser contraproducente en términos de calidad. Con este sistema podemos encontrarnos con casos en los que se deje código “feo” y algo de deuda técnica, ya que se puede confundir el objetivo final con tener un test verde. Pero bueno, quizá en contextos muy concretos se puede probar…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir arriba