unitarias tipos software que pruebas ist integración integracion funcionales estrés ejemplos ejemplo carga unit-testing mocking

unit testing - tipos - ¿Una visión general de la terminología de pruebas unitarias(stub vs mock, integración vs. interacción)?



que es junit (5)

Estoy usando más pruebas de unidad en mis proyectos y leyendo toda la información que puedo en línea y me estoy confundiendo con mucha terminología. Como resultado, probablemente estoy usando estos términos incorrectamente en búsquedas y búsquedas en Google.

¿Alguien puede resumir todos los términos de las pruebas de unidad, como los tipos "falsos", así como los tipos de prueba (interacción frente a integración)?


Cuando se trata de simulacros frente a falsos frente a talones, en realidad hay diferentes maneras en que las personas los interpretan. Generalmente tomo prestados los significados definidos por Martin Fowler :

  1. Los objetos de código auxiliar proporcionan una respuesta válida, pero es estática: independientemente de la información que ingrese, siempre obtendrá la misma respuesta.
  2. Los objetos falsos actúan como el objeto real, pero lo hacen de una manera más simple, como un DAO que usa un Mapa para almacenar datos en lugar de una base de datos real.
  3. Los objetos simulados se utilizan en casos de prueba simulados: validan que ciertos métodos son llamados en esos objetos.

La prueba de interacción es un término general que se refiere a las pruebas unitarias que aseguran que la interacción entre los objetos es correcta (asegurándose de que se llame a los métodos esperados). Esto se opone a las pruebas estatales (o clásicas), que no le importa lo que suceda con los métodos, siempre que el estado resultante sea correcto. Estos tipos de pruebas se comparan en el artículo de Fowler que vinculé anteriormente.

Las pruebas de integración realmente no son un aspecto de las pruebas unitarias, son un nivel por encima de las pruebas unitarias. Toma diferentes unidades y verifica que funcionen juntas correctamente.


Este article de MSN Magazine explica los términos y entra en algunos detalles con ejemplos y código fuente.

Básicamente estas son las pruebas de dobles:

  • Maniquí - Los maniquíes no contienen implementación
  • Stub : los stubs son implementaciones mínimas de interfaces o clases base
  • Spy - un espía registrará qué miembros fueron invocados
  • Falso : más complejo, un falso puede parecerse a una implementación de producción
  • Simulacro : un simulacro generalmente se crea dinámicamente mediante una biblioteca simulada y, dependiendo de su configuración, un simulacro puede comportarse como un maniquí, un talón o un espía


Fowler, por supuesto, hizo un gran trabajo para diferenciar Mocks y Stubs pero, para mí, el libro XUnit Test Patterns es la referencia y sugeriría revisar Mocks, Fakes, Stubs y Dummies para una comparación completa.

Sí, lo sé, esto es confuso y es por eso que sugeriría revisar si Mocks y Stubs no son Spies , luego espiemos y finalmente Mockito - The New Mock Framework on the Block también.

Con respecto a los diferentes tipos de pruebas, una explicación simplificada podría ser (esta no es una lista exhaustiva):

  • Pruebas unitarias: probar una sola "unidad", un método, aislado
  • Pruebas de integración: probar la integración de varias unidades (métodos, clases, componentes, capas)
  • pruebas funcionales: prueba de un escenario de extremo a extremo (desde la perspectiva del usuario)

Todos estos tipos son útiles y no exclusivos, en realidad no tienen la misma intención.


He leído (y lo recomiendo de todo corazón) The Art of Unit Testing de Roy Osherove. Utiliza un conjunto simplificado de terminología.

Parafraseando su libro ...

Prueba de integración : cualquier prueba que llegue fuera del proceso u objeto actual para interactuar con otra cosa

Prueba de interacción : una prueba sobre la forma en que los objetos trabajan juntos

Prueba estatal : una prueba sobre los resultados producidos por una operación

Fake : cualquier objeto stand-in que se usa en lugar del objeto real.

Stub : un objeto de soporte que proporciona una dependencia requerida por el código bajo prueba

Simulacro : un suplente utilizado para verificar los resultados de la prueba.

Tenga en cuenta que aquí se pueden proporcionar tanto Stubs como Mocks mediante un marco de Mocking: la distinción se refiere tanto a cómo se usan como a la tecnología utilizada.