php - texto - string strip_tags
Desarrollo impulsado por prueba en PHP (7)
Soy un desarrollador web que trabaja en PHP. Tengo una experiencia limitada con el uso de Test Driven Development en aplicaciones de escritorio C #. En ese caso, usamos nUnit para el marco de prueba de la unidad.
Me gustaría comenzar a usar TDD en nuevos proyectos, pero realmente no estoy seguro de por dónde empezar.
¿Qué recomendaciones tiene para un marco de prueba de unidades basado en PHP y cuáles son algunos buenos recursos para alguien que es bastante nuevo en el concepto de TDD?
Deberías mirar PHPUnit , se parece mucho a nUnit.
PHPUnit es un estándar, pero a veces también es abrumador, por lo que si le resulta demasiado complejo, consulte phpt para que pueda comenzar. Es muy, muy fácil escribir pruebas en él. Un pan comido para cualquier programador.
Y para responder a su pregunta de TDD, no estoy seguro de si TDD se usa ampliamente en el espacio de PHP. Puedo ver que el rápido desarrollo de aplicaciones y el TDD chocan un tanto (estrictamente en mi humilde opinión). TDD requiere que tengas una idea completa de lo que construyes y escribes tus pruebas por adelantado y luego implementas el código para que la prueba pase.
Entonces, por ejemplo, lo que hacemos, en cambio, es escribir muchas pruebas cuando hayamos terminado. Este no es siempre el mejor enfoque porque a veces terminas con pruebas falsas que pasan, pero que no son realmente útiles, pero al menos es algo en lo que puedes expandir. Internamente continuamos con las pruebas y básicamente escribimos una prueba para cada error que encontramos. Así es como se vuelve más sólido.
Personalmente prefiero SimpleTest. Hay un corredor de prueba de línea de comandos y un corredor de prueba basado en web, e incluso hay un plugin de Eclipse que le permite ejecutar pruebas unitarias desde el propio IDE. Encontré la conexión de Zend a PHPUnit mucho más difícil de trabajar, especialmente con el depurador.
La forma en que usamos SimpleTest en nuestra empresa es con un script de integración continua que escribimos nosotros mismos. Cada vez que registramos una función en SVN, incluimos las pruebas unitarias. Cada hora más o menos, la secuencia de comandos de CI se ejecuta y llama a un script PHP de línea de comandos que ejecuta todas nuestras pruebas unitarias. Si hay algún descanso, recibo un correo electrónico. Ha sido una gran manera de reducir los errores en nuestros sistemas.
Sin embargo, puede usar algo así como Phing para ejecutar sus pruebas automáticamente, ya sea en un trabajo cron o con un gancho de verificación SVN.
De hecho, si desea contactarme directamente para obtener más ayuda, puede contactarme a través de mi información de perfil en SO. Me encantaría ayudarte.
SimpleTest es un gran sistema. Comencé hace 5 meses, nunca había escuchado sobre TDD, y SimpleTest es fácil de aprender, pero aún así es poderoso. En cuanto a recursos, actualmente estoy leyendo TDD By Example por Kent Beck, y está bien.
He usado tanto PHPUnit como SimpleTest y he encontrado que SimpleTest es más fácil de usar.
En lo que respecta a TDD, no he tenido mucha suerte con él en el sentido más puro. Creo que es principalmente una cuestión de tiempo / 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 los errores específicos que tengo que corregir. Eso hace que sea muy fácil verificar que las cosas estén realmente arregladas y permanezcan corregidas.
Recomiendo mucho desarrollo basado en pruebas de Kent Beck (ISBN-10: 0321146530) . No fue escrito específicamente para PHP, pero los conceptos están ahí y deberían traducirse fácilmente a PHP.
Otra herramienta moderna que debes buscar es Codeception . Es mucho más simple que PHPUnit e incorpora un enfoque basado en escenarios, que es bastante útil para generar documentación a partir de pruebas.