¿Cuáles son los mejores recursos para aprender TDD? [cerrado]

27

Quiero aprender (y dominar) TDD. ¿Cuáles son los mejores?

  • libros
  • sitios web
  • videos
  • lista de ejercicios
  • palabras personales de sabiduría

para aprender, apreciar y usar TDD?

Eric
fuente
1
Quizás te interese mi página de recursos para aprender TDD .
xpmatteo
99
Me gusta esta pregunta Si no debe hacer esto aquí, ¿dónde puede hacer preguntas sobre recomendaciones de libros de programación?
guettli

Respuestas:

18

Personalmente, descubrí que leer un ensayo JUnit o dos enfatizando que "usted escribe la prueba antes del código" fue suficiente para comenzar.

La parte más importante para aprender esta tecnología es escribir MUCHO código basado en pruebas , porque debes cambiar algunas de las formas más básicas de pensar en escribir código. Cosas como:

  • Escribir la prueba antes del código te hace pensar por adelantado cómo invocarás tu código y recuperarás el resultado. Esto significa que primero diseñas la API en función de cómo la usarás. Esto frecuentemente resulta en una mejor API.
  • Su estilo de codificación cambiará porque NECESITARÁ pensar de manera más modular, para poder probar partes del código en lugar de solo todo.
  • También llegará a un punto en el que podrá extraer con confianza una parte importante e insertar una nueva parte en lugar de comportarse igual, porque su prueba pasó. Lo hice recientemente con una biblioteca de análisis de fechas, ya que el original era demasiado indulgente.

El mejor lugar para comenzar con poco, es con sus rutinas de servicios públicos. La próxima vez que necesite uno, simplemente diseñe eso con pruebas primero, escriba muchas pruebas que cubran todos sus casos de uso oficiales (incluido lo que debería suceder con valores nulos pasados, etc.), y cuando se implementen todos los casos de uso, debería poder usar directamente en su código, y tenga la seguridad de que funciona como se espera.

También es mi experiencia que las buenas pruebas pueden hacer un trabajo adicional como documentación, porque tiene un código muy conciso que dice exactamente cómo se comporta el código en diversas situaciones, lo que puede demostrarse fácilmente que es correcto (barra verde). Con comentarios cuidadosos no lo haces mucho mejor que eso.

Para Java, la versión 4 de jUnit es realmente agradable.


fuente
8

En mi opinión, TDD se trata más de hacer que el código sea comprobable que de escribir pruebas.

Claro que puede escribir una prueba antes de codificar, pero la razón por la que se escribe la prueba es para que pueda codificar, lo que no le impedirá escribir código que es difícil de probar.

Eche un vistazo a esto para tener una mejor idea de lo que quiero decir: mi teoría unificada de los errores

Si está interesado en el concepto y desea obtener más información, simplemente comente, y lo guiaré en la dirección de una presentación grabada sobre el tema de Google.

ACTUALIZAR:

Cómo escribir código limpio y comprobable

Miško Hevery presentando (por GoogleTechTalks ) en Google en Nueva York y patrocinado por el grupo de Ingeniería de Productividad de Google

errores
fuente
Continúe y agregue el enlace de presentación de Google. Creo que el representante de Eric no permite comentar todavía.
ocodo
+1 @Slomojo: Cierto, así que vota la pregunta ... para empujarlo a más de 15 repeticiones si recuerdo correctamente. Voy a mirar alrededor para ver el video.
errores el
1
@blunders ... lo llevé a 11!
ocodo
+1 @Slomojo: para votar arriba, encontré y agregué el enlace a Google Tech Talk en mi respuesta. ¡Aclamaciones!
errores el
8

Además de algunos de los libros ya mencionados, puedo recomendar Crecer software orientado a objetos guiado por pruebas . Todavía no he terminado de leerlo, pero es una lectura digna, que incluye la historia de un proyecto TDD completo y realista, no solo ejemplos de código simplificado.

Péter Török
fuente
Creo que este es mi libro favorito y el que más afectó mi forma de trabajar, no solo sobre TDD sino también sobre Software Dev en general. También tengo que admitir que no leí muchos libros de TDD, así que tal vez no confíes tanto en mí.
antonio.fornie
4

He leído dos libros:

Desarrollo guiado por pruebas: por ejemplo, por Kent Beck y

Marcos de prueba de la unidad de Paul Hamil

El libro de Beck está bien considerado, pero no comencé con las pruebas unitarias hasta que leí "Marcos de prueba unitaria". Hago algo de TDD, pero también agrego pruebas al código anterior que tengo que mantener (cuando puedo).

Editar: Además, una vez que lo maneje, le recomiendo usarlo en un proyecto actual de inmediato. Para mí fue cuando ocurrió el verdadero aprendizaje, y creo que el libro "Unit Test Framework" fue un mejor libro de referencia para este propósito. (Estaba usando nunit con C #).

vjones
fuente
4

Si bien no se trata principalmente de TDD (aunque lo toca, así como el diseño para la comprobabilidad), The Art of Unit Testing es un libro que recomendaría porque le enseña a escribir buenas pruebas.

Más específicamente, enseña cómo crear pruebas confiables, mantenibles y legibles. Creo que esta es la sección más importante del libro, aparte de quizás lo básico sobre pruebas unitarias y marcos de aislamiento. Es obvio que si las pruebas unitarias se convierten en un punto de dolor o agregan fricción al trabajo de un desarrollador, entonces cualquier éxito o beneficio de ellas será limitado. Si uno invierte el tiempo y el esfuerzo para crear las pruebas, entonces (s) debería ser capaz de obtener el mayor rendimiento de esa inversión.

Mate
fuente