Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Llegados a este punto (y vistas las entradas anteriores) ya tenemos completa nuestra configuración para poder automatizar un proyecto. Así que vamos a ver los pasos para generar nuestro primer proyecto en Jenkins que nos permitirá automatizar la generación/ejecución de la aplicación de pruebas unitarias (DUnitX).
Antes de continuar os dejo los links a las otras entradas de esta serie (las anteriores y las previstas):
Para poder continuar con el artículo, primero vamos a crear 2 proyectos de Delphi. El primero será nuestro proyecto de prueba y el segundo serán los Test Unitarios (con DUnitX) sobre ese proyecto.
Ambos ya los tenéis subidos al repositorio con el que estamos trabajando desde el inicio de las entradas de esta serie (ahora ya está público y accesible):
Proyecto de prueba: Continuaré con el proyecto que implementé en la primera entrada y que nos sirvió para ilustrar los primeros pasos con GIT. A este proyecto le he añadido una unit uFunciones.pas las funciones matemáticas básicas, sobre la que crearemos test unitarios con DUnitX. El formulario tiene una estructura como la que veis en la imagen.
Proyecto de Test Unitarios (DUnitX): Proyecto con DUnitX que contiene los test unitarios sobre las funciones definidas en la unit uFunciones.pas. La estructura de la clase de test es la que veis en la imagen siguiente.
He añadido unos cuantos tests que nos servirán para las pruebas.
No voy a profundizar mucho más, en esta entrada, en el tema de DUnitX y pruebas unitarias. Si os interesa saber más podéis revisar anteriores entradas que he publicado en el blog sobre TDD. En ellas he hablado sobre el tema. A continuación os dejo los links.
Por ahora para crear el proyecto de Jenkins, nos vamos a centrar en la aplicación de Test, ya que es el primero que debemos compilar y ejecutar en nuestro proceso (si los test unitarios fallan, ya no hace falta que sigamos con el resto).
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Una vez visto el paso previo de GIT, lo siguiente que necesitamos en “montar” nuestro servidor de automatización. Para ello he escogido Jenkins. Jenkins en un “Servidor de Automatización” Open Source escrito en java y que está basado en Hudson.
A continuación vamos a ver los pasos necesarios para instalar y configurar Jenkins.
INSTALACIÓN DE JENKINS
Una vez descargado el paquete correspondiente a nuestro sistema, comenzamos la instalación. Actualmente está disponible la versión v2.202, pero la verdad es que tanto las actualizaciones del sistema, como la de los múltiples plugins que posee son muy frecuentes.
Jenkins se instala como un servicio de Windows y la instalación no tiene más opciones que el directorio de destino, que podemos dejar el que propone por defecto. El acceso se realiza a través de un navegador web y utiliza por defecto el puerto 8080.
Una vez finalizada la instalación podemos comprobar que la consola de Servicios de Windows que se ha instalado correctamente y que está “Iniciado”. Se abrirá una ventana del navegador a la dirección: http://localhost:8080/
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Voy a dedicar varias entradas a hablar de Integración Continua con Delphi (a partir de ahora escribiré en algunos sitios CI –Continuous Integration– para abreviar).
Para no extenderme mucho voy a intentar dividir esta entrada en tres/cuatro entregas. Cada una de ellas centrada en un “pieza” importante de las que vamos repasar. Esta es la idea inicial, pero es posible que a medida que vaya desarrollando las otras, la cosa pueda cambiar.
Una definición de Integración Continua (que puede ser un término muy amplio) podría ser esta:
La integración continua es una práctica de desarrollo de software mediante la cual los desarrolladores combinan los cambios en el código en un repositorio central de forma periódica, tras lo cual se ejecutan pruebas y se generan versiones automáticas.
Es algo así como ir encadenando los diferentes pasos que habitualmente hacemos (o deberíamos hacer manualmente) de una forma automatizada.
VENTAJAS DE LA CI
¿Porqué utilizar Integración continua?
Utilizar esta metodología, como muchas otras, a priori puede generar una sensación de pérdida de tiempo y un trabajo extra, pero a la larga la automatización de tareas suele traer ventajas que al principio pueden no ser evidentes, pero que pasado un tiempo se hacen visibles.
¿Qué nos puede aportar introducir esta metodología en nuestros desarrollos?
Obtenemos mejoras en el rendimiento a la hora de desarrollar aplicaciones. Se dedica menos tiempo a tareas manuales y repetitivas. Se evita que con el tiempo se dejen de hacer cosas como las pruebas automáticas, ya que no hay que hacerlas manualmente.
Minimiza los errores. Al automatizar tareas, éstas se pueden realizar con más frecuencia. Además, si aparecen errores se detectan con más rapidez y permite corregirlos más rápido.
Se generan actualizaciones de nuestro software (builds, compilaciones, releases,…) con mayor rapidez y frecuencia. Se pueden realizar entregas (si son necesarias) de forma más continuada.
Documentación e historial de las versiones generadas, resultados de los tests, cambios,…
Concede al desarrollo una mayor seguridad y confiabilidad, y eso repercute en la confianza del equipo de trabajo.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Completamos con esta entrada la serie sobre test unitarios, centrándonos en el Framework DUnitX, que es el que actualmente embarcadero recomienda y se incluye en las últimas versiones de Delphi.
Como ya he comentado en las entradas anteriores, DUnitX es una evolución de DUnit (y que además recoge ideas de otros paquetes similares como NUnit). Si no lo tenéis en la versión actual de Delphi con la que estáis trabajando, podéis descargarlo desde el repositorio de Github, y deberíais poder instalarlo sin problemas. DUnitX soporta versiones de Delphi 2010 y posteriores.
A continuación os adjunto una tabla con las diferencias más significativas en cuanto a características que DUnitX nos aporta frente a DUnit. (click sobre ella para verla ampliada).
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…