Personalmente, creo que uno puede obtener muchos de los beneficios de TDD (sin adherirse a TDD), al:
- Escrito, tanto al que llama y el abonado llamado código o menos al mismo tiempo (definitivamente no más de 24 horas de diferencia).
- Y use eso para influir en el diseño de la interfaz (objetos, llamadas a métodos y parámetros).
- Para un componente que requiere un algoritmo / código complicado, considere primero implementarlo en un algoritmo más simple pero correcto, incluso si es menos eficiente (o estúpido, o solo funciona en una situación más limitada).
- Un método de prueba muy simple sería ejecutar ambos algoritmos y comparar sus resultados.
- Una vez que se descubrió un error (por cualquier medio) en una parte del código, esa parte del código merece ser probada de manera mucho más agresiva. Esto significa hacer pruebas más sofisticadas de las que TDD requeriría. (basado en el razonamiento de que los errores ocurren en grupos )
TDD parece requerir que usted tenga una comprensión bastante clara de qué función planea implementar o qué requisitos planea satisfacer al implementar el código. En algunas situaciones, simplemente hay muy poca comprensión del problema. Esto habría requerido una solución de Spike . Dentro del alcance de esta solución de Spike, se puede aplicar TDD porque el problema se ha reducido a un nivel manejable. Una vez que se hayan terminado algunos Spikes, cada uno cubriendo algunos aspectos del problema original, uno puede comenzar a trabajar en la solución completa, y la aplicación de TDD en ese punto podría ser factible debido a la mejor comprensión.
Editado:
Después de leer la página con más cuidado,
Si bien debería ser posible probar la mayoría de las funciones del kernel en un controlador de prueba "testbed", las cosas realmente "jugosas" como el manejo de interrupciones, el despacho de procesos o la administración de memoria probablemente no sean comprobables por unidad. --- de http://wiki.osdev.org/Unit_Testing
Están diciendo claramente que la mayoría de las partes son comprobables, y que algunas partes requieren un tipo diferente de prueba: Prueba de esfuerzo .