Saltar al contenido

Categoría: Java

Unit Testing Principles, Practices, and Patterns: libro para iniciarte en el testing

Hace un par de años, me embarqué en la búsqueda de formas para potenciar mis habilidades en pruebas de software. Fue en un hilo de Twitter (ahora X) donde me topé con una discusión sobre las diferencias entre stub y mock. En medio de esta conversación, alguien recomendó el libro «Unit Testing Principles, Practices, and Patterns» de Vladimir Khorikov. Después de haber adquirido el libro hace algún tiempo, finalmente encontré el momento oportuno para sumergirme en sus páginas y, en este artículo, compartiré mis impresiones al respecto.

Portada del libro Unit Testing Principles, Practices, and Patterns de Vladimir Khorikov
Portada del libro, si deseas comprarlo haz clic en él para mas información

Contenido de Unit Testing Principles, Practices, and Patterns

En mi opinión, el libro abarca todo lo necesario para aprender a aplicar pruebas a cualquier software que desarrolles. Desde las razones fundamentales para realizar pruebas hasta conceptos como unit testing, mocks, test doubles, integration testing, end to end tests, entre otros. Además, finaliza con una sección muy interesante sobre anti-patrones, la cual nos brinda valiosas enseñanzas para mejorar nuestras prácticas de codificación y hacer que el código sea más accesible de probar.

Cada sección comienza con la presentación del concepto, seguido de su aplicación en el ámbito profesional. Posteriormente, se ofrece una serie de ejemplos de código que abarcan tanto el método o sección de código a probar como el código de las pruebas correspondientes. Este enfoque estructurado garantiza una comprensión completa y práctica de los temas tratados.

Es importante destacar que si bien los ejemplos de código están escritos en Java, su estructura y lógica son fácilmente transferibles a otros lenguajes de programación como PHP o C++. Cualquier profesional, independientemente de su preferencia de lenguaje de programación podrá leer los ejemplos sin problemas.

Además, el texto cuenta con secciones que contienen notas sobre consideraciones importantes a tener en cuenta, así como experiencias personales del autor frente a diversas situaciones. Esta combinación de teoría, ejemplos prácticos y reflexiones personales enriquece la experiencia de aprendizaje y ofrece una perspectiva más completa sobre el proceso de pruebas de software.

¿Debería leerlo?

Este libro es verdaderamente accesible para personas de todos los niveles de experiencia. Ya seas un principiante absoluto o un profesional experimentado en el campo de las pruebas de software, encontrarás que Unit Testing Principles, Practices, and Patterns ofrece valiosos conocimientos y perspectivas. En definitiva, si deseas adentrarte en el mundo del testing o mejorar tus habilidades existentes, este libro es para ti.

Deja un comentario

Mi experiencia en el JConf Dominicana

El pasado 29 de Junio tuve la oportunidad de ser parte de los ponentes del JConf Dominicana. Un evento realizado por la comunidad local de Java en la PUCCM. El evento estuvo formado por ponentes de distintas partes del mundo para comentar sobre las últimas tendencias en la JVM.

La estructura del evento me gustó porque en la mañana se hicieron las principales ponencias por parte de los conferencistas mas importantes en el teatro de la universidad. En la tarde, se hacían el resto de presentaciones en aulas de clase donde los asistentes podían escoger a cuales ir. Me gustó la organización porque estos temas tenían diferente dificultad y áreas, así que podías asistir a las charlas de tu perfil profesional sin problemas de choque.

Sesión matutina

Para llegar a Dominicana tuve que tomar varios vuelos con horarios incómodos. Por esta razón, tuve que dormir el día antes del evento y me levanté un poco tarde. Me perdí la apertura y la primera charla. Pero pude entrar al final de la de Sebastían Daschner sobre los mejores frameworks empresariales de JAVA. Posteriormente fui a la de Mark Heckler sobre plataformas escalables con spring. Excelente ponencia con buenos chistes en español. Finalmente se hizo un panel de conferencistas para discutir los temas actuales de la plataforma Java y del futuro de la misma. Excelente opiniones y temas tratados allí.

Sesión de la tarde

La primera conferencia que entre fue la de Eliezer Herrera sobre plataformas como Graal, Gradle y Vertx que permiten la ejecución de otros lenguajes en la JVM. Muy interesante y no conocía que se podían hacer ese tipo de cosas. De ahí fui a la charla de Carlos Paulino sobre desarrollo continuo para plataformas Android. Me llamó la atención porque trabaja en American Express y quería conocer como es el proceso de desarrollo de una aplicación móvil en ese tipo de empresas. Me llamó al atención el cuidado hacia la calidad y cómo las pruebas se realizan en distintas plataformas.

