La prueba unitaria es sumamente importante y no hay ninguna duda que la práctica del TDD ayuda a escribir código bien estructurado, con bajo nivel de defecto.
Sin embargo, un equipo que realiza exclusivamente TDD puede tener otros problemas. De hecho, ¿hasta qué punto hacer TDD, que está a nivel de pruebas unitarias, permite visualizar el comportamiento del sistema?
Trabajando a un nivel más alto, las pruebas de aceptación traen algunas ventajas encima de las pruebas unitarias:
- Tener un mayor nivel de cobertura en los test
- Tener más espacio para el refactor
- Probar a través de las capas que aseguren que integran correctamente
- Mantener pruebas que aportan valor una vez implementado el sistema
Para poner foco al comportamiento del sistema, la sugerencia es utilizar BDD (Behaviour Driven Development - Desarrollo Guiado por Comportamiento).
Existen varias librerías que nos ayudan a implementar BDD en nuestros proyectos, y obtener los beneficios de este enfoque. Una de ellas es Concordion, un framework Java para BDD. Para profundizar más sobre el tema pueden leer un ejemplo en la wiki de Dos Ideas para implementar BDD con Concordion.