58
CALIDAD DE SOFTWARE

Calidad de software y TDD

Embed Size (px)

DESCRIPTION

Tópicos sobre calidad de software y conceptos sobre TDD

Citation preview

Page 1: Calidad de software y TDD

CALIDAD DE SOFTWARE

Page 2: Calidad de software y TDD

Calidad de Software Introducción: Mas allá de la codificación Ciclo de vida: Desde la concepción hasta la

descontinuación Calidad: Lugar de la calidad en el desarrollo

de software Beneficios

Page 3: Calidad de software y TDD

¿Qué es Calidad?

Antes de Iniciar….

Page 4: Calidad de software y TDD

¿Qué es Calidad?

Hacer las cosas correctas

Hacer las cosas correctamente Cumplir normas como ISO

Satisfacción del ClienteCumplir con los requerimientos

Page 5: Calidad de software y TDD

Definiciones mayormente aceptadas(ANSI/IEEE 828, 1990)

El nivel en el cual un sistema, componente o proceso cumple con los requerimientos definidos.El nivel en el cual un sistema, componente o proceso cumple con las necesidad o expectativas del cliente.

Page 6: Calidad de software y TDD

Ciclo de Vida del Software

Page 7: Calidad de software y TDD

Introducción: Mas allá de la codificación. El ciclo de vida: Desde la concepción hasta la descontinuación. Calidad: Lugar de la calidad en el desarrollo de software. Beneficios de la calidad en el ciclo de vida.

Ciclo de Vida del Software

Page 8: Calidad de software y TDD

Ciclo de Vida del Software

Introducción: Mas allá de la codificación

HabilidadesROLES DE INGENIERÍA

Page 9: Calidad de software y TDD

Ciclo de Vida del Software

Introducción: Mas allá de la codificación

Ingeniería de Software

Disciplina de implementación

-Requerimientos- Arquitectura- Pruebas- Configuración de versiones- Gestión del proyecto

Page 10: Calidad de software y TDD

Ciclo de Vida del SoftwareEl ciclo de vida: Desde la concepción hasta la descontinuación

Ingeniería de Sistemas

Análisis de Requerimientos

Diseño

Codificación

Pruebas

Mantenimiento

Page 11: Calidad de software y TDD

Ciclo de Vida del SoftwareDesde la concepción hasta la descontinuación

- Concepción del proyecto- Interacción continua con el cliente- Recabación de información

- Necesidades del Cliente

Ingeniería de Sistemas

Page 12: Calidad de software y TDD

Ciclo de Vida del SoftwareDesde la concepción hasta la descontinuación

- Correcto entendimiento- Requerimientos correctos- Definición de requerimientos- Gestión de los requerimientos

- Requerimientos

Análisis de Requerimientos

Page 13: Calidad de software y TDD

Ciclo de Vida del SoftwareDesde la concepción hasta la descontinuación

- Modelos - Arquitectura- Procedimientos y Clases

- Arquitectura

Diseño

Page 14: Calidad de software y TDD

Ciclo de Vida del SoftwareDesde la concepción hasta la descontinuación

- Lenguajes de Programación- Implementación de modelos-Integración de componentes

- Software o prototipos

Codificación

Page 15: Calidad de software y TDD

Ciclo de Vida del SoftwareDesde la concepción hasta la descontinuación

- Verificación de componentes- Validación de requerimientos- Estándares y Procesos

- Certificación de Producto

Pruebas

Page 16: Calidad de software y TDD

Ciclo de Vida del SoftwareDesde la concepción hasta la descontinuación

- Gestión de Cambios

- Actualizaciones- Descontinuación

Mantenimiento

Page 17: Calidad de software y TDD

StatusStatusCodificación y Pruebas

Codificación y Pruebas

Document.Document.

CambiosCambios

Gestión de Config.

Gestión de Config.

EstándaresEstándares

Ciclo de Vida del SoftwareCalidad: Lugar de la calidad en el desarrollo de software.

Revisiones y AuditoríasRevisiones

y Auditorías

Gestión de Proyecto

Gestión de Proyecto

Revisión de Vendedores

Revisión de Vendedores

Revisión de Contratos

Revisión de Contratos

Empaqueta-miento y

envío

Empaqueta-miento y

envío

SeguridadSeguridad

Gestión de la Calidad

Page 18: Calidad de software y TDD

Ciclo de Vida del SoftwareCalidad: Beneficios

Cliente Proveedor

- Satisfacción- Confianza- Menos errores- Requerimientos cumplidos

-Cumplir con requerimientos- Estabilidad- Implementación- Verificación- Procesos consistentes- Mejora de procesos

Page 19: Calidad de software y TDD

Software Testing

Page 20: Calidad de software y TDD

AGENDA:

Conceptos Básicos Tipos de Testing Ciclo de vida del Software Testing Herramientas Mitos

Page 21: Calidad de software y TDD

Conceptos Básicos

¿Qué es Software Testing?

Page 22: Calidad de software y TDD

Conceptos Básicos

Software Testing

Para Recordar

QA