Luego de un receso para unas golosinas, comenzó la charla de Omar Berroterán Silva sobre GraphQL. La tecnología para obtener fácilmente datos a través de una API. Esta ponencia abarcó desde la introducción hasta dar ejemplos de como consultar datos, instalar esta herramienta, entre otros. Me gustó como Omar utilizó códigos QR en sus láminas para que los asistentes pudiésemos ver los ejemplos en el móvil y participar en la charla.

Java de nuevo a la web con WebAssembly

Mi charla en este evento la estaba dando por primera vez. Aunque había hablado de WebAssembly, nunca la había mezclado con Java. En ella pude hablar sobre una pequeña introducción a esta plataforma. Las diferencias respecto a los Applets de Java (pues tiende a confundir inicialmente a los programadores de Java). Por qué no iba a tener el mismo destino que los applets.

En el caso de Java, esta charla me gustó darla porque existen actualmente varias formas de llevar el lenguaje. Cada una trabaja de forma distinta y pude mostrar las bondades de cada forma.

La presencia fue excelente, hicieron preguntas muy interesantes y de ahí salí al cierre del evento con música dominicana.

Cena del JConf Dominicana

La cena fue excelente, tuve la oportunidad de compartir con otros ponentes. Conocí mas de la cultura Dominicana. Pude probar sus excelentes platos típicos como el mangú y mofongo. Disfrutar de un buen ambiente caribeño y discutir de tecnología.

Fue una gran experiencia participar en el JConf Dominicana. A pesar de estar solo 2 días en el evento. Me llamó la atención como la mayoría de los ponentes internacionales hablaba español. Los temas fueron muy interesantes. Los organizadores hicieron un excelente trabajo.

¡Lo disfruté mucho! Espero volver algún día.

Deja un comentario

Breve análisis de AppInventor

El viernes pasado recibi mi invitación para participar en la beta de AppInventor, un programa para crear aplicaciones para Android sin necesidad de escribir código, si nunca lo han escuchado o desean ver una introducción, pueden chequear el siguiente vídeo:

https://www.youtube.com/watch?v=8ADwPLSFeY8]

Para comenzar a usarlo, se debe iniciar sesión con la cuenta de google y descargar un instalador, revisándolo por encima, trae un emulador de un móvil con Android, un depurador de código y parte del SDK de Android. El instalador pesa casi 60MB y está disponible para Windows, GNU/Linux y MacOS.

Pantalla principal de AppInventor
Pantalla principal de AppInventor

Una vez instalado no pude encontrar el ejecutable para iniciar la aplicación, pero al buscar información en la página, me di cuenta que es una aplicación web hecha en HTML5/Javascript (estos de Google se estan tomando en serio la computación en la nube), la misma, contiene a la izquierda un menu con una serie de componentes para usar en la interfaz de la aplicación, en el medio la ventana de la pantalla telefóno y a la derecha las propiedades del componente y un navegador de componentes usados. Esta interfaz es sencilla, igual a los IDEs existentes por lo que para los desarrolladores no será problema el uso de AppInventor, los componentes simplemente se arrastran a la pantalla del teléfono y con doble click vamos editando las propiedades.

Esta parte es sólo la vista de la aplicación (como el modelo MVC) por lo que para agregar eventos y definir las acciones a ejecutar cuando el usuario interactúa con estos componentes, utilizamos la vista de bloques, accesible por un botón en la parte superior derecha. Al hacer click allí, se abre una aplicación Java Web Start (se vé el gran uso de Java en Android por parte de Google) donde pasarmos a la vista de asignación de eventos y acciones (como el controlador segun MVC), lo interesante, es que podemos asignar eventos y acciones a través de bloques parecidos a las piezas de un rompecabeza, uniendo los bloques podremos realizar el programa deseado sin escribir una línea de código. El famoso Hola Mundo, lo hice en menos de 5 minutos sin leer manuales, usando 3 bloques como se ve en la siguiente imagen:

Bloques de acciones en AppInventor
Bloques de acciones en AppInventor

Luego podemos ver los resultados en nuestro teléfono Android o usando el emulador, generar el paquete y distribuirlo. No he leído, pero creo que por ahora no hay mucha interacción con el Market y no se como es la licencia para el uso de esta aplicación.

Me gustó como se trabaja con esta herramienta y permite desarrollar cosas sencillas en pocos pasos (obviamente cosas complejas requiere escribir código), además permite a personas ajenas a la programación, realizar aplicaciones sencillas para si mismas. Google está haciendo un buen trabajo con esto y me llamó la atención que todo fuese bajo web, muchos no nos imaginaríamos hace unos años la posibilidad de crear aplicaciones desde el navegador.

1 comentario