7

Encuentro el concepto de 'pruebas de integración' confuso. Parece que hay un buen número de explicaciones y alcances:¿La prueba de integración es un término genérico y, de ser así, qué tipos de pruebas incluye?

  • funcional/pruebas de aceptación (por ejemplo, pruebas de la interfaz de usuario con, por ejemplo, selenio)
  • Prueba de la integración de las diferentes clases/módulos de software en conjunto (simplemente probando dos o más clases juntas, sin que ellas hagan nada especial como llamadas db y otras cosas)
  • Prueba de la configuración del sistema función/característica independiente (la integración de la base de datos funciona, las dependencias están correctamente inyectadas, seguridad clases de base trabajan)
  • Comprobación del sistema como servicios integrales (en ejecución que utilizan bases de datos, servicios web, etc.)
  • , etc, etc

comienzo a ver las pruebas de integración como un término general (en contraposición a la definición que en las conversaciones de programación, donde el significado específico/estricta se da a menudo a ella):

  • pruebas de integración contiene:
    • pruebas de integración Unidad (integración de pruebas de diferentes clases dentro del mismo paquete sin llamar a bibliotecas externas)
    • funcional/pruebas de aceptación (prueba de salida final del software a través de selenio, por ejemplo)
    • Las pruebas del sistema (incluye varias pruebas más técnicas & no cuentan relacionados que se enumeran en Wikipedia article)

En el ciclo de vida predeterminado de Maven, solo hay fases de "prueba" y "prueba de integración". Esto parece dividir las pruebas en aproximadamente dos categorías y estaría de acuerdo con estas suposiciones.

Hay muchas preguntas y respuestas existentes que buscan diferencias entre pruebas unitarias, pruebas funcionales, pruebas de regresión, etc. en general. Sin embargo, estoy buscando respuestas más específicas con respecto a las pruebas de integración: ¿cómo categorizas las pruebas de integración y qué incluyes dentro de ellas? Además, ¿evitas dividir las pruebas de software aproximadamente en dos categorías como lo he hecho: pruebas unitarias (1 unidad) vs. pruebas de integración (2+ unidades)?

+0

Solo una nota: como los temas parecen tan borrosos, no creo que pueda elegir cualquiera de las respuestas como 'aceptadas'. Todos son muy buenos. –

Respuesta

3

La informática está llena de términos sobrecargados que tienen un significado leve (y en ocasiones no tan leve) diferente para cualquier programador con el que hable. La prueba de integración es una de esas.

Tiendo a favorecer su interpretación de las pruebas de integración como prueba de 2 o más unidades conectadas entre sí. Pero esto todavía es bastante difuso ya que podemos tener diferentes definiciones de lo que es una 'unidad'.

Creo que es más importante que un equipo de desarrolladores acuerden lo que quieren decir con pruebas de integración en lugar de encontrar la única definición verdadera de pruebas de integración.

3

Mi equipo ve (usando sus palabras), las pruebas de integración de cubrir

  • Prueba de la integración de las diferentes clases/módulos de software junto (simplemente probar dos o más clases juntos, sin ellos hacer nada especial como db llamadas y esas cosas)
  • Prueba de la función de la configuración del sistema/funciones de forma independiente (trabajos de integración de bases de datos, las dependencias se inyectan correctamente, clases base seguridad en el trabajo)

y nada más. Pruebas del sistema y pruebas de aceptación que vemos como diferentes familias.

tuvimos algunas largas discusiones sobre esto, para asegurarnos de que todos habláramos el mismo idioma cuando hablamos sobre las pruebas.

No estoy muy en desacuerdo con lo que define como pruebas de integración, pero solo digo que es bueno si todas las personas con las que trabaja acuerdan una clasificación.

2

Bueno, tiene pruebas unitarias, cuya definición precisa varía, pero sin duda contiene todas las pruebas definidas con una herramienta similar a JUnit y organizadas de la misma manera que el código fuente. Si para cualquier archivo de código fuente, puede encontrar una y solo una prueba, entonces lo que encontró es una prueba de unidad.

Y luego están las pruebas del sistema, que prueban el sistema completo de la forma más cercana posible para que un cliente lo vea.

Cualquier prueba que se encuentre en el espacio entre estas dos cosas es una prueba de integración, ni isomórfica con el código fuente ni representativa de la experiencia del usuario final.

Esa es una brecha bastante grande entre dos categorías que a su vez varían mucho en la práctica. Esa brecha puede contener muchas pruebas potencialmente útiles, pero la naturaleza de esas pruebas naturalmente variará bastante dramáticamente.

Cuestiones relacionadas