historia - tdd vs bdd
¿Cuál es una buena clase de muestra para demostrar TDD? (14)
¿Qué hay de usar la primera sección del ejemplo de Kent Beck''s Money ? Comienza de manera muy simple, pero cuando llega a la suma de dos monedas diferentes, TDD de repente le muestra la falsedad del diseño frontal o YAGNI (no lo va a necesitar).
Otro buen ejemplo es el ejemplo TDD de la puntuación de bolos del tío Bob. Creo que este es un buen ejemplo de cómo una narrativa de TDD lo lleva a una solución limpia que habría sido explícitamente inaccesible a través de un diseño frontal.
Para que sea una presentación realmente emocionante, desde el principio podría desafiar a la audiencia a diseñar los dos escenarios utilizando los métodos que consideren adecuados. Entonces mostrarías la forma TDD de diseñarlas.
El momento real de WTF para mí con TDD fue cuando Beck eliminó las dos subclases de Money y las pruebas funcionaron. Esta no es una acción trivial; El hombre borró dos clases! La confianza para hacer algo como esto se puede encontrar solo por dos medios.
1) reuniendo a todos los jugadores senior en una base de código y ejecutando escenarios, seguido de un extenso seguimiento para confirmar que funciona
2) TDD
= D
Necesito dar una breve presentación (2-4 horas) sobre el desarrollo guiado por pruebas y debo crear una clase pequeña que pueda construir utilizando la metodología TDD. La clase tiene que ser relativamente pequeña, pero "vender" el concepto de TDD.
Si alguien ha leído el libro de James Newkirk, Test-Driven Development for en Microsoft.Net, el ejemplo de Stack es perfecto. Es una clase pequeña, tiene una lista manejable de pruebas / requisitos, y el proceso de creación vende TDD (IMHO).
No quiero usar el ejemplo de la Pila o estructuras de datos similares (cola, listas, etc.) por temor a incidir en el trabajo de Newkirk.
Por lo tanto, estoy buscando algunas buenas ideas para una clase de muestra.
Gracias.
¿Qué tal una clase de matemáticas simple, con suma, resta, multiplicación y demás?
Habilidades esenciales para el desarrollo ágil - Ka Iok Tong. Este libro trata sobre Agile pero contiene varios capítulos sobre pruebas, especialmente TDD. El autor explica TDD mediante la codificación de los requisitos, también anota su pensamiento sobre cómo resolver un problema en TDD. Puede encontrar este libro here . Para actualizar más sobre el concepto y las herramientas modernas, puede ir here
Intentaría encontrar algo pequeño de un dominio bien conocido. Hace poco di una presentación en BDD / TDD basada en ASPNET.MVC. Eso incluía un controlador, una acción y un modelo de vista. Eso también me dio la oportunidad de presentar un contenedor de dependencia y un marco de burla.
Números romanos. Contar las líneas sin comentarios del código fuente. Torres de Hanoi. Hay muchas ideas por ahí.
Otro ejemplo clásico de la comunidad TDD / Extreme / Agile es el ejemplo de Bowling Game; Me parece recordar que se ha usado tanto en Beck como en Martin, así como varias veces en xprogramming.com para ejemplos y exploraciones de diferentes técnicas dentro de TDD.
Sal a arriesgarte y atiende las peticiones de la audiencia. :)
Si el objetivo es vender TDD, también desea mostrar una pequeña refactorización de una base de prueba grande. Es fácil hacer que funcione con muestras pequeñas, la mayoría de los desarrolladores compran eso ahora. Hay muchas más dudas sobre la escalabilidad. Un tema avanzado sería cómo manejar una base grande de código heredado (sin pruebas unitarias).
Un juego de cartas simple sería bueno, especialmente porque puedes proporcionar una representación visual del resultado
Y supongo que va a utilizar un dojo de codificación como forma de presentación, ¿no es así? No hay powerpoint de lujo. Si el público no es programador, use el ejemplo de Excel.
Si la audiencia deseada es ingenua en TDD, recomendaría usar los siguientes ejemplos. Realmente te da una buena comprensión de los conceptos y la implementación de TDD.
Si tiene tiempo para ello, elegiría un ejemplo con una dependencia externa de algún tipo que se abstraiga en la prueba. Ya sea una base de datos, llamadas a una GUI, llamadas a un sistema remoto, etc.
La razón es que uno de los bloques de TDD es que el ejemplo parece demasiado autónomo. "Claro, cuando todo es una unidad autónoma, puedes realizar una prueba unitaria, pero cuando tengo 15 sistemas para integrar, ¿cuál es el punto?" Tipo de cosa.
También al menos mostraría un ejemplo al final (mire el libro de Michael Feather, Trabajando con eficacia con el código heredado para obtener instrucciones) de cómo migrar una clase existente para incluirla en TDD. No se detenga en eso como ejemplo, pero lo más probable es que su audiencia esté pensando en cómo migrar la clase que escribieron esa mañana, no hay razón para dejar que eso se convierta en algo "innombrable".
Si tiene un ejemplo perfecto de un libro, debe usarlo y promocionarlo. Ningún autor se opondría a eso.
Aparte de eso, asistí a una presentación de TDD hace unos años donde el ejemplo era una calculadora simple y funcionó a la perfección.
Te sugiero que te compres el libro Test driven design por ejemplo de Kent Beck.
El libro se centra casi completamente en la construcción de una clase a través de TDD.
Tres me gustan, en orden de dificultad aproximadamente creciente:
- Rango (de enteros; implementa isEmpty (), contiene (), intersecta (), longitud ())
- Tipo natural
- Snake
Si tuviera media hora, haría rango; 90 minutos, probablemente de tipo natural; más: serpiente. Sin embargo, depende de la audiencia.
Los problemas de TDD tienen una lista de problemas, que van desde simples a menos simples.
Algunos tienen una lista de pruebas para comenzar a partir de ninguna solución todavía.