Pregunta

Soy un desarrollador web que trabaja en PHP.Tengo cierta experiencia limitada en el uso de Test Driven Development en aplicaciones de escritorio C#.En ese caso utilizamos nUnit para el marco de pruebas unitarias.

Me gustaría empezar a utilizar TDD en nuevos proyectos pero no estoy seguro de por dónde empezar.

¿Qué recomendaciones tiene para un marco de prueba unitario basado en PHP y cuáles son algunos buenos recursos para alguien que es bastante nuevo en el concepto de TDD?

¿Fue útil?

Solución

He usado PHPUnit y Prueba simple y encontré Prueba simple para que sea más fácil de usar.

En lo que respecta a TDD, no he tenido mucha suerte en el sentido más puro.Sin embargo, creo que es principalmente una cuestión de tiempo y disciplina de mi parte.

Agregar pruebas después del hecho ha sido algo útil, pero lo que más me gusta hacer es escribir pruebas SimpleTest que prueben errores específicos que tengo que corregir.Eso hace que sea muy fácil verificar que las cosas realmente estén arregladas y permanezcan arregladas.

Otros consejos

te lo recomiendo mucho Desarrollo basado en pruebas por Kent Beck (ISBN-10:0321146530).No fue escrito específicamente para PHP, pero los conceptos están ahí y deberían ser fácilmente traducibles a PHP.

PHPUnit es un estándar, pero a veces también resulta abrumador, así que si lo encuentras demasiado complejo, consulta PHPT para empezar.Es muy, muy fácil escribir pruebas en él.Una obviedad para cualquier programador.

Y para responder a su pregunta sobre TDD, no estoy seguro de si TDD se utiliza ampliamente en el espacio PHP.Puedo ver que el desarrollo rápido de aplicaciones y TDD chocan un poco (estrictamente en mi humilde opinión).TDD requiere que usted tenga una imagen completa de lo que construye y que escriba sus pruebas por adelantado y luego implemente el código para que la prueba pase.

Entonces, por ejemplo, lo que hacemos es escribir muchas pruebas cuando terminamos.Este no siempre es el mejor enfoque porque a veces terminas con pruebas falsas que pasan, pero no son realmente útiles, pero al menos es algo que puedes ampliar.Internamente continuamos con las pruebas y básicamente escribimos una prueba para cada error que encontramos.Así se vuelve más sólido.

Personalmente prefiero SimpleTest.Hay un ejecutor de pruebas de línea de comando y un ejecutor de pruebas basado en web, e incluso hay un Eclipse enchufar para permitirle ejecutar pruebas unitarias desde el propio IDE.Encontré que la conexión de Zend a PHPUnit es mucho más difícil de hacer funcionar, especialmente con el depurador.

La forma en que utilizamos SimpleTest internamente es con un integración continua guión que escribimos nosotros mismos.Cada vez que registramos una característica en SVN incluimos las pruebas unitarias.Aproximadamente cada hora, el script CI se ejecuta y llama a un script PHP de línea de comando que ejecuta todas nuestras pruebas unitarias.Si hay alguna rotura, recibo un correo electrónico.Ha sido una excelente manera de reducir errores en nuestros sistemas.

Sin embargo, puedes usar fácilmente algo como Phing para ejecutar sus pruebas automáticamente, ya sea en un trabajo cron o con un enlace de registro SVN.

De hecho, si desea comunicarse conmigo directamente para obtener más ayuda, puede comunicarse conmigo a través de la información de mi perfil en SO.Me encantaría ayudarte.

SimpleTest es un gran sistema.Comencé con él hace unos 5 meses, nunca había oído hablar de TDD, y SimpleTest es fácil de aprender pero sigue siendo poderoso.En cuanto a recursos, actualmente estoy leyendo. TDD por ejemplo por Kent Beck, y es bueno.

Deberías investigar Unidad PHP, se parece mucho a nUnit.

Otra herramienta moderna que deberías buscar es Codecepción.Es mucho más simple que PHPUnit e incorpora un enfoque basado en escenarios, lo cual es bastante útil para generar documentación a partir de pruebas.

El desarrollo basado en pruebas es un enfoque en el que las pruebas siempre se escriben antes que el código.Deberías aprender a PHPUNIDAD primero para iniciar el desarrollo de TDD.Luego, mientras crea su función, siempre debe pensar cómo la función puede fallar y escribir un caso de prueba en phpunit y al final debe escribir el código para pasar la prueba.Será un enfoque nuevo, por lo que será un poco difícil al principio, pero una vez que te acostumbres, lo encontrarás muy útil, especialmente para errores posteriores al desarrollo y estilo de codificación.Puedes pasar por esto Paso a paso Guía para entender este concepto.

Recuerde siempre que si las pruebas se escriben después del desarrollo, son inútiles.Entonces, TDD es imprescindible si estás pensando en escribir una prueba unitaria.

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