Digamos que quería comenzar un proyecto de código abierto que espero / espero que mucha gente envíe parches y otras cosas. ¿Es viable adoptar un enfoque estricto de TDD? ¿Puedo / debo esperar / confiar en los colaboradores para escribir pruebas de calidad cada vez que envían un parche?
Una cosa en la que he estado pensando es escribir conjuntos de pruebas para informes de errores individuales y solicitudes de características y requerir que todos los parches / solicitudes de extracción hagan pasar las pruebas, pero en ese momento parece que sería mejor simplemente escribir la característica / corrección de errores yo mismo.
Por lo que puedo decir, la mayoría de los principales proyectos de código abierto que usan TDD (o al menos escriben pruebas) parecen estar escritos principalmente por un individuo o equipo, donde es fácil aplicar prácticas como TDD.
fuente
Respuestas:
Realmente no se puede aplicar un enfoque TDD (prueba primero) en un proyecto de código abierto donde los parches pueden ser enviados por el público en general.
Lo que puede aplicar es que todos los parches deben tener un conjunto de casos de prueba para las correcciones incluidas en el parche y que esos casos de prueba, así como todos los casos de prueba existentes, deben pasar. Puede aplicar esto solo otorgando derechos de compromiso a unos pocos desarrolladores confiables que se sabe que usan y aceptan las políticas del proyecto y declarando públicamente que las presentaciones / solicitudes de extracción solo se incorporarán si vienen con casos de prueba aprobados (con cobertura suficiente).
Esto no garantiza que la prueba se escriba primero , pero sí asegura que la prueba se escriba .
fuente
Puede pedirle a la gente que envíe parches de prueba solamente antes de que se les permita trabajar en el código; Esto proporcionaría una oportunidad adicional para revisar el diseño planificado antes de que se escriba el código.
En la práctica, esto puede matar cualquier entusiasmo que las personas tengan por contribuir al proyecto, o podría encender el fuego en aquellos que están de acuerdo con su metodología.
Sin embargo, los revisores tendrían que ser muy buenos para cambiar las revisiones de diseño rápidamente, para no detener el desarrollo.
fuente