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

Patrón DAO en PHP (Data Access Object in PHP)

Este patrón es de gran ayuda a la hora de separar la manipulación de datos y acceso a la DB de la lógica propia de la aplicación. Una versión simplificada de este patrón posee tres componentes principales: El acceso a los datos El objeto de transferencia de datos (value object) El cliente que consume esos datos Antes de presentar el diagrama de clases analicemos el problema el cual consiste en encontrar una forma de manipular los datos de manera tal que el modo de acceder a los mismos sea transparente al cliente que los consume. Esto quiere decir que el cliente no tiene la necesidad de conocer cómo se acceden a los datos (SQL, conectores, motor de base de datos, tipo de base de datos, etc.). El objeto de acceso a los datos debe ser capaz de poder proveer lo que el cliente requiera y además el cliente debe poder utilizar cualquier otro objeto de acceso sin que esto afecte su lógica interna asegurando así que el sistema funcionará aún cuando se cambie de motor de base de...

Novedades en Virtual Library for Moodle

Hace exactamente 7 meses que Virtual Library for Moodle fue liberada y hemos superado las 600 descargas!! .. y siguen aumentando . El sitio oficial fue recientemente actualizado para mejorar la navegabilidad y poder brindar a nuestros usuarios un lugar donde encontrar información relativa al proyecto, descargar el software y la documentación además de obtener un método para contactarse. Como todo proyecto Open Source estamos más que felices de recibir participación en su desarrollo; ya sea traduciendo a algún idioma aún no disponible, realizando correcciones, o simplemente utilizándola. Varios de los actuales usuarios han hecho sus aportes comentándonos sus experiencias y sugerencias, en general, han superado con creces nuestras espectativas. En pocos meses estaremos lanzando una nueva versión beta para que todos tengan la posibilidad de probar las últimas correcciones realizadas como así también algunas características incorporadas, como por ejemplo un instalador tanto para Windows ...

Cómo elegir tu nueva notebook?

Tips para elegir tu notebook Al momento de elegir una nueva (o la primera) notebook muchos me consultan ¿cuál es la mejor? Es una pregunta simple pero que para cada uno tiene una respuesta diferente. Mi idea al responderla es siempre averiguar el uso que esa persona le dará a la notebook ya que en definitiva la mejor elección es la que se adapta a la vida de su usuario. Si estás buscando comprarte una nueva notebook yo te recomiendo hacer lo siguiente: Establece un presupuesto máximo . Es muy importante saber hasta cuánto puedes invertir, para mi un buen presupuesto no supera los $4000 (ARS) con un margen aceptable de $500 (ARS) Busca promociones o descuentos . Una muy buena opción a la hora de comprar es buscar los lugares que ofrecen descuentos o promociones con diferentes medios de pago esto te permitirá adquirir un buen producto a un mejor precio Elige tres marcas . De todos los fabricantes disponibles en el mercado  elige los tres que más te gusten por alguna de estas...