Calidad en Agile - EducacionIT

93
Calidad de Producto en Agile W. Edwards Deming “La Calidad es responsabilidad de todos.”

description

Calidad en Agile - EducacionIT

Transcript of Calidad en Agile - EducacionIT

Page 1: Calidad en Agile - EducacionIT

Calidad de Productoen Agile

W. Edwards Deming

“La Calidad es responsabilidad de todos.”

Page 2: Calidad en Agile - EducacionIT

Algunas ideas que desarrollaremos...

Qué es Calidad?

Principios y prácticas que mejoran la

Calidad del Producto

Page 3: Calidad en Agile - EducacionIT

Algunas ideas que desarrollaremos......

Org

aniz

ació

n de

equ

ipo

ágile

s

Automatización

Delivery contínuo

Calidad Integrada

Documentación vivaDinamica de desarrollo

ágil

Mejora contínua

Page 4: Calidad en Agile - EducacionIT

Qué es Calidad?

Page 5: Calidad en Agile - EducacionIT

Si vamos a comprar un auto, qué pretendemos que tenga?

Page 6: Calidad en Agile - EducacionIT

Lexus GS350

Page 7: Calidad en Agile - EducacionIT

Lexus GS350

Page 8: Calidad en Agile - EducacionIT

Algunos datos sobre Lexus

Page 9: Calidad en Agile - EducacionIT

Qué pasaba si queríamos comprar un auto

en 1910?

Page 10: Calidad en Agile - EducacionIT

Ford T

Page 11: Calidad en Agile - EducacionIT

Algunos datos sobre el Ford T

Page 12: Calidad en Agile - EducacionIT

Principios y prácticas que mejoran

la Calidad del Producto

Page 13: Calidad en Agile - EducacionIT

Qué pasa cuando el Cliente presiona cada vez más por productos de calidad

superlativa?

Page 14: Calidad en Agile - EducacionIT

http://en.wikipedia.org/wiki/Kano_model

Page 15: Calidad en Agile - EducacionIT

Cómo podemos extrapolar esta cuestión al campo de la Ingeniería de Software?

Page 16: Calidad en Agile - EducacionIT

Manifiesto Ágil

http://agilemanifesto.org/iso/es/

Page 17: Calidad en Agile - EducacionIT

Principios del Manifiesto Agil

http://agilemanifesto.org/iso/es/principles.html

Page 18: Calidad en Agile - EducacionIT

Prácticas que mejoran la calidad del producto Implementamos diversas prácticas

organizacionales que siguen los principios antedichos:

Equipos multidisciplinarios. Desarrollo iterativo e incremental/Flujo

contínuo. Foco en la mejora contínua durante el ciclo de

desarrollo.

Jeff Sutherland’s Scrum HandbookKen Schwaber & Jeff.Sutherland, The Scrum

Guide

Page 19: Calidad en Agile - EducacionIT

Prácticas que mejoran la calidad del producto Adicionalmente, aplicamos prácticas de índole

técnica: Automatización y Delivery contínuo de cada

incremento del producto. Software construído con documentación viva.

Software con Calidad integrada.

Gojko Adzic, Bridging the Communication Gap Jez Humble, David Farley - Continuous Delivery

Ron Jeffries, Extreme Programming InstalledJames Shore, The art of Agile Development

Page 20: Calidad en Agile - EducacionIT

Estos principios y prácticas promueven que el foco de todo el equipo esté en la Calidad

del Producto.

Page 21: Calidad en Agile - EducacionIT

Equipos Multidisciplinarios

Page 22: Calidad en Agile - EducacionIT

Scrum prescribe:

El Product Owner

Equipo: Programadores y Testers.

El Scrum Master

Scrum Primer, 2nd Edition

Contexto

Page 23: Calidad en Agile - EducacionIT

El Desarrollo Ágil busca prevenir errores en etapas tempranas del ciclo de desarrollo.

Lisa Crispin, Janet Gregory: Agile Testing – Traditional vs Agile Testing

ACTIVIDADES RELACIONADAS

Page 24: Calidad en Agile - EducacionIT

Los programadores construyen artefactos que son “error proof”.

Ken Beck, TDD by Example

ACTIVIDADES RELACIONADAS

Page 25: Calidad en Agile - EducacionIT

Los testers colaboran activamente con el cliente en la definición de las condiciones de satisfacción de cada nueva funcionalidad.

Lisa Crispin, Janet Gregory: Agile Testing - Ten Principles for Agile Testers

ACTIVIDADES RELACIONADAS

Page 26: Calidad en Agile - EducacionIT

Aseguramos la Calidad colaborando colectivamente en la implementación de tests que:

Guían el desarrollo de artefactos de Software.

Están orientados al Negocio.

Critican el Producto.

ACTIVIDADES RELACIONADAS

Page 27: Calidad en Agile - EducacionIT

MATRIZ DE TESTING AGILE

Page 28: Calidad en Agile - EducacionIT

Atributos de un equipo ágil

➤ Libertad para el cambio: Debemos ser flexibles en lo metodológico y en

lo técnico para permitir cambios de modo sustentable.

Agile in a Flash – Agile success factors

Page 29: Calidad en Agile - EducacionIT

Atributos de un equipo ágil

➤ Equipos motivados: Debemos ser un equipo ansioso por entregar

un producto de Calidad del cual sentirnos orgullosos.

Agile in a Flash – Agile success factors

Page 30: Calidad en Agile - EducacionIT

Atributos de un equipo ágil

➤ Comunicación con el Cliente: Dedemos fomentar el diálogo hacia un

entusiasmado, exclusivo y dedicado Cliente que pueda comunicarnos la visión del Producto

de manera efectiva.

Agile in a Flash – Agile success factors

Page 31: Calidad en Agile - EducacionIT

Atributos de un equipo ágil

➤ Colaboración: Debemos colaborar activamente con el Cliente.

Asistir pasivamente a una reunión no es un buen ejemplo.

Agile in a Flash – Agile success factors

Page 32: Calidad en Agile - EducacionIT

Atributos de un equipo ágil

➤ Foco en la Calidad: Sin esto no podremos mantener un ritmo sustentable de Delivery del Producto. Pronto no podremos cumplir con las demandas del

Cliente.

Agile in a Flash – Agile success factors

Page 33: Calidad en Agile - EducacionIT

Atributos de un equipo ágil

➤ Incrementalismo: I.N.V.E.S.T en User Stories y S.M.A.R.T

Tasks. Retrospectiva.

Agile in a Flash – Agile success factors

Page 34: Calidad en Agile - EducacionIT

Atributos de un equipo ágil

➤ Automatización: En un ciclo de Desarrollo reducido, es

necesario aminorar tantas tareas repetitivas como se pueda.

Agile in a Flash – Agile success factors

Page 35: Calidad en Agile - EducacionIT

Desarrollo iterativo e incrementalFlujo contínuo

Page 36: Calidad en Agile - EducacionIT

Desarrollo iterativo e incremental/Flujo contínuo

Agile prescribe iteraciones time-boxed.

Henrik Kniberg – Kanban and Scrum

Page 37: Calidad en Agile - EducacionIT

Desarrollo iterativo e incremental/Flujo contínuo

Estas etapas acotadas promueven el feedback sobre la marcha del desarrollo.

Henrik Kniberg – Kanban and Scrum

Page 38: Calidad en Agile - EducacionIT

Desarrollo iterativo e incremental/Flujo contínuo

Estas etapas acotadas promueven el flujo contínuo (velocidad y predictibilidad) de

artefactos de software.

Jeffrey Liker – The Toyota Way cap. 8

Page 39: Calidad en Agile - EducacionIT

Desarrollo iterativo e incremental/Flujo contínuo

Radiadores de información típicos en Scrum pueden ser un taskboard o un burn-up/down

chart.

Jonathan Rasmusson - The Agile Samurai cap. 8

Page 40: Calidad en Agile - EducacionIT

Desarrollo iterativo e incremental/Flujo contínuo

En este sentido Kanban provee un mecanismo para:

Visualizar el workflow.

Henrik Kniberg – Kanban and Scrum

Page 41: Calidad en Agile - EducacionIT

Desarrollo iterativo e incremental/Flujo contínuo

En este sentido Kanban provee un mecanismo para:

Limitar los procesos abiertos (WIP).

Henrik Kniberg – Kanban and Scrum

Page 42: Calidad en Agile - EducacionIT

Desarrollo iterativo e incremental/Flujo contínuo

En este sentido Kanban provee un mecanismo para:

Identificar impedimentos.

Henrik Kniberg – Kanban and Scrum

Page 43: Calidad en Agile - EducacionIT

Desarrollo iterativo e incremental/Flujo contínuo

En este sentido Kanban provee un mecanismo para:

Medir la cadencia o Lead Time de la implementación del producto.

Henrik Kniberg – Kanban and Scrum

Page 44: Calidad en Agile - EducacionIT

Foco en la mejora continua durante el ciclo de desarrollo

Page 45: Calidad en Agile - EducacionIT

Mejora contínua

“A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación

ajustar y perfeccionar su comportamiento en consecuencia.”

http://agilemanifesto.org/iso/es/principles.html

Page 46: Calidad en Agile - EducacionIT

Mejora contínua

Los equipos ágiles realizan reuniones de Retrospectivas.

Esther Derby, Diana Larsen – Agile Restrospectives

Page 47: Calidad en Agile - EducacionIT

Mejora contínua Los equipos ágiles atacan la causa raíz de los

problemas aplicando la técnica de 5 Whys.

Poppendieck – Lean Software Development An Agile Toolkit, cap 7 “See the Whole”

Page 48: Calidad en Agile - EducacionIT

Mejora contínua

Los equipo ágiles buscan minimizar la deuda técnica.

Page 49: Calidad en Agile - EducacionIT

Mejora contínua Hay relación directa entre la Calidad del producto, la productividad y la deuda técnica

acumulada.

Page 50: Calidad en Agile - EducacionIT

Mejora contínua Para controlar la deuda técnica podemos:

Implementar Tests de Unidad y de Sistema.

Automatizar procesos. Tener etapas de refactoring

regularmente. Evidenciar acciones y

resultados al Cliente.

Page 51: Calidad en Agile - EducacionIT

Mejora contínua

Aplicar JIT a nuestro proceso de Desarrollo.

Craig Larman and Bas Vodde – Lean Primer

Page 52: Calidad en Agile - EducacionIT

Mejora contínua

Just In Time es una filosofía de management que promueve las siguientes prácticas:

Promover un sistema de pull a través del proceso de desarrollo.

Atender sólo los problemas fundamentales. Excluir cualquier cuestión que no agregue

valor al producto. Promover la simplicidad de procesos.

Craig Larman and Bas Vodde – Lean Primerhttp://www.ifm.eng.cam.ac.uk/research/dstools/jit-just-in-time-manufacturing/

Page 53: Calidad en Agile - EducacionIT

Mejora contínua

Just In Time es una filosofía de management que promueve las siguientes prácticas:

Propiciar la proximidad de todos los elementos, e involucrados, en el proceso de creación del

producto. Reducir el nivel de inventario:

La menor cantidad de artefactos posibles. Procesar en pequeños lotes.

Crear conciencia en la Calidad con la cultura 'Stop the Line'.

Craig Larman and Bas Vodde – Lean Primerhttp://www.ifm.eng.cam.ac.uk/research/dstools/jit-just-in-time-manufacturing/

Page 54: Calidad en Agile - EducacionIT

Automatización

Es muy difícil pensar en practicar Agile con madurez sin automatizar ningún proceso crítico:

Testing en sus distintas dimensiones. Precarga de Datos y Deployment.

Page 55: Calidad en Agile - EducacionIT

Automatización

Es indispensable, para la mejora contínua, poder liberarnos de las tareas que consumen más

tiempo.

VS

Page 56: Calidad en Agile - EducacionIT

Software construído con “documentación viva”

Page 57: Calidad en Agile - EducacionIT

Software construído con “documentación viva”

Es una fuente de información, colectivamente consensuada, acerca de la funcionalidad del Sistema; resultado de desarrollar mediante

Tests de Aceptación.

http://specificationbyexample.com/key_ideas.html

Page 58: Calidad en Agile - EducacionIT

Software construído con “documentación viva”

Colectivamente consensuada.

Gojko Adzic – Specification by Example cap. 6 “Specifying Collaborativelly”

Page 59: Calidad en Agile - EducacionIT

Software construído con “documentación viva”

Desarrollada con Tests de Aceptación.

Lasse Koskela – TDD and ATDD for Java. Developers

Page 60: Calidad en Agile - EducacionIT

Software construído con “documentación viva”

Características de los Tests de Aceptación.

Page 61: Calidad en Agile - EducacionIT

Software construído con “documentación viva”

Se ilustran mediante ejemplos.

Gojko Adzic – Specification by Example cap. 7 “Illustrating with Examples”

Page 62: Calidad en Agile - EducacionIT

Software construído con “documentación viva”

Se emplea un lenguaje oblícuo.

Eric Evans – Domain Driven Design cap. 2 “Communication and the Use of Language”

Page 63: Calidad en Agile - EducacionIT

Software construído con “documentación viva”

El lenguaje oblícuo se compone de abstracciones naturales del dominio del

negocio.

http://www.solutionsiq.com/Portals/93486/docs/Domain-Specific-Testing-Languages-Huso-Phoenix-Agile-2008.ppt

Page 64: Calidad en Agile - EducacionIT

Software construído con “documentación viva”

Su verificación es automatizada.

Gojko Adzic – Specification by Example cap. 9 “Automating validation without changing specifications”

Page 65: Calidad en Agile - EducacionIT
Page 66: Calidad en Agile - EducacionIT

Automatización

Page 67: Calidad en Agile - EducacionIT

Automatización

“Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y

usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida.”

Page 68: Calidad en Agile - EducacionIT

Automatización

“La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial.”

Page 69: Calidad en Agile - EducacionIT

Automatización

Automatizar procesos nos provee de: Un método de prevención de Bugs.

Una red de contención que incrementa la seguridad del equipo y la calidad del producto. Un mecanismo de feedback muy eficiente.

Page 70: Calidad en Agile - EducacionIT

Automatización Lean/Agile

Existen artefactos de Software modulares. Cuentan con responsabilidades concretas.

Poppendieck – Implementing Lean From Concept to Cash

Page 71: Calidad en Agile - EducacionIT

Automatización Lean/Agile

Ejemplos: Servidor de Integración Contínua.

http://jenkins-ci.org/https://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin

Page 72: Calidad en Agile - EducacionIT

Automatización Lean/Agile

Ejemplos: Framework de Tests Unitarios.

Poppendieck – Implementing Lean From Concept to Cash

Page 73: Calidad en Agile - EducacionIT

Automatización Lean/Agile

Ejemplos: Framework de Tests Funcionales.

Runner de Especificaciones ejecutables. Framework de interacción con el Front-End,

API, etc.

http://cukes.info/install-cucumber-jvm.html

http://www.masterthought.net/section/cucumber-reporting

Page 74: Calidad en Agile - EducacionIT

Automatización Lean/Agile

Ejemplos: Framework de Tests No Funcionales.

Seguridad Performance

Etc.

http://www.sonarqube.org/

Page 75: Calidad en Agile - EducacionIT

