Pensando TDD (I)

Siempre escuchamos que TDD es una técnica de diseño que es guiada por pruebas. Pero dado que tenemos que escribir la prueba primero, nuestra mente comienza a pensar en términos de pruebas en lugar de diseño. Entonces comenzamos a pensar en casos borde, malas entradas, y cosas que son importante pensar, pero desvían nuestra atención del objetivo principal de la técnica, que es diseñar. En esta entrada voy a volcar mi tren de pensamientos cuando diseño a través de TDD, para que puedan contrastar la diferencia acerca de pensar enfocado en pruebas y pensar acerca de diseño. Continuar leyendo →

Pruebas con tiempo en java 8

En mi artículo anterior revisé algunas técnicas para escribir pruebas que manipularan el tiempo en una aplicación legado. Hoy estaré compartiendo estrategias para escribir código que manipule el tiempo usando Java 8.

Continuar leyendo →

Pruebas con tiempo en aplicaciones legado

Las pruebas unitarias que dependen del tiempo son siempre complicadas. La manera aceptada de hacerlas es envolver todas las llamadas para obtener la hora del sistema en un objeto “Clock”. Comenzando con Java 8, la nueva API de fechas y hora introdujo el objeto Clock al lenguaje, que hace más simple inyectar en una clase y sustituir por un doble en una prueba. Antes de eso, en Java 7 y anteriores, era tu responsabilidad crear dicho objeto.

Continuar leyendo →

Migrando de Octopress 2 a Hugo

Hace algún tiempo atrás, migré mi blog desde Wordpress a Octopress 2. Para el momento representaba un gran avance para mi y me introdujo al mundo de los generadores de sitios estáticos. Escribir en markdown es un placer y llevar el “código” de mi blog en git es muy natural para mi como desarrollador. Sin embargo el tiempo pasó y encontré algunas dificultades.

Continuar leyendo →

TDD o no TDD

No cabe duda de que escribir pruebas unitarias para nuestro código en los proyectos es una práctica excelente que rinde grandes beneficios. Sin embargo, en este artículo quiero tratar el tema de si debo escribir las pruebas primero que el código de producción (técnica conocida como TDD), o si debo cubrir el código con pruebas (escribirlas después del código de producción).

Continuar leyendo →

Escribiendo mejores escenarios

Al momento de describir las características de un sistema a través de BDD, utilizamos ejemplos planteados en forma de escenarios para expresar cómo debe comportarse el sistema. Dichos escenarios son esenciales porque en ellos está plasmado el conocimiento del dominio de la aplicación, y sirven para documentar el sistema y también como insumo en el proceso de validación cuando los automatizamos utilizando herramientas BDD. A continuación veremos algunas preguntas que surgen y recomendaciones para lograr escenarios de calidad en nuestro proyecto.

Continuar leyendo →

Lanzamiento Ágiles 2014

El 27 de marzo de 2014, en la universidad EAFIT en Medellín, Colombia, fue el lanzamiento oficial de Ágiles 2014, el evento de agilidad más importante de la comunidad latinoamericana. Para complementar los artículos de otros miembros de la comunidad, les cuento como fue mi experiencia.

Continuar leyendo →

AgileOpenBogota 2014: Mi experiencia

El sábado 8 de marzo de 2014 se llevó a cabo el Agile Open Bogotá 2014, en las instalaciones de la Cámara de Comercio de Bogotá. El evento contó con una asistencia aproximada de 150 personas, dedicadas al agilismo, dispuestas a compartir experiencias, enseñar y aprender. Tuve la oportunidad de asistir, y a continuación les comparto mi experiencia.

Continuar leyendo →

Pruebas automatizadas: una visión de desarrollador

El mundo de las pruebas en el desarrollo de software es muy amplio, y con la aplicación de metodologías ágiles cada vez más usadas, se ha borrado un poco la línea entre las tareas de un desarrollador y de un tester puro, y han comenzado a compartir algunas responsabilidades. A continuación expongo, desde mi punto de vista como desarrollador y no especialista en pruebas, cuál debe ser la colaboración de un desarrollador en esta parte importante del proceso de desarrollo.

Continuar leyendo →

Inyección de Características

Según la definición, BDD es una metodología que nos permite construir software que importa. La inyección de características es una técnica de análisis creada por Chris Matts que nos ayuda a encontrar características que nos permitan aportar el máximo de valor.

Continuar leyendo →