Dr. Gerardo Padilla GDC PVE VTG IRIS Abril 2008 El Reto de Probar Software en Ambientes de Alta Incertidumbre 2 11 Abril 2008 ¿Es el software una dirección de negocio de Intel? Negocio de Intel 3 11 Abril 2008 Caso: Producción ¿Requiere de software? – Test automation – Observability Tools – Producirlo – Validarlo (Post Silicio) – RTL – ~VHDL – Implementarlo – Simuladores/Cosimuladores – Model Checking – Performance – Verificarlo (Pre Silicio) – Modelos Software para: – Especificarlo Software en el Negocio de Intel 4 11 Abril 2008 Caso: Utilización ¿Requiere de software? – Herramientas de rendimiento – Compiladores – Aprovecharlo – Herramientas de Diagnostico – Camas de pruebas – Debuggers – Integrarlo/probarlo – Controladores (Drivers) Software para: – Comunicacion Software en el Negocio de Intel 5 11 Abril 2008 – Impacto negativo de defectos en dichas herramientas es muy grande – Herramientas basadas en software juegan un papel fundamental en la producción de nuevos productos – Se requieren de herramientas de software altamente confiables – El software es un elemento importante en los ciclos de vida de los productos Hecho: Software en el Negocio de Intel 6 11 Abril 2008 ¿Qué se requiere para ser un Ingeniero de Validación? Una solución: Prueba de Software basada en riesgos informados Impacto de la incertidumbre Incertidumbre en el ecosistema de la prueba de software ¿Qué es la prueba de software? Contenido 7 11 Abril 2008 – Análisis de Defectos – Detectar Defectos – Prevenir Defectos Aseguramiento de la Calidad de Software Contexto de la plática 8 11 Abril 2008 – Caja Negra – Caja Blanca – Rendimiento – Etc. – Técnica usada para medir la calidad de un producto de software Prueba de software – Defecto: Un error en el producto de software – Falla: Manifestación del error – Incertidumbre: Falta de conocimiento seguro y claro de algo Definiciones ¿Qué es la Prueba de Software? 9 11 Abril 2008 Diseñ Diseño de Estrategia de Prueba y Casos de Prueba Desarrollo y Verificacion de Contenido de Prueba Sistema a Probar Requerimientos Recursos - Plan Automati zació zación Ejecució Ejecución Prueba de Software (Validación) Evaluació Evaluación y Reporte de Resultados Aná Análisis de la causa raí raíz Reporte de Calidad Incertidumbre en el Ecosistema de la Prueba de Software (Ideal ☺) 10 11 Abril 2008 Releases (Fijos) Iteraciones Sistema a Probar Requerimientos Recursos - Plan Prueba de Software (Validación) Reporte de Calidad Incertidumbre en el Ecosistema de la Prueba de Software (Ideal ☺) 11 11 Abril 2008 Releases (Fijos) Iteraciones Release de Emergencia Riesgo: Defectos encontrados por los clientes con impacto negativo Periodo de prueba de emergencia (subconjunto) Releases (Fijos) Iteraciones Riesgo: Incompatibilidad de Versiones de Compiladores Periodo de prueba no reducido dado el potencial de riesgos Releases (Fijos) Iteraciones Ideal Incertidumbre en el Ecosistema de la Prueba de Software - Ejemplos 12 11 Abril 2008 – Requerimientos del sistema – Plan de liberación del software – Tiempos de prueba en el plan – Disponibilidad de ambientes de prueba – Recursos humanos disponibles – Tecnología cambiante y no perfecta – Variabilidad del Software (Inherente) – TODO SUPUESTO DEL PROYECTO Fuentes de incertidumbre Incertidumbre en el Ecosistema de la Prueba de Software 13 11 Abril 2008 Baja moral Sentimiento de frustración en todos los equipos Contenido de Prueba se vuelve obsoleto Nuevo contenido es requerido Reorganización de la ejecución Menor cobertura – Escape de defectos Incremento en el soporte requerido a los clientes Incremento en los costos de mantenimiento Impacto de la Incertidumbre 14 11 Abril 2008 Ideas principales 1. Siempre, tener presente y actualizadas las prioridades y urgencias del proyecto 2. Tener un manejo de riesgos eficiente 3. Implementar una infraestructura de pruebas que permita absorber los cambios originados por los riesgos y las prioridades Prueba de Software basada en riesgos informados (Informed Risk-based Testing) Como manejar la Incertidumbre en la prueba de software 15 11 Abril 2008 Principios 1. No es factible probar de manera exhaustiva, se deben buscar medios que nos permitan mejorar la detección de fallas 2. Las prioridades deben ser asociadas con casos de uso del sistema y el impacto de fallas determinas en los usuarios (modos de falla) 3. Automatiza lo que tenga un ROI adecuado 4. Nunca perder los canales de comunicación con los involucrados Como manejar la Incertidumbre en la prueba de software 16 11 Abril 2008 – Generadores de contenidos de prueba – Emisores de veredictos de prueba – Motores de ejecución Automatización – Permiten determinar el origen potencial de fallas para crear pruebas enfocadas así como determinar su impacto en el usuario Modelos de modos de falla – Permite simplificar y priorizar la ejecución con base a las prioridades del usuario – Método en el cual las múltiples funcionalidades del sistema son agrupadas en casos de uso los cuales guían la prueba de software Pruebas basadas en casos de uso Prueba de Software basada en riesgos informados 17 11 Abril 2008 – Generar contenido de prueba priorizado (si se requiere) – Programar ejecución basada en prioridades y criticidad de los casos de prueba En cada iteración se evalúa previamente las prioridades de los casos de uso así como de los defectos encontrados para Releases (Fijos) Iteraciones Prueba de Software basada en riesgos informados 18 11 Abril 2008 – Selección programada – Disponibilidad de ambientes de prueba – Generación dinámica de contenidos de prueba – Continua comunicación y negociación – Infraestructura de pruebas configurable y modificable Costo de llevar esto acabo – La importancia para el cliente – El impacto de falla para el cliente Este enfoque permite priorizar las pruebas mas importantes considerando: ¿Porqué funciona este enfoque? ¿Qué se requiere para ser un Ingeniero de Validación? 20 Diseña pruebas Implementa pruebas Implementa herramientas Ejecuta pruebas Reporta resultados Analiza resultados Encuentra causas a los problemas Determina mejores estrategias para construir el software y probarlo 11 Abril 2008 – – – – – – – – Ingeniero de validación de software – Ejecuta pruebas – Reporta resultados Probador Probador vs Ingeniero de validación de software Habilidades Requeridas 21 Diseña pruebas Implementa pruebas Implementa herramientas Ejecuta pruebas Reporta resultados Analiza resultados Encuentra causas a los problemas Determina mejores estrategias para construir el software y probarlo 11 Abril 2008 – – – – – – – – Ingeniero de validación de software – Ejecuta pruebas – Reporta resultados Probador Probador vs Ingeniero de validación de software Habilidades Requeridas 22 Habilidades organizacionales y de planeacion Poner y dar seguimiento a los detalles Determinación para resolver y descubrir problemas Trabajar con otros, resolver conflictos Mentoring Trabajar con usuarios clientes Habilidades de escritura y comunicación verbal Pensar creativamente 11 Abril 2008 – – – – – – – – Personales y administrativas Habilidades Requeridas 23 Practicas y principios de ingeniería de software Entendimiento de principios y practicas de probar Entendimiento de estrategias de prueba Habilidad para planear, diseñar y ejecutar casos de prueba Conocimiento de procesos Conocimientos técnicos en distintas tecnologías Conocimiento de herramientas Conocimiento de programación Conocimiento de aspectos de calidad Conocimiento y pensamiento estadístico 11 Abril 2008 – – – – – – – – – – Técnicas Habilidades Requeridas gerardo.padilla.zarate@intel.com