La diferencia entre pruebas unitarias y pruebas de integración, se podría resumir con un simple y divertido gif:

Y es que poco tienen en común! Mientras que las pruebas unitarias corren pruebas sobre partes del código de forma independiente las pruebas de integración se hacen necesarias cuando queremos probar de una manera sistemica un proyecto como un todo.

Supongamos que la puerta y cerradura del gif es un proyecto de software que tiene 2 componentes: cerradura y puerta corrediza,  y que escribimos las siguientes pruebas unitarias:

Pruebas unitarias de la cerradura:

  1. ✅ La cerradura abre correctamente
  2. ✅ La cerradura cierra correctamente
  3. ✅ La cerradura es de color negro

Pruebas unitarias de la puerta

  1. ✅ La puerta abre correctamente
  2. ✅ La puerta cierra correctamente
  3. ✅ La puerta es de color blanco

Hasta aquí todo muy bien, le dices a tu project manager, product manager y a tus colegas que el proyecto esta listo que las pruebas unitarias fueron un éxito y que deberían comenzar con al etapa de quality assurance. El proyecto llega al departamento de calidad y es inmediatamente regresado a desarrollo por fallas criticas en el sistema! :C

Decides escribir unas pruebas de integración para averiguar que paso!

CerraduraIT.java

  1. ✅ La cerradura encaja cuando la puerta esta cerrada
  2. ❌ La cerradura evita que la puerta se abra cuando esta cerrada

PuertaIT.java

  1. ❌ La puerta no se abre cuando la cerradura esta cerrada
  2. ❌ La puerta no se cierra si la cerradura esta cerrada
  3. ✅ La puerta se abre si la cerradura esta abierta

y entonces es cuando dices: “Necesito otras dos semanas para re-escribir cerradura! o hacer que puerta ya no sea corrediza.” Y todos pierden la cabeza!

Conclusión

Es necesario que desde el principio de nuestro desarrollo se realicen tanto pruebas de integración como pruebas unitarias. La combinación de ambas garantiza que el código planteado sea de buena calidad y verdaderamente solucione los problemas para los cuales fue hecho.

Existen cientos de frameworks que nos facilitan este trabajo para prácticamente todos los lenguajes de programación relevantes hoy en día. Para enumerar algunos:

Java

  • JUnit
  • Mockito
  • jMock
  • TestNG
  • PowerMock

JavaScript

  • Mocha
  • Fraudster
  • Jest
  • Jasmine
  • Tape

PHP

  • PHPUnit
  • Codeception
  • Behat
  • PHPSec
  • Storyplayer

 

 

 

Categorized in: