Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los...

25
Metodologías Ágiles de Desarrollo de Software Domingo Gallardo, DCCIA, Univ. Alicante Agile Testing Sesión 8

Transcript of Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los...

Page 1: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Agile TestingSesión 8

Page 2: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Unas palabras previas de cautela

• Las pruebas no son una verificación formal de un programa, no pueden garantizar la corrección del software para todos los posibles casos de entrada

• Las pruebas aseguran la corrección del software en los casos particulares escogidos para realizar la prueba

• Por ello, es muy importante definir correctamente los casos de prueba para que tengan la cantidad y calidad necesaria para especificar de una forma suficientemente amplia los posibles escenarios en los que se puede encontrar el software

�2

Page 3: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Repaso: tipos de tests

• Tests unitarios • Prueban la funcionalidad del código (Junit, Nunit, PhpUnit…)• Partes del código que no interactúan con recursos externos• Se usan stubs y mocks para poder sustituir los recursos

• Tests de integración • Funcionalidad del código que depende de recursos externos (bases de datos,

servicios web, servicios de mail, etc.)• Requieren un setup, inicialización de recursos, ficheros de configuración

• Tests funcionales • Tests simulando usuarios finales

• Pruebas de stress • Prueban el rendimiento del sistema

�3

Page 4: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Testing en desarrollo tradicional

• Equipo de pruebas totalmente separado del equipo de desarrollo, formando lo que se denomina QA (Quality Assurance)

• Los testers suelen ser personas con menos formación técnica que los desarrolladores, que se dedican a encontrar bugs antes que los usuarios finales

• Todo el proceso de pruebas se hace en la fase final del desarrollo, para asegurarse que el producto final está libre de errores

�4

Page 5: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

La tradición de los QA

• QA = Quality Assurance• Procedimientos implementados en un sistema de calidad para que se

cumplan correctamente los requisitos y objetivos de un producto, servicio o actividad

• Se consiguen prevenir los errores mediante:• medidas sistemáticas• comparación con un estándar• monitorizado de procesos• bucle de retroalimentación

• Los dos principios fundamentales de QA son: • “Se ajusta al propósito” (Fit for purpose), el producto debe adecuarse al

propósito buscado• “Correcto la primera vez” (Right first time), se deben eliminar los errores

�5

Page 6: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Testing en equipos ágiles

�6

Page 7: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Testing en equipos ágiles

�7

Page 8: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

“The power of three”

�8

Page 9: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

ATDD: Acceptance TDD• A partir de las historias de usuario se diseñan tests de aceptación• Una COS (condition of satisfaction) is simplemente un test de aceptación de alto

nivel que será cierto cuando la historia de usuario esté completa

�9

Condiciones de satisfacción

Page 10: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Las COS son el punto de partida del TDD

�10

Mike Cohn - Succeeding with Agile

Page 11: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Cuadrante de pruebas ágiles

�11Lisa Crispin - Agile Testing

Page 12: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Q1, Q2: Tests que prueban el desarrollo

• Tests que ayudan al desarrollo• Q1: Nivel de detalle

• TDD, tests de regresión• Tests unitarios• Tests de integración

• Q2: Alto nivel• Ilustrar y probar la conducta del sistema• Mock-ups para validar UX

�12

Page 13: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Q3, Q4: Tests que prueban el producto• Q3: Tests de usuario

• Emulación de usuarios finales• Pruebas de usabilidad

• Q4: Pruebas técnicas del producto• Rendimiento, carga• Seguridad

�13

Page 14: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

La pirámide de la automatización

�14

Lisa Crispin - Agile Testing

Page 15: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Curva de aprendizaje de TDD / aut.

�15

Lisa Crispin - Agile Testing

Page 16: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

7 Factores clave para el éxito

1. Usar el enfoque Todos-Somos-Equipo (Whole team)2. Adoptar un estilo ágil de testing3. Automatizar los tests de regresión4. Proporcionar y obtener feedback5. Construir un conjunto de prácticas fundamentales (core practices)6. Colaborar con los clientes7. Mirar al cuadro completo (look at the big picture)

�16

Lisa Crispin - Agile Testing

Page 17: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Conjunto de prácticas fundamentales

• Integración continua• Construir y mantener distintos entornos de prueba, cada vez más fácil

con la virtualización• Gestionar la deuda técnica• Trabajar de forma incremental• Codificar y probar (coding and testing) son parte de un único proceso• Sinergia entre todas las prácticas anteriores

�17

Lisa Crispin - Agile Testing

Page 18: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Entornos de prueba

• Configuración de software y hardware en el que se realizan builds y pruebas del nuevo código añadido al proyecto• Hosts servidores con el servidor de aplicaciones, build del proyecto,

componentes adicionales requeridos (Maven)• Servidor de base de datos• Hosts clientes (con diferentes configuraciones de browsers)• Las pruebas se realizan tanto en las máquinas servidoras como en las

clientes

�18

Page 19: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Gestión de distintos entornos

• Local• Integración• Stage• Producción

�19

Page 20: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Entorno de prueba

�20

Page 21: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Entorno de stage

�21

Page 22: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Las herramientas promueven colaboración

�22

Janet Gregory and Lisa Crispin - Debunking Agile Testing Myths

Page 23: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Herramientas: automatización

• Jenkins: sistema de integración continua, automatizacióncontinua de builds, tests unitarios, tests de integración, …

• SonarQube: inspección de código, cobertura, duplicación, reglas de codificación, complejidad

�23

Page 24: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Herramientas: sistemas de seguimiento de bugs

• Bug tracking• Algunos de los más usados:

JIRA, Bugzilla• Herramientas que complementan los

tableros Kanban y Scrum:• Captura y almacén de información:

logs, trazas, forma de reproducción, personas asignadas

• Histórico • Comunicación de equipos

distribuidos

�24

Page 25: Sesión 08 Agile Testing - ua€¦ · 2. Adoptar un estilo ágil de testing 3. Automatizar los tests de regresión 4. Proporcionar y obtener feedback 5. Construir un conjunto de prácticas

Metodologías Ágiles de Desarrollo de SoftwareDomingo Gallardo, DCCIA, Univ. Alicante

Lecturas

• Lisa Crispin, “Agile Testing”, capítulo 6: The Purpose of Testing

• Mike Cohn, “Succeeding with Agile”, capítulo 16: Quality

�25