Ir al contenido principal

Cómo implementar clases testeables

Clases testeables lineamientos básicos

Para lograr una implementación testeable se recomienda cumplir con los siguientes lineamientos:
  • Bajo acoplamiento
  • Capa de acceso a datos intercambiable
  • Minimizar las interfaces privadas
  • Comportamiento de cada interface debe ser parametrizable y tener valor de retorno
  • División en componentes más pequeños
  • Reutilizar la mayor cantidad de componentes posible
Cada uno de estos puntos contribuye a la implementación de una clase testeable. Esto garantiza que podrá ser modificada sin propagar errores inprevistos a otras partes del sistema.

Bajo acoplamiento

El bajo acoplamiento es uno de los principales puntos a tener en cuenta a la hora de programar, pero no siempre se cumple.

Capa de acceso a datos intercambiable

El origen de los datos no suele cambiar periodicamente durante la vida de un sistema pero si durante el desarrollo, más aún en la etapa de investigación. Implementar una capa de acceso a datos que no sólo permita utilizar cualquier motor de base de datos sino que también permita trabajar con datos dummy o de pruebas (sobre todo en las pruebas unitarias donde no es aconsajable realizar peticiones a la base de datos) es una de las características que debe tenerse en mente durante todo el desarrollo.

Minimizar las interfaces privadas

Las interfaces o mensajes privados son útiles cuando se trata de procesos o mensajes internos que no deben ser utilizados por los componentes externos, sin embargo el uso debe ser restringido y muy bien pensado y en algunos casos evitados ya que estos mensajes privados no podrán ser testeados mediante pruebas unitarias y mucho menos funcionales.

Comportamiento de cada interface debe ser parametrizable y tener valor de retorno

Es común tener métodos que no reciben ningún parámetro y no devuelven ningún valor, esto pasa cuando la implementación no es realizada correctamente. Un método con tales características por lo general indican que no deberían estar en esa clase o bien abusan de las variables miembros directamente y no a través de sus "accessors".

División en componentes más pequeños

Siempre la mejor estrategia para encarar cualquier problema es dividirlo en problemas más pequeños. Es mucho más manejable varios problemas simples antes de que un único problema grande y complejo.

Reutilizar la mayor cantidad de componentes posible

No reinventar la rueda cada vez, sino al contrario, buscar y analizar qué partes del sistema resuelven un problema similar o idéntico y reutilizar el código ya implementado. Es muy común encontrar porciones de código que podrian reutilizarse pero debido a su alto acoplamiento no es factible extraerlo para que ambos puntos del sistema lo reutilicen. En estos casos es necesario analizar el proceso conocido como "refactorización". Existen dos caminos a seguir en este punto: uno es realizar todas las modificaciones necesarias para lograr el bajo acomplamiento y así poder reutilizar el código, o bien realizar la refactorización en etapas bien planificadas donde el primer paso es duplicar la lógica reutilizable en un componente que será utilizado por el nuevo código y en un futuro será el reemplazo de la lógica original de donde fue extraida.

Comentarios

Entradas populares de este blog

Configurar Wi-Fi en Slackware

Ahora es común tener una notebook pero no lo es tanto el tener un linux en ella y mucho menos tener un Slackware en la notebook. Sin embargo, es posible tenerlo por lo que vale la pena dedicarle unas líneas a la configuración del Wi-Fi. Primero que nada hay que saber cuál es la placa de red inalambrica que posee la notebook, es decir su marca y modelo. Si ya está Linux instalado en la notebook solo se debe ejecutar el siguiente comando para saber cuál es la marca y modelo de la placa de red inalambrica: # lspci Este comando dará como resultado algo similar a esto: 09:00.0 Ethernet controller: Marvell Technology Group Ltd. Unknown device 4354 (rev 12) 0b:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02) En estas líneas se puede observar que la segunda hace referencia a la placa de red inalambrica que posee la notebook, en este caso una Intel PRO/Wireless 3945ABG . Con esta información lo que se debe hacer es buscar cuál es el módulo que se deb...

¿Qué hace un Licenciado en Sistemas?

Muchas veces, conocidos que no son informáticos, me han preguntado ¿qué hace un Licenciado en Sistemas? ...... " Buena pregunta " - sonaba en mi cabeza. Yo sé lo que yo quiero hacer en mi vida profesional pero realmente ¿qué perfil tiene un Licenciado en Sistemas? Es sencillo saber qué hace un médico, un veterinario, un ingeniero civil, etc. Por ejemplo si su perro se enferma ¿a quién llaman? si quieren construir un puente ... ¿a quién llaman? si ustedes están enfermos ¿a quién llaman? Ahora, si necesitan un sistema para su empresa ¿a quien llaman? ... ¿a un Lic. en Sistemas? ¿a un Ing. en Sistemas? ¿a un programador de aplicaciones? ¿a un analista en sistemas? ¿a un consultor informático? o ¿al amigo que se la pasa en internet y que sabe "todo" sobre computadoras e hizo un montón de cursos (word, excel, windows, redes, etc.)? Esta situación se presenta a menudo; es tan confuso que muchas veces hasta los mismos profesionales informáticos o entendidos en la materia ...

Paquetes para Slackware

Para aquellos que recién comienzan a utilizar Slackware , esta grandiosa distribución GNU/Linux una de las más antiguas, estables y seguras que existen; de seguro se habrán encontrado con la tarea de instalar algún programa extra y que no es distribuido junto con Slackware. Uno de los mejores sitios para encontrar software empaquetado para esta distro es Linuxpackages.net ; en este sitio podrán realizar búsquedas en versiones específicas de Slackware inclusive en la última versión liberada, la 12.1. Los paquete que aquí se encuentran ya han sido precompilados por lo que no deberán realizar los típicos pasos "./configure","make" y "make install"; sino que solamente podrán utilizar las herramientas installpkg, pkgtool o kpackage para instalar los paquetes descargados desde este sitio. Claro que no siempre encontrarán el soft que buscan en este excelente sitio, en esos casos siempre es bueno recurrir a los sitios del autor del soft en cuestión para obtener l...