Automatización Lean/Agile

Los distintos niveles de automatización nos permiten construir productos con Calidad

Integrada.

Jeffrey K. Liker – The Toyota Way

Page 76: Calidad en Agile - EducacionIT

Automatización Lean/Agile

Ejemplos: Las piezas de Software que son construidas

con Test-First (usando TDD o ATDD) son Error-Proof.

Ken Beck, TDD by Example

Page 77: Calidad en Agile - EducacionIT

Automatización Lean/Agile

Para que la automatización sea eficiente es necesario que respete la cultura de trabajo Stop

The Line.

Jeffrey K. Liker – The Toyota Way

Page 78: Calidad en Agile - EducacionIT

Automatización Lean/Agile

Artefactos como los Tests Unitarios se detienen automáticamente al encontrar una falla.

Si están conectados a un CI Server interrumpen,

a la vez, un deploy a otro ambiente.

Page 79: Calidad en Agile - EducacionIT

Automatización Lean/Agile

Artefactos como los Tests de Aceptación ejecutan la suite entera y, de existir, informan

fallas al final. Cuentan con mecanismos de reversión de estado, dejando la SUT en un estadío previo a

la ejecución.

Page 80: Calidad en Agile - EducacionIT

Automatización Lean/Agile

Los artefactos de Automatización son mantenidos por todos los integrantes del equipo:

Page 81: Calidad en Agile - EducacionIT

¡Actividad!

Page 82: Calidad en Agile - EducacionIT

Delivery contínuo

Page 83: Calidad en Agile - EducacionIT

Delivery Contínuo

“Es una disciplina de desarrollo de Software que permite la construcción del mismo de forma tal de

poder desplegarlo a producción en cualquier momento.”

http://martinfowler.com/bliki/ContinuousDelivery.html

Page 84: Calidad en Agile - EducacionIT

Diagrama de procesos

http://en.wikipedia.org/wiki/Continuous_delivery

Page 85: Calidad en Agile - EducacionIT

Development Pipeline

Es un patrón de Implementación automatizada de un proceso de build, test y release de

aplicaciones.

Continuous Delivery – cap. 5 “Anatomy of the Deployment Pipeline”

Page 86: Calidad en Agile - EducacionIT

Continuous Delivery – cap. 5 “Anatomy of the Deployment Pipeline”

Page 87: Calidad en Agile - EducacionIT

Automatización del testing

En la Commit Stage encontramos: Tests Unitarios.

Tests de Integración. En la Acceptance Stage encontramos:

Test Funcionales. Test de Aceptación.

Smoke Tests. En la UAT Stage y Equivalentes encontramos:

Test Manuales.

Continuous Delivery – cap. 4 “Implementing a Testing Strategy”.

Page 88: Calidad en Agile - EducacionIT

Pirámide de Automatización

http://martinfowler.com/bliki/TestPyramid.html

Page 89: Calidad en Agile - EducacionIT

Commit Stage

Aut. Acceptance Stage M

anual Acceptance

Stage

Capacity Stage

Page 90: Calidad en Agile - EducacionIT

Beneficios

Cada instancia provee distintos tipos de Feedback:

A nivel de unidad/integración una falla detiene la ejecución de la suite, completamente.

A nivel de aceptación una falla no detiene la ejecución de la suite.

Nos da un pantallazo del criterio de done.

Page 91: Calidad en Agile - EducacionIT

Beneficios

Los Tests Funcionales automatizados, en particular los Tests de Aceptación, tienen los

atributos de: Liberan a los Testers para que exploten su creatividad en la búsqueda de escenarios de

borde y errores no detectados.

Page 92: Calidad en Agile - EducacionIT

Conclusiones:¿Qué fue lo más importante que

aprendiste hoy?

Page 93: Calidad en Agile - EducacionIT

Gracias!Marcelo Corpucci

QC Practice Lead - CTOconsultas:

[email protected]