Establece y evalúa los procesos que producen

los productos

QC

Verifica y valida si los productos cumplen con

los requerimientos o estándares

Disciplina de Software Testing

Conjunto de actividades llevadas a cabo con el objetivo de encontrar

errores en el SW.

Page 23: Calidad de software y TDD

Software TestingConceptos Básicos(IEEE Std 829)

Proceso que consiste en ejercitar el software para verificar si este satisface los requerimientos especificados y para detectar errores. Proceso de analizar un sistema de software para detectar diferencias entre las condiciones existentes y las requeridas (osea bugs) y evaluar las características de dicho sistema de software.

Page 24: Calidad de software y TDD

Software Testing

¿Por qué hacer Software Testing?

Conceptos Básicos

Page 25: Calidad de software y TDD

Software TestingConceptos Básicos

Page 26: Calidad de software y TDD

Software Testing

¿Para qué hacer Software Testing?

Conceptos Básicos

Page 27: Calidad de software y TDD

Software Testing

¿Para qué hacer Software Testing?

Conceptos Básicos

Detectar defectos en el software

Reportar defectos

Sugerir mejoras

Facilitar implementación de requerimientos

Incrementar el nivel de calidad del software

Minimizar el número de errores encontrados por el cliente

Page 28: Calidad de software y TDD

Software TestingConceptos Básicos

¿Quién?

Equipo de QA de un proyectoEquipo de desarrollo de un proyecto

Departamento de calidad de una compañíaCompañía externa (Outsourcing)

En general: Todo el equipo involucrado en el desarrollo de un producto

Page 29: Calidad de software y TDD

Pruebas de Integración

Pruebas de Validación

Pruebas de Sistema

Pruebas de unidad

Software TestingConceptos Básicos

¿Cuando?

A lo largo de todo el ciclo de vida del proyecto

Page 30: Calidad de software y TDD

- Unidad- Integración- Funcionalidad- Usabilidad- Sistema-Performance- Seguridad

Tipos de Testing

Software Testing

REQSREQS TESTSTESTS

Page 31: Calidad de software y TDD

Tipos de Testing

Software Testing

Pruebas de Unidad

Valida que las unidades individuales de código fuente están funcionando apropiadamente.Una unidad es la parte mas pequeña testeable de una aplicación. El objetivo de las pruebas de unidad es aislar cada parte del programa y mostrar que cada parte individual es correcto.

Page 32: Calidad de software y TDD

Tipos de Testing

Software Testing

Pruebas de Integración

Las pruebas de integración es un tipo de pruebas en el cual diferentes módulos del software se combinan y testean como un grupo. El objetivo de este tipo de pruebas es verificar funcionalidades, la performance y la confiabilidad de un producto.

Page 33: Calidad de software y TDD

Tipos de Testing

Software Testing

Pruebas Funcionales

Utilizado para verificar si un producto cumple con los requerimientos y especificaciones funcionales.

Page 34: Calidad de software y TDD

Tipos de Testing

Software Testing

Pruebas de Usabilidad

Este tipo de pruebas sirve para evaluar un producto desde el punto de vista de un usuario y su rápida adecuación al sistema.Involucra input directo sobre como los usuarios reales usarán el sistema.

Page 35: Calidad de software y TDD

Tipos de Testing

Software Testing

Pruebas de Sistema

Es llevado a cabo en un sistema integrado y completo para evaluar los requerimientos especificados como un todo. Este no debería requerir conocimiento del diseño interno del código o lógica de programación.Es ejecutado en la totalidad del sistema.

Page 36: Calidad de software y TDD

Tipos de Testing

Software Testing

Pruebas de Performance

Permite determinar que tan rápido algunos aspectos del sistema funciona bajo una particular carga de trabajo.Es utilizado para determinar la velocidad o efectividad de un software.

Page 37: Calidad de software y TDD

Tipos de Testing

Software Testing

Pruebas de Seguridad

Proceso para determinar que un sistema de información protege los datos y mantiene la funcionalidad tal y como se espera que fuese.Básicamente, lo que se quiere verificar en este tipo de pruebas es que el software brinde confidencialidad, integridad, autenticación, autorización, disponibilidad y auditoría

Page 38: Calidad de software y TDD

White Box TestingBlack Box Testing

Tipos de Testing: Técnicas

Software Testing

Pruebas de Caja Negra: Pruebas en base a aun requerimiento como output sin necesidad de conocer la estructura interna o códigos del programa. Puede ser funcional o no funcional, aunque usualmente funcional.

OUTPUTINPUT

Pruebas de Caja Blanca: También conocido como “Glass Box”o “Clear Box” Testing, para cuya ejecución es necesario tener conocimiento acerca de la estructura interna y código fuente del programa

Page 39: Calidad de software y TDD

Ciclo de vida

Software Testing

PlanificaciónPlanificación

DefiniciónDefinición

Ejecución Ejecución

ReporteReporte

AnálisisAnálisis

AutomatizaciónAutomatización

Page 40: Calidad de software y TDD

Ciclo de vida

Software Testing

PlanificaciónPlanificación

- Estructura de Definición de Trabajo (EDT)- Plan de Gestión de las Pruebas

Page 41: Calidad de software y TDD

Ciclo de vida

Software Testing

DefiniciónDefinición - Plan de Pruebas

Page 42: Calidad de software y TDD

Ciclo de vida

Software Testing

AutomatizaciónAutomatización - Scripts de prueba- Inventario de scripts

EjecuciónEjecución

- Total de Casos de Prueba:- Ejecutados- Exitosos- Fallidos- Modificados

Page 43: Calidad de software y TDD

Ciclo de vida

Software Testing

ReporteReporte

- Reporte de Defectos y Mejoras- Reporte de Performance- Reporte de Nivel de Seguridad

AnálisisAnálisis - Informe de Evaluación del Sistema

Page 44: Calidad de software y TDD

Ciclo de vida

Software Testing

ReporteReporte

- Reporte de Defectos y Mejoras- Reporte de Performance- Reporte de Nivel de Seguridad

AnálisisAnálisis - Informe de Evaluación del Sistema

Page 45: Calidad de software y TDD

Herramientas

Software Testing

HerramientasHerramientas

Page 46: Calidad de software y TDD

Software Testing y Software Development

Page 47: Calidad de software y TDD

AGENDA:

Introducción Que se Entiende por Pruebas Funcionales. Que se Entiende por Pruebas de Rendimiento. Desarrollo orientado a las pruebas. Como debe de estar preparado tu equipo de desarrollo. Tracking o seguimiento de errores. Como asegurar la calidad de nuestro código.

Page 48: Calidad de software y TDD

TIPOS DE PRUEBAQue entiendes por pruebas funcionales?Que entiendes por pruebas de

rendimiento?

Page 49: Calidad de software y TDD

Desarrollo orientado a las pruebas Test Driven Development “Desarrollo guiado por pruebas significa que

escribes un test automático y, a continuación, escribes el código suficiente para pasar dicho test y después refactorizar el código, principalmente para mejorar la legibilidad y eliminar duplicaciones.”

Page 50: Calidad de software y TDD

REFLEXIONES SOBRE TDD TDD es duro, los desarrolladores tardan tiempo

en poder entenderlo. La estrategia de aprendizaje es juntar a un desarrollador con experiencia con los de menos experiencia.

Una vez que un desarrollador le agarra la “onda” es difícil que pueda dejar de usar TDD.

TDD tiene un efecto positivo en el diseño y costos del sistema del sistema.

TDD reduce los costos ocultos del software.

Page 51: Calidad de software y TDD

REFLEXIONES SOBRE TDD Se tarda un tiempo en conseguir que TDD

funciona en un nuevo producto, especialmente con pruebas de integración tipo “caja negra”,pero el retorno de la inversión es justificado.

Asegúrate de que inviertes suficiente tiempo en hacer que a los desarrolladores les resulte fácil escribir código para pruebas. Esto significa conseguir las herramientas adecuadas, educar a las personas, proporcionarles las clases de utilidad o clases básicas adecuadas, etc.

Page 52: Calidad de software y TDD

HERRAMIENTAS PARA USAR TDD JUnit HttpUnit HSQLDB (como base de datos cargada en

memoria para pruebas) Jetty, Tomcat, Glassfish, JBoss como servidor de

aplicaciones El poderoso Framework Spring para montar

diferentes tipos de instalaciones de pruebas ( Con base de datos externas, en memoria, etc)

Page 53: Calidad de software y TDD

Apariencia de JUnit

Page 54: Calidad de software y TDD

Un típico caso de pruebas de caja negra Pruebas de aceptación (validar que el software

realiza lo esperado) de tipo caja negra. Estas pruebas arrancan todo el sistema en memoria,

incluyendo las bases de datos y servidores Web, y acceden al sistema utilizando únicamente sus interfaces públicos (por ejemplo HTTP).

Esto hace extremadamente rápidos los ciclos de desarrollo-compilación-pruebas. También actúa como una red de seguridad, proporcionando a los desarrolladores suficiente confianza como para refactorizar a menudo, lo que significa que el diseño se mantiene limpio y simple incluso mientras el sistema crece.

Page 55: Calidad de software y TDD

Grafica de un equipo de desarrollo preparado para pruebas

Page 56: Calidad de software y TDD

TRACKING O SEGUIMIENTO DE ERRORES

Page 57: Calidad de software y TDD

HERRAMIENTAS PARA EL TRACKING DE ERRORESBUGZILLATRACKOSTICKETClearQuest

Page 58: Calidad de software y TDD

COMO ASEGURAR NUESTRO CODIGO Primero se deben de identificar los parámetros o

indicadores mínimos de calidad que requieres para tu código (Ej. orden).

Luego puedes aplicar lo siguiente:Programación en paresRealizar revisiones de código periódicas Integración continuaStatic code analyzers (Ejemplo Analizador de Eclipse)Búsqueda de BugsCheckList de objetivosTDDAplicar patrones de diseñoSeguir estándares de programación.