¿Cuál es la diferencia entre las pruebas de integración y las pruebas funcionales? [cerrado]

132

¿Las pruebas funcionales y las pruebas de integración son iguales?

Comienza su prueba a través de pruebas unitarias, luego, después de completar las pruebas unitarias, realiza pruebas de integración donde prueba el sistema en su conjunto. ¿Las pruebas funcionales son lo mismo que las pruebas de integración? Todavía está tomando el sistema como un todo y probándolo para la conformidad de la funcionalidad.

Mishthi
fuente
1
posible duplicado de [The Agile Way: Pruebas de integración vs Pruebas funcionales o ambas? ] ( stackoverflow.com/questions/555899/… )
Pascal Thivent
14
¿Puedo sugerirle que acepte algunas respuestas de preguntas anteriores que hizo?
Stefano Borini,
Vea mi respuesta aquí: stackoverflow.com/questions/2741832/…
Andrejs
66
Tengo que decir que esta pregunta representa lo que está mal en este sitio. ¿Qué hay de malo en esta pregunta? ¿Cómo es demasiado amplio? Está preguntando algo MUY específico, relacionado con la programación. ¿Cuál es la diferencia entre algo? Incluso puede representarse matemáticamente. Parece que hay una gran cantidad de preguntas realmente importantes y realmente relevantes que se cierran por razones inexplicables. Sé que en serio SO, la gente me va a decir que estoy equivocado, pero el hecho de que estas preguntas se fracturen en sitios como Quara.com demuestra que estoy en lo cierto. [Básicamente SO está abdicando cuota de mercado].
Jim Maguire
1
Estoy de acuerdo con @JimMaguire: la pregunta que se hace es una pregunta de "sí / no" (más la explicación de por qué sí o no). No veo por qué se considera no enfocado.
bob

Respuestas:

101

La prueba de integración es cuando prueba más de un componente y cómo funcionan juntos. Por ejemplo, cómo otro sistema interactúa con su sistema o la base de datos interactúa con su capa de abstracción de datos. Por lo general, esto requiere un sistema completamente instalado, aunque en su forma más pura no.

La prueba funcional es cuando prueba el sistema contra los requisitos funcionales del producto. La gestión de productos / proyectos generalmente los redacta y el control de calidad formaliza el proceso de lo que un usuario debería ver y experimentar, y cuál debería ser el resultado final de esos procesos. Dependiendo del producto, esto puede ser automatizado o no.

aceinthehole
fuente
9
Gracias ... sí, pero en las pruebas funcionales también cuando estamos probando el sistema contra el requisito funcional de que el tiempo también lo estamos tomando como un sistema integrado ... Y al realizar pruebas funcionales también descubriremos cómo funcionan las diferentes unidades juntos lo que puede ser thoght de como pruebas de integración ...
Mishthi
3
Especialmente en nuestro entorno, siempre consideramos que la prueba unitaria es una prueba de unidad escrita en una sola clase, las pruebas de integración son pruebas de unidad o pruebas de script sql que requieren más que una clase, una base de datos u otro sistema (generalmente requiere una instalación completa) y las pruebas funcionales son la prueba que ejecuta QA o las pruebas automatizadas de IU.
aceinthehole
1
Además, diría que si no ha realizado las pruebas de integración antes de las pruebas funcionales, entonces está haciendo ambas cosas al mismo tiempo, y solo encontrará errores en las partes de integración mientras prueba los requisitos funcionales.
aceinthehole
1
¿Cómo es que esta no es la respuesta aceptada?
tftd
@tftd porque el autor de esta pregunta ha estado inactivo desde 2010 ...
t3chb0t
20

Prueba funcional :

Sí, estamos probando el producto o el software en su conjunto funcionalmente si funciona correctamente o no (botones de prueba, enlaces, etc.)

Por ejemplo: página de inicio de sesión.

usted proporciona el nombre de usuario y la contraseña, prueba si lo lleva a la página de inicio o no.

Pruebas de integración :

Sí, solo prueba el software integrado, pero prueba dónde está ocurriendo el flujo de datos y si hay algún cambio en la base de datos.

Por ejemplo: envío de correo electrónico

Envía un correo a alguien, hay un flujo de datos y también cambia en la base de datos (la tabla enviada aumenta el valor en 1)


Recuerde: hacer clic en enlaces e imágenes no es una prueba de integración. Espero que haya entendido por qué, porque no hay cambios en la base de datos simplemente haciendo clic en un enlace.

Espero que esto te haya ayudado.

jsborn17
fuente
3
La base de datos es un detalle de implementación del estado del programa. Al hacer clic en el enlace también puede cambiar el estado del programa.
alehro
@ jsborn17 ¿las pruebas de integración son aplicables a una aplicación front-end que se comunica con una API aunque no podamos ejecutar la API?
Wancieho
8

