1 Calidad e Integración Continua Carles Climent Granell Responsable de Calidad
2 INTEGRACIÓN CONTINUA CALIDAD * Commits continuos * Testing unitario y de integración * Servidores de CI * Test de regresión. * Staging * Coding Standards * Refactoring * TDD * Code reviews * El Departamento de Calidad * Fundamentos de Scrum
3 La integración del software en equipos de desarrollo
4 AUTOMATIZACIÓN
5 Commits continuos Commits frecuentes de pequeños cambios ayudan a la integración. Updates continuos. Nunca commits de código inestable.
6 Testing con SimpleTest
7 * El software se testea tarde o temprano. No esperemos a que lo hagan los usuarios. * El módulo SimpleTest: agua en el desierto. Port a Drupal 6. *Testing con Simpletest: - Test Unitarios (DrupalUnitTestCase): Muy difíciles con Drupal por su dependencia de la base de datos. - Test de Integración (DrupalWebTestCase): Más accesibles, permiten comprobar la integración del módulo en la plataforma. Sandboxed. Problemas de rendimiento debido al BOOTSTRAP.
8 Testing automático. Jenkins
9 * El desarrollador ejecuta los test del módulo, Jenkins el set completo. * Avisos al equipo. * Resolver problemas de integración es prioritario.
10 Test de regresión. Selenium * Automatizable con Jenkins y SeleniumRC. * Pruebas de más alto nivel. Sistema al completo. * No sandboxed. Difícilmente reproducibles. * Difícilmente mantenibles. * Minimizar Selenium a lo fundamental.
11 Staging
12 TRUNK LOCAL STABLEPRODUCTION CI Server Commit Testing Error! Branch Moving Testing Deploy Patch! Testing Solve integration
13 CALIDAD * Coding Standards: El código es de todos. Coder, CodeSniffer, phpcs. * Refactoring: no es una actividad puntual. Refactorizar siempre. Legacy code: utilizar arnés (testing). * TDD: aumenta la fiabilidad del código. Obliga a hacer código testeable. No se escribe código innecesario. * Complejidad ciclomática: reducir al mínimo. KISS. phpmd. * Longitud de funciones: reducir al mínimo. Encapsular. DRY. phpmd. * Acoplamiento: evitar dependencias entre módulos. No caer en el acoplamiento temporal. Ley de Démeter. * Departamento de QA: inspección de código y funcional. Responsable de los deploys. * Code reviews: formación, captura de bugs, propiedad colectiva.
14 SCRUM * Desarrollo en iteraciones: En cada iteración se proporcionan funcionalidades completas. * Las tareas se planifican en historias de usuario: Importa el qué y no el cómo. * El product owner prioriza las tareas: Optimización del valor añadido. * Estimación relativa de User Stories: No se mide el tiempo necesario sino la cantidad de trabajo, en comparación con otras User Stories. * Velocidad: Es mejor no pronosticar la velocidad del equipo. Deducirla de anteriores iteraciones. * Daily meetings: El equipo se reúne todos los días para decir qué ha estado haciendo, qué hará y qué necesita. * Retrospectivas: El equipo se reúne al final de cada iteración para compartir impresiones y detectar puntos de mejora.
15 Libros recomendados
16 Continuous Integration Paul M. Duvall Steve Matyas Andrew Glover
17 Clean Code Robert C.Martin
18 Agile Estimating and Planning Mike Cohn
19 The Passionate Programmer Chad Fowler