Notice: Undefined index: joomla_auth_cookie_encrypt in /var/www/vhost/calidaddelsoftware.com/home/html/configuration.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/vhost/calidaddelsoftware.com/home/html/configuration.php:3) in /var/www/vhost/calidaddelsoftware.com/home/html/libraries/joomla/session/session.php on line 423

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/vhost/calidaddelsoftware.com/home/html/configuration.php:3) in /var/www/vhost/calidaddelsoftware.com/home/html/libraries/joomla/session/session.php on line 423

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhost/calidaddelsoftware.com/home/html/configuration.php:3) in /var/www/vhost/calidaddelsoftware.com/home/html/libraries/joomla/session/session.php on line 426
Test unitarios e integración continua en metodologías ágiles
 

Test unitarios e integración continua en metodologías ágiles

El día 25 de Febrero en Madrid, se celebra el Seminario "TEST UNITARIOS E INTEGRACIÓN CONTINUA EN METODOLOGÍAS ÁGILES".

Estos tests son muy rápidos de ejecutar, garantizan que las modificaciones en el código no rompen su funcionalidad e incluso pueden servir como estrategia de diseño escribiendo las pruebas antes de la implementación.

Las inscripciones se formalizarán enviando un correo con los datos de facturación a formación @ caelum .es , indicando también los datos del asistente (nombre, apellido, cargo, mail, teléfono de contacto). La cuota de inscripción por asistente será de 500 euros más 16 %IVA.

INTRODUCCIÓN:

La construcción de software fiable y de calidad se ha convertido en un factor clave de éxito en el desarrollo de numerosos productos y servicios en todos los sectores de la actividad económica. Los llamados sistemas intensivos en software incluyen sistemas a gran escala heterogéneos, sistemas empotrados para vehículos, entornos de telecomunicaciones, casas inteligentes, aplicaciones empresariales basadas en servicios Web, etc. Las metodologías ágiles ofrecen pautas relevantes tanto para la gestión de proyectos de software como para la ingeniería del software.

DESCRIPCIÓN:

EL PAPEL DE LAS PRUEBAS EN ENFOQUES ÁGILES:

Las pruebas son un elemento esencial dentro de las mencionadas metodologías ágiles, y también lo son de las metodologías más convencionales.
La adopción de metodologías ágiles están obligando a replantear una serie de conceptos ya aparentemente consolidados en ingeniería del software.
El papel de las pruebas en las metodologías ágiles es ligeramente distinto. En esta presentación se analizan algunos estos aspectos.
Además se da una visión general de las diferentes metodologías en las que las pruebas juegan un papel director, tales como Desarrollo dirigido por pruebas (TDD) or Desarrollo dirigido por pruebas de aceptación (ATDD).
Se explicará o introducirá la filosofía de las metodologías ágiles y algunos ejemplos como SCRUM en la capa de gestión y XP en la capa de ingeniería.

INICIATIVAS Y PROYECTOS REFERENTES EN EUROPA:

Existen en Europa algunas iniciativas y proyectos para responder a la gestión y el desarrollo de software fiable y de calidad. A continuación vamos a presentar proyectos del Programa Europeo de I+D EUREKA, y en particular 2 proyectos del cluster ITEA2 (Information Technology for European Advancement), un programa estratégico paneuropeo que coordina investigación y desarrollo precompetitivos en servicios y sistemas de software intensivo.

ITEI (Information Technologies supporting the Execution of Innovation Projects)

El proyecto ITEI-ITEA tiene como objetivo principal el desarrollo de una metodología y un entorno informático abierto de soporte, para la gestión del desarrollo de proyectos de innovación en sistemas intensivos en software, lo que en el contexto de ITEI ha sido acuñado como “Cyber Space for product innovation and innovative software development”

FLEXI (Flexible Global Product Development and Integration) - “From idea to product in 6 months”

El objetivo de este proyecto es mejorar la competitividad de la industria europea del SW intensivo (en concreto la española) proporcionando un enfoque flexible, ágil y rápido para el desarrollo de productos embebidos y servicios seguros y robustos en un entorno de desarrollo global. En FLEXI se quiere desarrollar los métodos para pasar de una idea a un producto comercial en 6 meses.

EJEMPLOS Y CASOS PRÁCTICOS:

El primer frente de validación y verificación del software empieza en el propio desarrollador y no por el ingeniero de calidad. El desarrollador debe verificar que el software escrito hace lo que debe hacer, es robusto y libre de errores. Además de los mínimos test manuales, hay prácticas mucho más eficaces para probar el software a este nivel, los test unitarios. Las pruebas a este nivel son muy fácilmente automatizables e integrables con herramientas como "cobertura de pruebas" o analizadores estáticos de código que ayudan a mejorar aún más la calidad del software. Esto lleva a crear un nuevo proceso iterativo de creación de código llamado integración continua (código->creación pruebas->compilación y construcción->verificación->empaquetado->código...) en el cual el código está en todo momento listo para la entrega, o, en el caso de que contenga algún error, su detección es inmediata.

Test unitarios y desarrollo guiado por pruebas (TDD):

En este módulo se enseñarán las técnicas básicas para hacer test unitarios tanto en nuevas implementaciones como en código en mantenimiento. Además de el desarrollo clásico (primero la implementación, después las pruebas), se introducirá el desarrollo guiado por pruebas o TDD (primero las pruebas, luego la implementación). Se explicarán los pros y los contras de esta aproximación, técnicas para usarla eficientemente, etc. Asímismo se verá por qué esta técnica es considerada una técnica de diseño además de una técnica de verificación. Los lenguajes usados serán C++ con gTest (googletest) y Python con Nose.

Además se contestarán a las siguiente preguntas:
- Trabajar en pequeños incrementos, ¿por qué?
- Nuevas funcionalidades, ¿cómo no rompo las viejas?
- Valores y ventajas de los test unitarios. ¿Para qué sirven realmente?
- ¿Cómo hacer pruebas a este nivel?
- ¿Cómo se automatizan?
- ¿Cómo y cuando escribir test unitarios?
- ¿Es siempre necesario?

Integración Contínua:

La integración contínua consiste en integrar el proyecto de software automáticamente lo más frecuentemente posible para detectar cuanto antes fallos en el código o en la integración. Los test unitarios (principalmente) y otro tipos de pruebas se ejecutan automáticamente para verificar el estado del proyecto. Esta técnica no sólo conlleva la automatización de la construcción del proyecto y la ejecución de las pruebas automaticamente sino que además va mano a mano con un ciclo de trabajo mucho más rápido basado en hacer frecuentemente pequeñas modificaciones y verificaciones en el código en lugar de hacer grandes modificaciones en períodos mucho más largos de tiempo. Se explicará y se demostrará el ciclo de trabajo, ventajas e inconvenientes y se ensañará a configurar y montar desde cero un entorno de integración contínua usando Hudson para proyectos en C++ y Python.

Además se cubrirán los siguiente temas:
- ¿Diseño -> Implementación -> Pruebas o iteraciones?
- ¿Qué ventajas traen las iteraciones en el desarrollo del software?
- Software siempre listo para producción,
- ¿Es posible?
- ¿Cómo se hace?

Otras herramientas:

Como un añadido al apartado anterior, se presentarán otras herramientas como analizadores de código estáticos y cobertura de pruebas y cómo usarlas para mejorar la calidad del software. También se explicará y se mostrará como integrar dichas herramientas con Hudson y cómo automatizar su uso para que formen parte del ciclo de integración contínua.