Esta es una distinción importante, pero desafortunadamente nunca encontrará un acuerdo. El problema es que la mayoría de los desarrolladores los definen desde su propio punto de vista. Es muy similar al debate sobre Plutón. (Si estuviera más cerca del Sol, ¿sería un planeta?)

Las pruebas unitarias son fáciles de definir. Prueba el CUT ( Código bajo prueba ) y nada más. (Bueno, tan poco como sea posible). Eso significa simulacros, falsificaciones y accesorios.

En el otro extremo del espectro hay lo que muchas personas llaman pruebas de integración de sistemas . Eso está probando tanto como sea posible, pero sigue buscando errores en su propio CUT.

Pero ¿qué pasa con la vasta extensión entre?

  • Por ejemplo, ¿qué pasa si prueba solo un poco más que el CUT? ¿Qué pasa si incluye una función de Fibonacci, en lugar de usar un dispositivo que se había inyectado? Llamaría a eso prueba funcional , pero el mundo no está de acuerdo conmigo.
  • ¿Qué pasa si incluye time()o rand()? ¿O qué pasa si llamas http://google.com? Llamaría a ese sistema de prueba , pero nuevamente, estoy solo.

¿Por qué importa esto? Porque las pruebas del sistema no son confiables. Son necesarios, pero a veces fallarán por razones más allá de su control. Por otro lado, las pruebas funcionales siempre deben pasar, no fallar al azar; si son rápidos, también podrían usarse desde el principio para usar el desarrollo guiado por pruebas sin escribir demasiadas pruebas para su implementación interna. En otras palabras, creo que las pruebas unitarias pueden ser más problemáticas de lo que valen, y tengo buena compañía .

Puse pruebas en 3 ejes, con todos sus ceros en las pruebas unitarias :

  1. Pruebas funcionales: usando código real cada vez más profundo en tu pila de llamadas.
  2. Pruebas de integración: cada vez más alto en su pila de llamadas; en otras palabras, probar su CUT ejecutando el código que lo usaría.
  3. Pruebas del sistema: más y más operaciones irrepetibles (planificador O / S, reloj, red, etc. )

Una prueba puede ser fácilmente los 3, en diversos grados.

cdunn2001
fuente
las pruebas funcionales siempre pasan? o quieres decir que las pruebas funcionales siempre deben pasar?
aceinthehole
1
No deberían fallar al azar. Cuando fallan, deberían fallar siempre. Por ejemplo, no deben incluir llamadas a otros hosts. ¿Tal vez deberían llamarse Pruebas de comportamiento ? No sé el mejor término. Solo sé que son las pruebas más importantes, y generalmente se pasan por alto en la gran brecha entre las pruebas unitarias puras y totalmente burladas y las pruebas de integración de sistemas de alto nivel .
cdunn2001
"No deberían fallar al azar". - El término podría ser que son "deterministas"
kleaver
7

Pruebas funcionales: es un proceso de prueba en el que se prueban todos y cada uno de los componentes del módulo. Por ejemplo: si una página web contiene campos de texto, botones de radio, botones y componentes desplegables, etc., es necesario verificarlos.

Pruebas de integración: proceso donde se verifica el flujo de datos entre 2 módulos.

raghuram
fuente
4

Diría que ambos están estrechamente vinculados entre sí y son muy difíciles de distinguir entre ellos. En mi opinión, las pruebas de integración son un subconjunto de pruebas funcionales.

La prueba de funcionalidad se basa en los requisitos iniciales que recibe. Probará que el comportamiento de la aplicación es el esperado con los requisitos.

Cuando se trata de pruebas de integración, es la interacción entre módulos. Si el módulo A envía una entrada, el módulo B puede procesarla o no.

Naidu
fuente
+1 para "Las pruebas de integración son un subconjunto de las pruebas funcionales": mi experiencia también muestra que dicho enfoque de las pruebas es más significativo si se busca un resultado rápido. Por ejemplo, en mi código de prueba, generalmente trato el sistema como una sola unidad integrada: configuro una base de datos en memoria y luego alimento a los controladores MVC de mi aplicación con algunos datos de prueba y verifico su respuesta, y también verifico los datos en la base de datos para asegúrese de que toda la validación de datos haya funcionado como se esperaba, para evitar errores cuando el controlador MVC devuelve la respuesta correcta, pero en realidad no se pasa correctamente a la capa de la base de datos.
JustAMartin
4

Pruebas de integración: las pruebas de integración no son más que la prueba de diferentes módulos. Tienes que probar la relación entre módulos. Por ejemplo, si abre Facebook, verá la página de inicio de sesión después de ingresar el nombre de usuario y la contraseña, puede ver la página de inicio de Facebook, por lo tanto, la página de inicio de sesión es un módulo y la página de inicio es otro módulo. debe verificar solo la relación entre ellos significa que cuando inició sesión, solo la página de inicio debe estar abierta, no el cuadro de mensaje ni nada más. Existen 2 tipos principales de pruebas de integración: enfoque de arriba hacia abajo y enfoque de abajo hacia arriba.

