software - pruebas unitarias php
¿Qué son las pruebas unitarias y por qué debería importarme? (8)
De acuerdo, desarrollo aplicaciones web en PHP y JavaScript y muchas veces aquí en Stack Overflow. He visto pasar la prueba de unidad de palabras, pero en ninguna parte del sitio web he podido encontrar una respuesta satisfactoria a lo que es exactamente una prueba de unidad. .
Entonces, ¿qué son las pruebas unitarias y debería, como programador de PHP y JavaScript, importarme, o solo son para lenguajes de programación ''reales''?
La mayoría de los php que he visto son casi imposibles de probar en unidades.
Wikipedia tiene un artículo sobre pruebas unitarias si estás interesado.
Las pruebas unitarias son para cualquier código que desee mantener.
En pocas palabras, la idea es escribir muchas pruebas pequeñas, cada una de las cuales se puede ejecutar de forma aislada, y probar la parte más pequeña posible de su base de código (a menudo clases individuales o funciones individuales). Si le doy a esta función la entrada que espera, ¿devuelve la salida que esperaba? Si lo hace, eso significa que el resto de la aplicación puede asumir que funciona. Y si no es así, preferiría detectar el error en una función de prueba unitaria pequeña, simple y aislada que tratar de rastrearla a través de la totalidad de mi aplicación.
Por supuesto, también requiere que seas bastante disciplinado en la forma de escribir el código, tanto porque tiene que ser posible aislar funciones individuales o clases para probarlas, y porque, bueno, las pruebas no se escriben por sí mismas. Tienes que hacer eso. ;)
Dada la calidad de la mayoría del código PHP que he visto, diría que las pruebas unitarias definitivamente tienen su lugar en la comunidad PHP. Más que en casi cualquier otro idioma, de hecho. ;)
Las pruebas unitarias son pruebas automatizadas que evalúan si un determinado código hace lo que usted espera que haga en un conjunto de circunstancias determinado. Las buenas pruebas unitarias prueban pequeñas piezas de funcionalidad, a menudo al nivel de funciones individuales.
Las pruebas unitarias generalmente están estructuradas de modo que configure algún estado, ejecute la función o método que desea probar y luego confirme la salida de esa función o un cambio en otro estado como resultado de esa función. La mayoría de los marcos de prueba de unidades tienen utilidades para soportar y estructurar esto, como por ejemplo:
- Casos de prueba : formas de agrupar pruebas similares, a menudo que prueban el mismo archivo o sección de código.
- Funciones de configuración / desmontaje : funciones a las que se llama antes de cada prueba que configuran y limpian el estado en todas las pruebas.
- Funciones de aserción : funciones que le permiten afirmar que las cosas específicas son verdaderas, como un valor igual a otro valor esperado, que un valor es verdadero / falso, etc. Cuando fallan, le muestran los valores esperados y reales .
- Una aplicación de prueba de ejecución : una aplicación que ejecuta todas sus pruebas una detrás de otra, que le muestra si cada una tuvo éxito o falló, y si falló, qué afirmaciones específicas fallaron y cuál fue el valor real en comparación con el valor esperado.
Las pruebas unitarias son útiles por una serie de razones:
- Aseguran que tu código funcione , mientras lo estás escribiendo, sin tener que probarlo manualmente. Mientras escribes una función, puedes poner a prueba tus suposiciones sobre cómo funciona y detectar errores de inmediato.
- Siguen funcionando el código funcionando , incluso cuando tú u otra persona lo cambian. Una vez que se escribe una función y se prueba completamente la unidad (es decir, todas las cosas que debe hacer tienen pruebas de unidad asociadas que verifican que realmente lo hacen), entonces si usted o alguien más rompe cualquiera de esa funcionalidad, sabrá de inmediato cuando ejecuta la prueba unitaria y puede rectificarla fácilmente.
- Ellos te ayudan a depurar . En lugar de tener que buscar grandes volúmenes de código cuando intenta diagnosticar un error observado al probar su aplicación manualmente, las pruebas unitarias le permiten concentrarse en funciones más pequeñas, reduciendo la complejidad que necesita para pensar.
- Documentan su código de una manera que se mantiene actualizada a medida que cambia el código. Es fácil olvidarse de actualizar los documentos de diseño y los comentarios. Las pruebas unitarias, por otro lado, se rompen cuando no están actualizadas. Si está escrito claramente, muestran qué código realmente hace en una situación específica, y pueden demostrárselo.
Las pruebas unitarias son útiles en cualquier código que sea más grande que unas pocas líneas, independientemente del idioma. Definitivamente he probado el código php, incluso para proyectos relativamente pequeños, y obtuve recompensas inmediatas por ello.
Si escribe una aplicación de cualquier descripción, debe considerar las pruebas unitarias. Hecho correctamente, te obligan a pensar sobre la calidad del código que estás entregando a tus usuarios. Creo que el problema que tiene aquí es la diferencia entre el código de prueba de la unidad y la prueba unitaria automática. Las pruebas unitarias se pueden realizar simplemente escribiendo un conjunto de pruebas y luego ejecutándolas manualmente.
Las pruebas unitarias automatizadas, por otro lado, dependen de que tenga algún tipo de aplicación / arnés para ejecutar y volver a ejecutar las pruebas. Con las pruebas unitarias automatizadas puede volver a ejecutar las pruebas con solo presionar un botón. Entonces, ¿por qué volver a ejecutar una prueba es tan importante? Simplemente hablando, no se escriben aplicaciones ejecutar pruebas en ellos una vez y luego alejarse de ellos. Escriba sus pruebas para que ejercite su código en pequeños recorridos discretos y ejecútelos durante todo el proceso de desarrollo. Al hacer esto, con un conjunto de pruebas bien escritas, tiene muchas más posibilidades de identificar el código que se ha roto con las actualizaciones.
Una búsqueda en google para "pruebas de unidades de php" arroja un tesoro de información sobre este tema. El proyecto PHPUnit parece interesante.
Una prueba unitaria es una prueba de una pequeña porción del código que usted escribe. Lo prueba de forma aislada del resto del sistema para garantizar que esa parte del código funcione.
Es más fácil probar muchas porciones pequeñas de código, asegurar que funcionen y luego probarlas trabajando juntas, en lugar de probar el sistema como un todo.
Es importante distinguir entre pruebas unitarias y pruebas unitarias automatizadas. Siempre debes probar tu código en una unidad. Sin embargo, la automatización de las pruebas unitarias es un tema completamente diferente.
Sobre por qué las pruebas unitarias deberían hacerse en primer lugar, me gustaría agregar el argumento de Barry Boehm: "una falla descubierta y corregida en la fase de prueba de la unidad es más de cien veces más barata que si se realiza después de la entrega a la cliente."
Si bien el multiplicador suena un poco difícil, creo que el argumento definitivamente justifica las pruebas.
Además de lo que ya se ha respondido, tener casos de pruebas que cubran tu código te permite proceder a Refactorizar (mejorando el diseño de tu código sin modificar su comportamiento observable).
Los marcos de prueba unitaria para PHP comprenden PHPUnit y SimpleTest que se han comparado en .