Curso: PRUEBAS DE SOFTWARE utilizando Integración Contínua PRUEBAS DE SOFTWARE UTILIZANDO INTEGRACIÓN CONTINUA ................ 1 OBJETIVO .................................................................................................... 1 AUDIENCIA ................................................................................................... 1 CONTENIDO .................................................................................................. 2 BIBLIOGRAFÍA ............................................................................................... 2 DOCENTE ..................................................................................................... 3 MODALIDAD DEL DESARROLLO ............................................................................. 3 DURACIÓN ................................................................................................... 3 MODO DE DESARROLLO ..................................................................................... 3 MATERIAL .................................................................................................... 3 INFRAESTRUCTURA .......................................................................................... 3 “capacitación y guía para el desarrollo de software” PRUEBAS DE SOFTWARE utilizando Integración Continua OBJETIVO El objetivo de este curso es transmitir conocimientos acerca de las actividades realizadas como parte de las pruebas en el proceso de desarrollo de software. Se busca instalar la trascendencia fundamental que tienen las pruebas en el proceso de desarrollo y se presentan herramientas y métodos para llevarlas a cabo. Se tratan temas vinculados al planeamiento, diseño, construcción, ejecución y análisis de resultados. Se analizan los factores que modificaron en la última década las pruebas y se presentan las mejores prácticas, frameworks y estrategias de uso. Se estudian y ejemplifican las pruebas unitarias, de componentes, de integración, de sistema y funcionales en el contexto de la forma de trabajo conocida como Integración Contínua. Se muestran ejemplos de uso de todos los frameworks y herramientas propuestas en el curso. Esta capacitación integra los conceptos tradicionales de pruebas con el uso de herramientas de última generación que posibilitan llevar adelante las tareas de prueba de software de manera más eficiente y controlada. El objetivo del curso es presentar una forma de trabajo (Integración Continua) y las herramientas (aplicaciones y frameworks) que hacen posible desarrollar software manteniendo controlado el proceso de desarrollo a partir de la realización de pruebas sistemáticas, repetibles y de resultados visibles. Se presentan estrategias de pruebas que abarcan las condiciones de prueba, su establecimiento, el chequeo de resultados y su informe; pruebas con substitución de componentes (MockObject). Se introduce el concepto de criterio de diseño basado en las pruebas y se trabaja sobre ejemplos desarrollados. Se muestra el uso de frameworks de prueba de tipo xUnit como JUnit, DBUnit, HttpUnit, ServletUnit y Watir. Se presenta el framework Maven2 como organizador del proyecto y CruiseControl como servidor de Integración Continua. Se muestran, sobre un ejemplo de Integración Continua, los indicadores obtenidos de atributos de calidad del software tales como estilo de programación, problemas de programación, dependencias entre paquetes y clases, actividad del grupo de desarrollo en el repositorio de software, documentación de diseño y cubrimiento de los test. Para esto se utilizan las siguientes herramientas: CheckStyle, PMD/CPD, JDepend, JavaDoc, Doxygen, Subversion, Clover y Jira. Se introducen conceptos de métricas sobre el código utilizando técnicas de visualización (PolymetricView, ClassBluePrint, etc.) como guía a ser utilizadas en las sesiones de revisión de diseño y código. Se utilizan herramientas como iCode, iPlasma y Crucible. AUDIENCIA El presente curso está orientado a programadores, analistas programadores y miembros de QA. 1 “capacitación y guía para el desarrollo de software” CONTENIDO ⇒ Introducción. Las pruebas en el Proceso de Desarrollo de Software. Revisiones y pruebas. Estadísticas. Esfuerzo y Planificación. Métodos y roles involucrados. Problemas comunes. ⇒ Pruebas Unitarias, necesidad de su sistematización. Pruebas de Componentes. Pruebas de Integración. Pruebas Funcionales. Pruebas de Sistema (Volumen, Estrés, Seguridad, Usabilidad, Disponibilidad, Configuración, Instalación, Performance). Pruebas funcionales, relación entre los casos de uso y los casos de prueba. ⇒ Pruebas de Integración. Código cerrado vs Código Compartido. Testeo Contínuo. Desarrollo conducido por las pruebas. Las pruebas como criterio de buen diseño. Diseño y organización de pruebas. Automatización de pruebas. Ejemplos. ⇒ Testeo Contínuo. Frameworks Xunit: Junit, DBUNit, HttpUnit, ServletUnit y test de Watir. Estratégias y tácticas: condiciones de prueba, ejecución, validación de resultados, reportes. Componentes de pruebas: MockObject, SpyObject, FakeObject, subclases, StubObject. Ejemplos. ⇒ Integración Contínua. Resolviendo problemas. Conceptos. Proceso. Frameworks y herramientas: CruiseControl, Maven, Subversion, JIRA, Doxygen, Clover, JDepent, PMD/CPD, Checklist, Enterprise Architecture. Resultados. Ejemplos. ⇒ Pruebas Funcionales. Casos de Uso. Casos de Prueba. Procedimientos de Prueba. Ejemplos. ⇒ Revisiones. Estándares de codificación. Java. Estándares de diseño. Revisiones soportadas por herramientas. Dinámica. Organización. Resultados. ⇒ Métricas. Qué medir? Cómo medir? Cómo utilizar los resultados?. Métricas de código, indicadores visuales (Polimétricas, ClassBlueprint), herramientas inCode y XRay. BIBLIOGRAFÍA ¾ Continuous Integration: Improving Software Quality and Reducing Risk, Paul M. Duvall, Andrew Glover, Steve Matyas, Addison-Wesley Martin Fowler Signature Series, 2008. ¾ xUnit Test Patterns: Refactoring Test Code, Gerard Meszaros, AddisonWesley, 2007. 2 “capacitación y guía para el desarrollo de software” ¾ JUnit Recipes - Practical Methods for Programmer Testing, J.B. Rainsberger with contributions by Scott Stirling, Manning, 2005. ¾ Object Oriented Metrics in Practice, Michele Lanza, Radu Marinescu, Springer Verlag Berlin Heidelberg 2006. ¾ ¾ Code Complete (2nd edition), Steve McConnell, Microsoft Press, 1993. A Practical Guide to Testing Object – Oriented Software, John McGregor, David Sykes, Addison Wesley, 2001. ¾ Systematic Software Testing, Rick D. Craig, Stefan P. Jaskiel, Artech House Publishers, 2002. ¾ The Craft of Software Testing,Brian Marick , PH, 1995. ¾ The Art of Software Testing (2nd edition), Glenford J. Myers, John Wiley & Sons, Inc, 2004. DOCENTE Ing. Guillermo G. Pantaleo MODALIDAD DEL DESARROLLO El curso es de tipo teórico/práctico y se desarrolla sobre casos testigos. Para ejemplificar el curso se utilizan herramientas case (Enterprise Architect) y de desarrollo (Eclipse) y las mencionadas en el temario. DURACIÓN La duración del curso es de 15hs. MODO DE DESARROLLO Se propone desarrollar el curso en dos clases semanales de 3 horas de duración. MATERIAL Se entrega a los asistentes material en formato electrónico. INFRAESTRUCTURA Para el desarrollo del curso es necesario un cañón proyector y una conección a internet de banda ancha sin filtrado de ningún tipo. 3