Bienvenido a nuestra página, en este sitio encontrarás la respuesta de lo que andabas buscando.
Solución:
Las pruebas unitarias le dicen a un desarrollador que el código está haciendo las cosas bien; las pruebas funcionales le dicen a un desarrollador que el código está funcionando las cosas correctas.
Puede leer más en Pruebas unitarias versus pruebas funcionales
Una analogía bien explicada de la vida real de las pruebas unitarias y las pruebas funcionales se puede describir de la siguiente manera:
Muchas veces se compara el desarrollo de un sistema con la construcción de una casa. Si bien esta analogía no es del todo correcta, podemos ampliarla con el fin de comprender la diferencia entre pruebas unitarias y funcionales.
Las pruebas unitarias son análogas a un inspector de edificios que visita el sitio de construcción de una casa. Se centra en los diversos sistemas internos de la casa, los cimientos, la estructura, la electricidad, la plomería, etc. Él asegura (prueba) que las partes de la casa funcionarán correctamente y con seguridad, es decir, cumplirán con el código de construcción.
Las pruebas funcionales en este escenario son análogas a la visita del propietario a este mismo sitio de construcción. Da por sentado que los sistemas internos se comportarán adecuadamente, que el inspector de edificios está realizando su tarea. El propietario está enfocado en cómo será vivir en esta casa. Le preocupa cómo se ve la casa, si las distintas habitaciones tienen un tamaño cómodo, si la casa se adapta a las necesidades de la familia, si las ventanas están en un buen lugar para recibir el sol de la mañana.
El propietario está realizando pruebas funcionales en la casa. Tiene la perspectiva del usuario.
El inspector de edificios está realizando pruebas unitarias en la casa. Tiene la perspectiva del constructor.
Como un resumen,
Las pruebas unitarias se escriben a partir de un programadores perspectiva. Están hechos para asegurar que un método particular (o un unidad) de una clase realiza un conjunto de tareas específicas.
Las pruebas funcionales se escriben a partir de la del usuario perspectiva. Se aseguran de que el sistema sea marcha como los usuarios esperan que lo haga.
Prueba unitaria: probar una unidad individual, como un método (función) en una clase, con todas las dependencias simuladas.
Prueba funcional: también conocida como prueba de integración, prueba una parte de la funcionalidad en un sistema. Esto probará muchos métodos y puede interactuar con dependencias como bases de datos o servicios web.
-
Una prueba unitaria prueba un unidad independiente de comportamiento. ¿Qué es una unidad de comportamiento? Es la pieza más pequeña del sistema que se puede probar de forma independiente. (Esta definición es en realidad circular, IOW realmente no es una definición en absolutopero parece funcionar bastante bien en la práctica, porque puedes entenderlo intuitivamente).
-
Una prueba funcional prueba una pieza independiente de funcionalidad.
-
Una unidad de comportamiento es muy pequeña: aunque no me gusta este estúpido mantra de “prueba de una unidad por método”, de un Talla perspectiva se trata de la derecha. Una unidad de comportamiento es algo entre una parte de un método y tal vez un par de métodos. A lo sumo un objeto, pero no más de uno.
-
Una parte de la funcionalidad generalmente comprende muchos métodos y atraviesa varios objetos y, a menudo, a través de múltiples capas arquitectónicas.
-
Una prueba unitaria sería algo como: cuando llamo al
validate_country_code()
función y pasarle el código de país'ZZ'
debería volverfalse
. -
Una prueba funcional sería: cuando lleno el formulario de envío con un código de país de
ZZ
debería ser redirigido a una página de ayuda que me permite elegir el código de mi país de un menú.
-
Las pruebas unitarias están escritas por desarrolladores, para desarrolladores, desde la perspectiva del desarrollador.
-
Las pruebas funcionales pueden estar orientadas al usuario, en cuyo caso las escriben los desarrolladores junto con los usuarios (o tal vez con las herramientas adecuadas y los usuarios adecuados, incluso por los propios usuarios), para los usuarios, desde la perspectiva del usuario. O pueden estar orientados al desarrollador (por ejemplo, cuando describen alguna pieza interna de funcionalidad que al usuario no le importa), en cuyo caso están escritos por desarrolladores, para desarrolladores, pero aún desde la perspectiva del usuario.
-
En el primer caso, las pruebas funcionales también pueden servir como pruebas de aceptación y como una codificación ejecutable de requisitos funcionales o una especificación funcional, en el último caso, también pueden servir como pruebas de integración.
-
Las pruebas unitarias cambian con frecuencia, las pruebas funcionales nunca deben cambiar dentro de una versión principal.