calidad de software y tdd
DESCRIPTION
Tópicos sobre calidad de software y conceptos sobre TDDTRANSCRIPT
CALIDAD DE SOFTWARE
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
¿Qué es Calidad?
Antes de Iniciar….
¿Qué es Calidad?
Hacer las cosas correctas
Hacer las cosas correctamente Cumplir normas como ISO
Satisfacción del ClienteCumplir con los requerimientos
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.
Ciclo de Vida del Software
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
Ciclo de Vida del Software
Introducción: Mas allá de la codificación
HabilidadesROLES DE INGENIERÍA
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
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
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
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
Ciclo de Vida del SoftwareDesde la concepción hasta la descontinuación
- Modelos - Arquitectura- Procedimientos y Clases
- Arquitectura
Diseño
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
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
Ciclo de Vida del SoftwareDesde la concepción hasta la descontinuación
- Gestión de Cambios
- Actualizaciones- Descontinuación
Mantenimiento
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
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
Software Testing
AGENDA:
Conceptos Básicos Tipos de Testing Ciclo de vida del Software Testing Herramientas Mitos
Conceptos Básicos
¿Qué es Software Testing?
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.
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.
Software Testing
¿Por qué hacer Software Testing?
Conceptos Básicos
Software TestingConceptos Básicos
Software Testing
¿Para qué hacer Software Testing?
Conceptos Básicos
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
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
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
- Unidad- Integración- Funcionalidad- Usabilidad- Sistema-Performance- Seguridad
Tipos de Testing
Software Testing
REQSREQS TESTSTESTS
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.
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.
Tipos de Testing
Software Testing
Pruebas Funcionales
Utilizado para verificar si un producto cumple con los requerimientos y especificaciones funcionales.
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.
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.
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.
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
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
Ciclo de vida
Software Testing
PlanificaciónPlanificación
DefiniciónDefinición
Ejecución Ejecución
ReporteReporte
AnálisisAnálisis
AutomatizaciónAutomatización
Ciclo de vida
Software Testing
PlanificaciónPlanificación
- Estructura de Definición de Trabajo (EDT)- Plan de Gestión de las Pruebas
Ciclo de vida
Software Testing
DefiniciónDefinición - Plan de Pruebas
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
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
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
Software Testing y Software Development
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.
TIPOS DE PRUEBAQue entiendes por pruebas funcionales?Que entiendes por pruebas de
rendimiento?
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.”
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.
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.
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)
Apariencia de JUnit
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.
Grafica de un equipo de desarrollo preparado para pruebas
TRACKING O SEGUIMIENTO DE ERRORES
HERRAMIENTAS PARA EL TRACKING DE ERRORESBUGZILLATRACKOSTICKETClearQuest
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.