librelist archives

« back to archive

Re: TDD y BDD (era: [OT] quiero aprender TDD y testeo unitario)

Re: TDD y BDD (era: [OT] quiero aprender TDD y testeo unitario)

From:
Pablo Mouzo
Date:
2011-03-09 @ 19:17
2011/3/9 Nicolás Sanguinetti <hi@nicolassanguinetti.info>:
> 2011/3/9 Pablo Mouzo <pablomouzo@gmail.com>:
>> 2011/3/9 Hugo M <ham1988@gmail.com>:
>>> Che también podés aplicar BDD (Behavior Driven Development), creo que la
>>> diferencia con TDD es que está mas cerca del lenguaje humano y podés usar
>>> rspec para eso.
>>>
>> <opinion>
>> Para mi TDD y BDD se refiere a que tan "grande" es lo que estas
>> testeando, y podes usar ambos a la vez, e incluso agregar tests de
>> integración.
>>
>> En Rails algo que hacíamos en un proyecto en el que estuve era mezclar
>> ambas cosas, cuando había que desarrollar alguna nueva funcionalidad
>> hacíamos BDD para ir definiendo como se comportaba (cuac) la
>> funcionalidad, y dentro de cada iteración era normal hacer TDD sobre
>> el/los modelos que se necesitaban. Para ambos usabamos rspec (tanto
>> tests unitarios como funcionales).
>> </opinion>
>
> Errrrrrrrrr… podés compartir un ejemplo de a qué le llamás BDD y a qué
> le llamás TDD?
>
> Saludos,
> -foca
>
>> Saludos,
>> Pablo
>>
>

Insisto que esto es mi opinión:

Siguiendo con el caso anterior, en Rails, empiezo a desarrollar una
funcionalidad, un ABM con cosas extras, tengo una idea del recurso y
algunas acciones básicas que tiene que tener. Escribo un test básico,
si guardo algo después lo tengo que poder ver (un post y un get), no
me importa mucho como esté implementado, no me interesa si guarda en
un archivo, en la base de datos, o en gmailfs. Acá estoy en modo BDD.

Ese test falla, porque no tengo implementado nada, armo un controller
con los métodos que necesito, y creo un modelo para el recurso.
Avanzando me encuentro con que necesito un método no trivial del
modelo (find y save no fue suficiente :D), entonces empiezo a hacer
unit tests, primero con los casos básicos y después buscando posibles
corner cases. Acá estoy haciendo TDD.

Para mi lo que los diferencia es en lo que te estás concentrando al
momento de escibir lo que querés que pase.

También creo que la relación está en el tipo de tests que escribís,
unitario para TDD, funcional y de integracion para BDD.

Ojo, esto creo que dista bastante de la descripción de BDD oficial,
que tiene una cantidad de buzzwords tóxica para la mayoría de los
humanos.
http://en.wikipedia.org/wiki/Behavior_Driven_Development

Saludos,
Pablo