Pregunta

Estoy colaborando con un grupo de profesionales para poner en un evento para ayudar a enseñar la práctica de TDD para las personas que están interesadas, pero no tienen experiencia (novicios).

Estamos tratando de llegar con laboratorios, talleres, etc y estoy tratando de pensar en una sola cosa más importante que debemos impartir a estos individuos para ayudarles a tener éxito en la práctica de TDD en adelante.

¿Cuál diría usted que debemos hacer nuestra prioridad para el aprendizaje?Qué aspecto de la enseñanza de TDD es el más importante.Si usted tiene que hacer dos cosas, eso está bien, no voy a sostener que la SOLA parte :)

¿Fue útil?

Solución

Se trata de diseño.Es NO acerca de las pruebas.

Otros consejos

No se salte los pasos en el proceso.Se necesita más tiempo para entrar en la inicial de la ranura de TDD, pero una vez en el lugar todo el SDLC es más rápido y mucho más libre de errores.

Rojo - Verde - Refactorizar -> just do it.

Sólo porque su fase de pruebas no significa que el código es correcto.

Aparte de eso, yo diría que es importante considerar las pruebas en su diseño.Si el código es difícil de probar sin un conocimiento íntimo de la implementación interna de la unidad bajo prueba, usted puede desear reconsiderar el diseño.De lo contrario, la refactorización se vuelve más propensas a los desastres, ya que las pruebas probable es que tenga que ser cambiado con el código.

No sé si esto cuenta como la única y más importante -, sino que fue algo que me tomó algún tiempo para "obtener" la primera vez que fui a explorar el uso de TDD.

No hay que escribir el código en tu cabeza antes de escribir el ensayo.

Cuando empecé a hacer TDD yo "sabía" lo que el diseño debe ser.Yo "sabía" lo que el código que yo quería escribir.Así que escribí una prueba que me permitiera escribir un poco de código.

Cuando yo estaba haciendo esto en realidad no estaba haciendo TDD - desde que fue escrito el primer código (incluso si el código fue sólo en mi cabeza :-)

Me tomó algo de tiempo (y algunos asomando por inteligente folk) para darse cuenta de que usted necesita para centrarse en la prueba.Escribir el examen para el comportamiento que usted quiere - a continuación, escribir el mínimo código necesario para hacer pasar, a continuación, permiten el diseño de emerger a través de la refactorización.Repita hasta que esté hecho.

Sugiero, "Ser paciente". Se siente raro al principio.Para mí, fue, probablemente, tres proyectos antes de que empezara a sentirse natural.

Estoy de acuerdo con lo Jon dijo en su respuesta, pero creo que un importante corolario es que la capacidad de prueba no dicta "el buen diseño", pero es sólo un indicador de que su diseño en blanco.

TDD, en mi mente, es todo sobre el ritmo (rojo, verde, refactorizar).Conseguir el ritmo que recibe más de la "joroba" de "no llegar".Y si no obtienes el ritmo es probable que no pegan con TDD para muy de largo.La esencia del ritmo pasos de bebé, que ya ha sido mencionado.Escribir como poco de código posible, y refactorizar sin piedad.

Una cosa destacar es que TDD oficios de algunos beneficios a corto plazo a largo plazo.Comenzando con TDD, invariablemente, a disminuir su productividad.Pero una vez que aprender el ritmo, es como entrar en una ranura, y lo que realmente puede ayudarle a trabajar más rápido.Por no hablar de los efectos secundarios de TDD es una base cada vez mayor de la unidad de pruebas que proporcionan pruebas de regresión.Uno inevitabilidad de software es que los sistemas se mantienen (sin un conjunto de sistemas automatizados de pruebas de regresión) se degradan con el tiempo.

Destacar que TDD es un cambio de paradigma para el desarrolladors.Si está de pie a un nuevo equipo, se dan cuenta de que va a tomar hasta seis meses para conseguir el equipo plenamente eficaz como TDD profesionales.Una vez que usted tiene una madura equipo ágil eficacia de practicar TDD, la vinculación se va a habilitar un nuevo desarrollador para entrar en el swing, una de las cosas después de un par de iteración.Además, mediante el uso de pares de un equipo de la semilla de una nueva línea, usted puede obtener la nueva línea a la velocidad de TDD mucho más rápido que la primera línea.

En los proyectos que hemos medido, hemos visto seis veces caer en los defectos encontrados durante funcionales automatizadas/ prueba de regresión, una vez que el equipo aprendió a hacer TDD.Que es un ahorro significativo.Además, el código refleja un limpiador de diseño, con menos líneas de código para cada característica.TDD pero un virtual parada para el chapado en oro.TDD es más eficaz si las tarjetas de historia han criterios de aceptación.

TDD también permite ritmo sostenible.El equipo se encuentra que no puede continuar con el mismo número de funciones realizadas con cada iteración debido a que el código sea limpio, con pocos defectos.Con tanto TDD y funcionales automatizadas/ pruebas de regresión, a menudo vemos cero defectos encontrados durante las Pruebas de Aceptación del Usuario.

El trato con el pressue de amaraje forzoso TDD cuando los plazos se reduzcan.Este es uno de los mayores problemas que he venido a aross ayudar a las personas y equipos con TDD.Han tenido problemas para expresar la importancia y el valor de abandonar destacados en lugar de pruebas para la alta dirección.

Proceder en pequeños pasos.

Asegúrese de que sus pruebas sólo cubren una pequeña ámbito y, como PhlipCPP dice:'Realizar el MÍNIMO de EDICIÓN necesarios para hacer el paso de la prueba.'

Aún así, hay mucho que TDD, así que usted todavía tiene que asegurarse de que no te pierdas nada.

En mi experiencia, el uso de TDD permite a mí y a mi equipo sin piedad refactorizar nuestro código sin tener que preocuparse de que se rompa algo en algún lugar inesperado.

Así que supongo que para mí el aspecto más importante de TDD es la cobertura, ya que la buena cobertura me da la confianza para refactorizar cada vez que veo una mancha en la base de código que puede utilizar.

Hacen énfasis en los diferentes tipos de pruebas.Tanto la caja negra y pruebas de caja blanca las pruebas son importantes y tienen diferentes propósitos.De caja blanca pruebas de que no está allí para comprobar la corrección porque no puede probar el sistema en su conjunto.Está ahí para hacer que el código huele aún stinkier y por lo tanto ofrecer un mejor refactorización dirección.La caja negra de la prueba está allí para probar la corrección.Cada función debe ser la caja negra de la prueba.

También, destacar las diferencias en la cobertura de las pruebas.Debido a la combinatoria y la repetibilidad de los problemas, es imposible la caja negra de la prueba de cada ruta de código en su aplicación.Mi regla es que una característica que no está completa hasta que es la caja negra de la prueba.Usted debe ayudar a los estudiantes a descubrir sus propias reglas.Sin embargo, de caja blanca pruebas no se han de clase externos de las dependencias;por lo tanto, cada línea de cada clase deben ser de caja blanca prueba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top