Pruebas funcionales: en las pruebas funcionales solo debe pensar en la entrada y la salida. En este caso, debes pensar como un usuario real. Prueba de qué entrada dio y qué salida obtuvo es Prueba funcional. solo tienes que observar la salida. En las pruebas funcionales no necesita probar la codificación de la aplicación o el software.

Yogesh Deshpande
fuente
2

En un probador de pruebas funcionales, solo se enfoca la funcionalidad y la subfuncionalidad de la aplicación. La funcionalidad de la aplicación debería funcionar correctamente o no.

En las pruebas de integración, el probador debe verificar la dependencia entre los módulos o submódulos. El ejemplo de los registros de los módulos se debe buscar y mostrar correctamente en otro módulo.

Krunal
fuente
2

Prueba de integración: - Cuando se realizan las pruebas unitarias y los problemas se resuelven en los componentes relacionados, todos los componentes necesarios deben integrarse en un sistema para que pueda realizar una operación. Después de combinar los componentes del sistema, para comprobar si el sistema funciona correctamente o no, este tipo de prueba se denomina Prueba de integración.

Pruebas funcionales: - Las pruebas se dividen principalmente en dos categorías como 1. Pruebas funcionales 2. Pruebas no funcionales ** Pruebas funcionales: - Para comprobar si el software funciona de acuerdo con los requisitos del usuario o no. ** Pruebas no funcionales: - Para comprobar si el software cumple con los criterios de calidad como Prueba de estrés, Prueba de seguridad, etc.

Por lo general, el Cliente proporcionará los requisitos solo para la Prueba funcional y para la Prueba no funcional. No se deben mencionar los Requisitos, pero la aplicación necesariamente realiza esa actividad.

mohit sarsar
fuente
2

Pruebas de integración

  • Puede verse como los diferentes módulos del sistema trabajan juntos.
  • Nos referimos principalmente a la funcionalidad integrada de los diferentes módulos, más bien a los diferentes componentes del sistema.
  • Para que cualquier sistema o producto de software funcione de manera eficiente, cada componente debe estar sincronizado entre sí.
  • La mayoría de las veces la herramienta que usamos para las pruebas de integración se elegirá para las pruebas unitarias.
  • Se utiliza en situaciones complejas, cuando las pruebas unitarias no son suficientes para probar el sistema.

    Pruebas Funcionales

  • Se puede definir como una prueba de la funcionalidad individual de los módulos.
  • Se refiere a probar el producto de software a nivel individual, para verificar su funcionalidad.
  • Los casos de prueba se desarrollan para verificar el software en busca de resultados esperados e inesperados.
  • Este tipo de prueba se lleva a cabo más desde la perspectiva del usuario. Es decir, considera la expectativa del usuario para un tipo de entrada.
  • También se conoce como prueba de caja negra, así como prueba de caja cerrada

  • Cha
    fuente
    1

    La verificación de la funcionalidad de la aplicación se conoce generalmente como prueba funcional, donde la prueba de integración consiste en verificar el flujo de datos de un módulo a otro. Tomemos un ejemplo de la aplicación de transferencia de dinero. Supongamos que tenemos una página en la que ingresamos todas las credenciales y si presionamos el botón de transferencia y luego si tenemos éxito, entonces esta es una prueba funcional. Pero en el mismo ejemplo, si verificamos la transferencia de la cantidad, se trata de pruebas de integración.

    Rahul Talwar
    fuente
    0

    Los autores divergen mucho en esto. No creo que haya "la" interpretación correcta para esto. Realmente depende

    Por ejemplo: la mayoría de los desarrolladores de Rails consideran las pruebas unitarias como pruebas de modelo, pruebas funcionales como pruebas de controlador y pruebas de integración como aquellas que usan algo como Capybara para explorar la aplicación desde la perspectiva del usuario final, es decir, navegar a través del HTML generado de la página, usando el DOM para verificar las expectativas.

    También hay pruebas de aceptación, que a su vez son una documentación "en vivo" del sistema (generalmente usan Gherkin para que sea posible escribirlas en lenguaje natural), que describen todas las características de la aplicación a través de múltiples escenarios, que a su vez están automatizados por un desarrollador. Esos, en mi humilde opinión, también podrían considerarse tanto pruebas funcionales como pruebas de integración.

    Una vez que comprenda el concepto clave detrás de cada uno de ellos, podrá ser más flexible con respecto a lo correcto o incorrecto. Entonces, nuevamente en mi humilde opinión, una prueba funcional también podría considerarse una prueba de integración. Para la prueba de integración, dependiendo del tipo de integración que esté ejerciendo, puede no considerarse una prueba funcional, pero generalmente tiene algunos requisitos en mente cuando escribe una prueba de integración, por lo que la mayoría de las veces también puede considerarse como Una prueba funcional.

    Nicholas Pufal
    fuente