Software Quality Systems, S.A.
TESTING Calidad para competir
Indice Presentación de SQS Definiciones Objetivo e implicaciones del testing Los costes de la no calidad Soporte a la mejora del proceso constructivo de software y su comprobación La economía del testing Fases del testing Servicios del Testing Riesgos Tendencias
Indice Presentación de SQS Definiciones Objetivo e implicaciones del testing Los costes de la no calidad Soporte a la mejora del proceso constructivo de software y su comprobación La economía del testing Fases del testing Servicios del Testing Riesgos Tendencias
SQS S.A. - La Empresa SQS S.A. ofrece servicios de Aseguramiento de la calidad del software. Soporte y asesoramiento tanto a nivel de calidad de proceso como de producto. Implantación de metodologías y herramientas tanto propias, resultado de nuestra propia labor investigadora, como de terceras empresas. SQS S.A. tiene dos ámbitos claros de actuación: software comercial: sistemas críticos: fundamentalmente sector bancario telecomunicaciones editorial servicios Web, etc. fundamentalmente sector ferroviario sector farmacia máquina herramienta sector del automóvil, etc.
Servicios Generales Servicios Generales Gestión y Aseguramiento de la Calidad
Servicios Generales Gestión y Aseguramiento de la Calidad Construcción de QA - Implantación: Soporte en la definición e implantación de procesos de desarrollo y mantenimiento (p.e. Gestión de configuración y control de cambios). Soporte en la implantación/cumplimiento de normas de calidad. Analítica de QA - Análisis y Verificación: Auditorías funcionales y de seguridad (p.e. documentación, cobertura de tests,...) Servicios de Prueba.
Servicios Generales Gestión y Aseguramiento de la Calidad PRODUCT Inter Cenelec TWF I-CHECK Certification Programe Process VPP Comercial Systems TEST-LAB Functional Test + D I V&V Testing Q&T Performance Test D V&V Testing SERVICES I + Safety Critical Systems Certification Support Courses Certif. TRAINING QA-TEST
Indice Presentación de SQS Definiciones Objetivo e implicaciones del testing Los costes de la no calidad Soporte a la mejora del proceso constructivo de software y su comprobación La economía del testing Fases del testing Servicios del Testing Riesgos Tendencias
Definiciones Varias preguntas. Qué es la calidad? Qué es el software testing/pruebas del software? Por qué es necesario?
Qué es la calidad? CALIDAD La totalidad de las características de una entidad que conducen a la capacidad de satisfacer las nececidades indicadas o implicadas. ASEGURAMIENTO DE LA CALIDAD Todas las acciones previstas para satisfacer los requisitos para la calidad.
Qué es el testing? el proceso de ejercitar el software para detectar errores y verificar que satisface los requisitos funcionales y no-funcionales especificados. El testing es una forma de medir la calidad.
Por qué es necesario el Testing Por qué es necesario? El problema del año 2000 Legislación Incremento de la complejidad Comercio electrónico Time to market Proveer nuevos canales de comunicación
Ejemplos de fallos de software 1. Fallo de la sonda Mariner I (1962): una fórmula mal resuelta escrita en un papel causa una trayectoria incorrecta. 2. Oleoducto soviético (1982): Los estadounidenses pasan software con fallos a los soviéticos para un oleoducto; la consecuencia fue la explosión no nuclear más grande de la historia. 3. Radiaciones letales en un dispositivo médico (1985-1987):Radiaciones letales del Therac-25, un dispositivo médico para terapias radioactivas, que mataba en vez de curar. 4. Gusano de Morris (1988): el primero conocido y el cúal infectó de 2.000 a 6.000 computadoras usando un fallo conocido como buffer overflow. 5. Generador de números aleatorios de Kerberos (1988-1996): No era realmente aleatorio.
Ejemplos de fallos de software 6. Caída de la red telefónica de AT&T (1990): Debido a un bug en una actualización de software que controla los switches de larga distancia de la compañía. 7. División en coma flotante del Intel Pentium (1993): La primera generación de Pentiums de Intel tienen un fallo al calcular divisiones de punto flotante de un rango específico. 8. El Ping de la Muerte (1995/1996): Un ping mal formado arbitrariamente afectaba miles de computadoras, especialmente con Windows instalado. 9. Desintegración del Ariane 5 (1996): El código del Ariane 4 es usado en el Ariane 5 pero sus motores más veloces inician una cadena de bugs que hacen que el cohete se desintegre a los 40 segundos de ser lanzado. 10. Sobredosis radiológica en el Instituto Nacional del Cáncer de Panama City (2000): Una falla de software y no seguir procedimientos por parte de humanos causa que se proporcionen dosis erroneas a pacientes en el Instituto Nacional del Cáncer de Panama City. 8 personas murieron, 20 con problemas de salud graves y doctores fueron acusados de asesinato.
Por qué es necesario el testing? Por qué testear? Identificar fallos Reducir defectos en producción Mejorar la calidad de la aplicación de los usuarios Incrementar la fiabilidad Para asegurar que los fallos no impactan a los costes y a la rentabilidad Para ayudar a mantener la reputación de la organización Para asegurar que los requisitos son satisfechos Para asegurar que los requisitos legales son conocidos Proveer una medida de calidad
Por qué es necesario el testing? Mediciones de calidad La calidad puede ser medida por el testing para comprobar su: Correctitud Fiabilidad Usabilidad Mantenibilidad Reusabilidad Testeabilidad
Indice Presentación de SQS Definiciones Objetivo e implicaciones del testing Los costes de la no calidad Soporte a la mejora del proceso constructivo de software y su comprobación La economía del testing Fases del testing Servicios del Testing Riesgos Tendencias
El objetivo del testing DEFECTO La salida de un valor especificado para una característica de calidad en un producto, que da lugar a que dicho producto o servicio no satisface sus requisitos normales de uso. El testing tiene como objetivo prioritario y último encontrar defectos, no sólo los fallos (bugs).
Qué implica el testing? El testing lleva implícito un compendio de buenas prácticas que dotan de calidad al proceso constructivo de software, desde la primera fase de éste: el análisis de requisitos (funcionales y no funcionales) hasta la última: satisfacción del cliente de nuestro cliente. El análisis del testing comienza con una valoración del ciclo de vida del desarrollo. El compendio de buenas prácticas proveen el proceso análitico de nuestro modelo de negocio/proceso: desarrollar software.
Indice Presentación de SQS Definiciones Objetivo e implicaciones del testing Los costes de la no calidad Soporte a la mejora del proceso constructivo de software y su comprobación La economía del testing Fases del testing Servicios del Testing Riesgos Tendencias
Los costes de la no calidad Cuánto nos desviamos respecto del presupuesto previsto?. Margen de beneficio. Break-point. Cuánto tiempo dedicamos a rehacer trabajo acabado o inacabado? Cuántas tareas realizamos de forma repetitiva sin necesidad?. Cuál es la proporción de tiempo de desarrollo frente a la corrección de errores?.
Los costes de la no calidad Cuántas tareas realizamos que no nos son rentables y no aportan valor?. Cuál es la dedicación prevista (tareas/tiempo) de cada rol?. Y su verdadero desempeño?. Cómo se ve impactado el coste del proyecto?. Cuánto nos cuesta mantener y adaptar nuestros productos?. Cuántos se convierten en inmantenibles?. Proveemos la información suficiente a la dirección para que conozcan los riesgos de lanzar una versión?.
Los costes de la no calidad El proceso constructivo de software es ambiguo (escasamente definido), no está controlado y no es supervisable. Trabajamos sin objetivos claros (modelo de negocio) y sin comprobar en hitos establecidos, qué porcentaje serían productivos a día de hoy. No existen mecanismos sistemáticos para validar las tareas y su completitud de acuerdo a los objetivos/necesidades. Nuestro proceso de desarrollo no es ágil. No se puede adaptar al cambio de los objetivos/necesidades de nuestro cliente.
Los costes de la no calidad En la propia empresa Perdida de imagen y competitividad. Debilitamiento de la oferta de servicios. En los clientes Rotación de clientes. Insatisfacción de clientes. Perdida de negocio. En el personal Rotación y desmotivación de los empleados. Escasa productividad. En el proceso Descontrol del proceso y de los productos fabricados. Redundancia de trabajo. Estimaciones incorrectas de presupuestos y tiempos.
Indice Presentación de SQS Definiciones Objetivo e implicaciones del testing Los costes de la no calidad Soporte a la mejora del proceso constructivo de software y su comprobación La economía del testing Fases del testing Servicios del Testing Tendencias
Modelo tradicional de desarrollo Análisis Diseño Implementación Integración y Pruebas Instalación y vida Tiempo
Modelos para testear Hay muchos modelos para testear Los más generalizados son: V,V&T. El Modelo en V.
Modelos para testear Modelo V, V & T Verificación El proceso de evaluar un sistema o componente para determinar si los productos de la fase de desarrollo satisfacen las condiciones impuestas al comienzo de esa fase Validación Determinación de la correctitud de los productos del desarrollo de software con respecto a las necesidades y requisitos de los usuarios Testing proceso de ejercitar el software para corroborar que satisface con los requisitos especificados y para detectar fallos
Modelo de desarrollo con testing Modelo en V dónde empezamos a testear? Requisitos T UAT Diseño T Test de Sistema Nivel Código T Test Unitario Tiempo
Modelo de desarrollo con testing Un ejemplo del modelo en V Requisitos del negocio y usuario Requisitos del software Test de aceptación del usuario Test de sistema Especificación del programa Test de integración funcional, no-funcional Especificación de componentes Test de componentes Verificación Validación Programación
Indice Presentación de SQS Definiciones Objetivo e implicaciones del testing Los costes de la no calidad Soporte a la mejora del proceso constructivo de software y su comprobación La economía del testing Fases del testing Servicios del Testing Riesgos Tendencias
La economía del testing Cuánto más temprano es encontrado un fallo, más barato es remediarlo. Fallos en los requisitos pueden conllevar una reingeniería de todo el sistema. Muchos errores pueden ser encontrados realizando revisiones en la documentación y/o el código.
La economía del testing El coste medio de reparar un error se multiplica por 10 en cada etapa del proceso de desarrollo. En revisiones de código se encuentran y corrigen errores en una media de 1 a 2 minutos. En el testing inicial, se encuentran y corrigen errores en una media de 10 a 20 minutos. En el testing de integración cada error puede costar una hora o más. En el test de sistema cada fallo puede costar entre 10 y 40 horas de ingeniería. Watts Humphrey
La economía del testing Un diseño anticipado del test puede prevenir la multiplicación de errores. El análisis de los requisitos durante la preparación del test amenudo saca a la luz errores en los mismos. Si no son encontrados los errores en la documentación puede que el sistema sea desarrollado incorrectamente.
La economía del testing Esfuerzo Preparación del Test el método antiguo Preparación anticipada del Test Casos de Prueba Datos de Prueba Ejecución del Test (1) (2) Análisis Diseño Implementación Integración y Test Instalación Tiempo
La economía del testing La Base: Aplicación online (aproximadamente 100 funciones de negocio) Conclusión: Errores totales en requisitos: 1.300 Errores totales en la implementación: 300 Número de Errores 1.400 1.200 1.000 800 600 400 200 0 Descubiertos durante: 1.150 Especificación de Casos de Prueba 100 Implementación 295 15 35 Ejecución del Test 5 Producción (1/2 año) Requisitos FK Rea Implementación Comentario: Casi el 90% de todos los errores fueron identificados en los requisitos, durante la especificación sistemática de los casos de prueba El ratio de errores entre requisitos e implementación fué de 4:1
La economía del testing - Coste de los defectos El coste de los defectos aumenta cuanto más tarde son encontrados. Caper Jones, Applied Software Measurement 1996. Encontrado Desarrollo Testing de Unidad Testing de Sistema Pruebas de aceptación de usuario En vida Coste del defecto 10 150 300 1.200 21.000
La economía del testing 160 140 120 100 80 60 40 20 0 150 50 27,5 10 1 3 Coste relativo de los errores Requirements Design Coding Developer Test Acceptance Test Production fuente: Arne Schirmacher, 08.02.2002
Indice Presentación de SQS Definiciones Objetivo e implicaciones del testing Los costes de la no calidad Soporte a la mejora del proceso constructivo de software y su comprobación La economía del testing Fases del testing Servicios del Testing Riesgos Tendencias
Evolución del testing en la empresa Pruebas de programador Testing interno/externalización del testing Alpha Testing Beta Testing Testing por una entidad/consultora independiente
Por dónde empezar el testing? Valoración de su proceso de desarrollo. Redefinir su proceso. Identificar los inputs. Identificar las tareas/actividades. Identificar los roles encargados de realizarlas y de su supervisión. Identificar los outputs. Identificar las métricas para medirlos. Establecer sus criterios de completitud de acuerdo a los objetivos. Comparar el valor previsto con el obtenido y analizar.
Crear el plan de Testing/Pruebas Qué es un plan de test/pruebas? Un documento que describe el ámbito, acercamiento, recursos, y calendario de las actividades de test previstas. Identifica los items de pruebas, las caracteríticas a ser testeadas, las tareas del testing, quién hará cada tarea, y cualquier riesgo inherente con su correspondiente plan de contingencia. Un plan de proyecto para el testing. Que cubra todos los aspectos del testing. Un documento vivo que debe cambiar de acuerdo al progreso del testing.
Indice Presentación de SQS Definiciones Objetivo e implicaciones del testing Los costes de la no calidad Soporte a la mejora del proceso constructivo de software y su comprobación La economía del testing Fases del testing Servicios del Testing Riesgos Tendencias
Servicios del testing Valoración del ciclo de vida de desarrollo Informe de estado y mejoras Implantación de esas mejoras Testing Funcional Embebido/Empotrado Carga y Rendimiento, Stress Automatización Instalación, Almacenamiento, Seguridad, Entornos de pruebas Benchmark de herramientas Pruebas de aceptación del usuario Pruebas de aceptación operativa (24*7)
Servicios del testing Adecuación a normativas/estándares Sectores críticos Otros Ayuda a la creación del (departamento) Testing en su empresa Externalización del testing Proveer entornos y herramientas de testing SQS - TestLab Gestión de la configuración Análisis de herramientas de testing
Indice Presentación de SQS Definiciones Objetivo e implicaciones del testing Los costes de la no calidad Soporte a la mejora del proceso constructivo de software y su comprobación La economía del testing Fases del testing Servicios del Testing Riesgos Tendencias
Identificación del riesgo Qué es el riesgo? El riesgo de los fallos: Del proyecto. De una parte componente. De los procesos soportados. Qué coste tiene? El 15% de los proyectos fallan. (DeMarco). El gobierno británico ha abandonado un gasto en TI de 7,5 Bn en los últimos 12 años. Una empresa de seguros abandonó un proyecto al coste de alrededor de 60M.
Tendencias - Identificación de los riesgos Clasificación de los riesgos: Riesgo del negocio. Riesgo del proyecto. Riesgo técnico. Cuáles son los objetivos de su cliente? Protección de la inversión. Expandir el mercado (nuevos productos/servicios disponibles). Crear nuevos canales de entrega (explotar nuevas tecnologías). Crear nuevos mercados (Posicionamiento de productos y servicios vital).
Riesgos Cuanto mayor es el beneficio mayor es el riesgo. Está dispuesto a asumir riesgos sin garantías de éxito?
Tendencias - Problemática del desarrollo actual Desarrollos descentralizados. Análisis (Alemania) Diseño (España) Desarrollo (Alemania, España, India) Implantación (en todo el mundo) Complejidad de los productos Un mismo producto para X paises/delegaciones Costes del personal. Externalización de parte/s de nuestro ciclo de vida.
Indice Presentación de SQS Definiciones Objetivo e implicaciones del testing Los costes de la no calidad Soporte a la mejora del proceso constructivo de software y su comprobación La economía del testing Fases del testing Servicios del Testing Riesgos Tendencias
Tendencias Normativas/Estándares Normativas/Estándares Son realizadas por comisiones técnicas de normalización Sectores Críticos CENELEC Comite Europeo para la Estandarización Electrotecnica. FDA Administración de los Estados Unidos para los alimentos y farmacos. GMP Buenas prácticas de fabricación IEC Comisión Electrotécnica Internacional Otros ISO Organización Internacional para la Estandarización. IEEE Instituto de Ingenieros en Electricidad y Electrónica. AENOR Asociación Española de Normalización. BS Estándarización británica.
Tendencias - Certificación Cumplimiento de estándares (ej. demanda sectorial) Cumplimiento de niveles de calidad interna (elemento diferencial frente a la competencia) SQS Cumplimento de niveles de calidad del contratista VPP Pliegos de condiciones Entes Independientes INTI
Tendencias Proyectos de I+D+I Gobierno Vasco SPRI Sociedad para la Promoción y Reconversión Industrial UET Unidad Estrátegica de Tecnología Gobierno Español TI Tecnologías de la Información Unión Europea TI Tecnologías de la Información
SQS - Software Quality Systems SQS - Software Quality Systems, SA España, Inglaterra, Bélgica, China Tel : +34 94 4804617 Fax: +34 94 4804247 E-Mail: fnanclares@sqs.es Formación: formacion@sqs.es Internet: www.sqs.es