lunes, 10 de febrero de 2020

¿Qué es un doble de pruebas?

Las apps, las webs y otros tipos de aplicativos, están compuestos por un conjunto de módulos que funcionando todos de forma armoniosa nos ofrecen las funcionalidades que tan útiles nos resultan para realizar múltiples operaciones. Me refiero a aplicaciones cómo por ejemplo las de los bancos. Hoy en día gracias a ellas somos capaces de resolver muchas gestiones sin movernos de donde estemos.

Los distintos módulos que componen estas aplicaciones se han de probar antes de ponerlos a disposición de los clientes. No nos haría ninguna gracia perder dinero de nuestras cuentas por errores informáticos, Verdad?. Los módulos se pueden probar de forma manual o de forma automática. Para probar módulos de forma automática lo que se hace es escribir un módulo que es capaz de probar. Es decir, hacemos programas que prueban programas.

El automatizar las pruebas de los programas es una tendencia actual. Múltiples organizaciones han demostrado las múltiples ventajas que supone tener automatizadas las pruebas. Con pruebas automatizadas las aplicaciones se:
  • Desarrollan mejor
  • Cambian y actualizan mejor
  • Funcionan mejor
Para escribir programas de pruebas existen múltiples librerías que ayudan al programador. Hay librerías tanto de pago cómo gratuitas para casi todos los lenguajes de programación.

Desde hace mucho tiempo el tema de las pruebas ha sido una preocupación para los profesionales de la informática. Para abordar su ejecución hay un estándar de facto sobre los tipos de pruebas a las que se debe someter a un aplicativo. En primera instancia se diferencias la pruebas funcionales de las no funcionales. Las pruebas funcionales se dividen en:
  • Pruebas unitarias
  • Pruebas de integración
  • Pruebas del sistema
  • Pruebas de aceptación 
Una vez establecido este escenario, se puede entender lo que es un doble de prueba. Primero se centra el discurso en la pruebas unitarias.

Las pruebas unitarias tienen el objetivo de asegurar el buen funcionamiento de cada uno de los módulos que componen el aplicativo de forma aislada, es decir no se quieren probar las interacciones con otros módulos. Es aquí donde los dobles de prueba son necesarios. Si se quiere probar un módulo que para funcionar necesita de otros pero se quiere probar de forma aislada, una solución es dotar a la prueba de suplantadores de los módulos necesarios para que el módulo bajo prueba pueda llevar a cabo su función. Estos suplantadores son los dobles de prueba. Es decir, son simulacros de módulos que implementan funcionalidades diversas.

Por ejemplo en el aplicativo del banco, podemos estar probando un módulo que recoge de una base de datos la información sobre la cuenta corriente de un cliente dado y los envía a un fichero de log. Suponiendo que el módulo bajo prueba para recoger esos datos hace uso de otro módulo que es el que accede a los datos, para la prueba unitaria se crea un doble de prueba que suplanta al módulo que accede a los datos. Esto independiza la prueba del módulo bajo prueba del módulo con el que interacciona. Aunque el módulo de acceso a datos auténtico deje de funcionar, la prueba del módulo que escribe en el fichero de log seguirá funcionando correctamente.

Los dobles de prueba son imprescindibles para conseguir hacer pruebas unitarias ya que consiguen aislar la prueba de cada modulo ciñiendose a probar solo ese módulo. Sin ellos esta sería una labor imposible.

Al igual que para construir pruebas unitarias para los otros tipos de pruebas los dobles también tienen utilidad. Un ejemplo en las pruebas de integración un conjunto de módulos se invoca a otro sistema para solicitar las coordenadas de una ubicación. Se puede hacer un doble de prueba que suplante al sistema de ubicaciones, de esta forma aunque el sistema de ubicaciones no esté disponible podemos ejecutar la prueba de nuestro conjunto de módulos.

Un doble de prueba es un módulo que suplanta a otro y simula su funcionalidad con el objetivo de poder hacer una prueba de otro que interacciona con él.

Para información más detallada y con ejemplos de código, ver el post "Pruebas software. Dobles de prueba con ejemplos (Java, Junit y Mockito)" publicado en este mismo blog el 29/9/2019.


No hay comentarios:

Publicar un comentario