SlideShare ist ein Scribd-Unternehmen logo
1 von 71
Downloaden Sie, um offline zu lesen
GESTIÓN DE PRUEBAS
 EN DESARROLLO SOFTWARE



25 de octubre de 2011 – Facultade de Informática
Agenda


 I. ¿Qué software necesita pruebas?
II.¿Qué pruebas necesita mi software?
III.¿Cómo hago pruebas a mi software?
               [pausa]
     Taller de pruebas software
I. ¿Qué software necesita
         pruebas?
¿Qué sabemos de las pruebas
         software?

              ●   ¿Para qué sirven?
              ●   ¿Cómo se hacen?
              ●   ¿Cuándo se hacen?
              ●   ¿Quién las hace?
¿Qué es un bug?
El software...
●   NO hace algo que debería
●   Hace algo que NO debería
●   Hace algo que NO dice su especificación
●   Hace algo que su especificación NO dice,
    pero debería
¿Qué es un bug?
El software...
●   NO hace algo que debería
●   Hace algo que NO debería
●   Hace algo que NO dice su especificación
●   Hace algo que su especificación NO dice,
    pero debería
        ...es difícil de entender, de usar, lento.
¿Qué los causa?
●   Especificación
       –   Porque no se escribe, no se detalla,
            cambia constantemente o no se propaga
●   Diseño
       –   No se detalla suficiente, cambia y no se
            comunica
●   Código
       –   Complejidad, documentación pobre,
            presión, errores tontos
¿Cuánto cuestan?
●   “El 50% del coste del proyecto”


●   “Al menos 1/3 y probablemente más de
    1/2 del coste del proyecto”


●   “Al menos la mitad del coste de todas
    las demás actividades del proyecto”
¿Cuánto cuestan?
●   ¡Más cuanto más tarde se detectan!

       –   Cuesta 0'10 € cambiar una especificación
       –   Cuesta entre 1 y 10 € corregir un error
            durante el desarrollo o las pruebas
       –   Cuesta desde 100 € subsanarlo si lo
            encuentra el cliente
¿Cuánto cuestan?
●   ¡Más cuanto más tarde se detectan!

       –   Cuesta 0'10 € cambiar una especificación
       –   Cuesta entre 1 y 10 € corregir un error
            durante el desarrollo o las pruebas
       –   Cuesta desde 100 € subsanarlo si lo
            encuentra el cliente


    … en el caso medio.
Mariner I, 1962
Intel Pentium FDIV, 1994
El rey león, 1994/95
Ariane 5, 1996
Mars Climate Orbiter, 1999
“Efecto 2000”
En el peor de los casos...
Therac-25, 1985/87
MIM-104 Patriot, 1991
London Ambulance Service, 2000-hoy
Toyota Prius, 2010
Definitivamente, no hacer pruebas
          resulta más caro
Definitivamente, no hacer pruebas
            resulta más caro

… y además el coste de mantenimiento
         cae drásticamente
        cuando se prueba
Definitivamente, no hacer pruebas
            resulta más caro

… y además el coste de mantenimiento
         cae drásticamente
        cuando se prueba bien
¿Para qué valen las pruebas?
●   Las pruebas exitosas son las que
    encuentran errores
●   Las pruebas no pueden demostrar que
    el software no tiene
    fallos
●   Las pruebas no pueden
    demostrar que el
    software se ajusta a su
    especificación
¿Para qué valen las pruebas?
●   Las pruebas pueden mostrar la
    presencia de errores
●   Las pruebas pueden mostrar que los
    intentos de hacer fallar el software con
    respecto a su especificación fracasaron
●   Las pruebas pueden mostrar que no se
    pudo encontrar ninguna
    disconformidad con respecto a la
    especificación
¿Para qué valen las pruebas?
●   No se puede probar un programa
    por completo
●   No siempre se pueden arreglar todos
    los errores que se encuentran
●   A veces, cuantas más pruebas, menos
    errores se encuentran (paradoja del
    pesticida)
●   Casi siempre, cuantos más errores se
    encuentran, más errores hay
¿Para qué vale
           la gestión de pruebas?

●   Debemos ser capaces de responder
    claramente y con cierta confianza a:
       –   ¿Está el producto listo?
       –   ¿La cobertura de pruebas es suficiente?
●   Si la respuesta es no...
                         debe estar claro por qué
¿Para qué vale
           la gestión de pruebas?
●   Las pruebas deben estar bien
    integradas con el ciclo de desarrollo y
    vida del proyecto, sea cual sea, para
    poder responder a
       –   Qué hay que probar
       –   Cuándo se empieza a probar
       –   Cuándo se para de probar
       –   Quién hace qué
       –   Cuáles son los resultados
II.¿Qué pruebas necesita mi
         software?
Historia
●   Prehistoria (<1956): depuración
       –   Objetivo: que el software se ejecute
●   Edad Antigua (1957-1978): demostración
       –   Objetivo: respaldar empíricamente que el
            software cumple su especificación
●   Edad Media (1979-1982): destrucción
       –   Objetivo: forzar la aparición de errores
Historia
●   Edad Moderna (1983-1987): evaluación
       –   Objetivo: detectar errores en el diseño o en
            la especificación
●   Edad Contemporánea (>1998): prevención
       –   Objetivo: prevenir errores de diseño y de
            especificación
               ●   Métodologías ágiles
               ●   Test-driven development
¿Qué sabemos de las pruebas
         software?
  Verificación         Validación
¿Desarrollamos el   ¿Desarrollamos el
     software       software correcto?
 correctamente?
¿Qué sabemos de las pruebas
         software?
  Verificación         Validación
¿Desarrollamos el   ¿Desarrollamos el
     software       software correcto?
 correctamente?


(de acuerdo a su    (de acuerdo a la
especificación)       necesidad del
                        usuario)
¿Qué sabemos de las pruebas
             software?
●   Niveles de prueba
       –   Pruebas de unidad
       –   Pruebas de integración
       –   Pruebas de sistema
       –   Pruebas de aceptación
¿Qué sabemos de las pruebas
             software?
●   Técnicas de prueba
       –   Dinámicas vs. Estáticas vs. Simbólicas
              ●   Requieren o no de la ejecución del
                   software, o lo simulan
       –   Caja blanca vs. Caja negra
              ●   Necesitan o no de conocimiento sobre la
                   estructura interno del software
       –   Positivas vs. Negativas
              ●   Buscan o no ejercitar el software en
                   condiciones normales de uso y
                   funcionamiento
¿Qué sabemos de las pruebas
             software?
●   Técnicas de prueba:
       –   Funcionales
              ●   Se ocupan de lo que el software debe hacer
              ●   Suelen ser técnicas dinámicas de caja negra
       –   Estructurales
              ●   Se ocupan de lo que el software debe hacer
              ●   Suelen ser técnicas de caja blanca
       –   No funcionales
              ●   Se ocupan de cómo el software debe hacerlo
              ●   Suelen ser técnicas dinámicas de caja negra
Técnicas de prueba
●   Pruebas funcionales de caja negra
       –   Particiones equivalentes
              ●   Se examina el conjunto de posibles
                   entradas para una unidad y se divide en
                   rangos que, de acuerdo con la
                   especificación, deban recibir el mismo
                   tratamiento
              ●   Para cada rango, se elige un elemento
                   representante, bajo la premisa de que
                   cualquier valor dentro de cada rango es
                   tan bueno para encontrar errores
                   como el resto
Técnicas de prueba
●   Pruebas funcionales de caja negra
       –   Valores-frontera
              ●   Complementa la técnica de particiones
                   equivalentes seleccionando valores de
                   entrada (y de salida) pertenecientes a las
                   fronteras entre rangos
              ●   Las fronteras no siempre son obvias
                   (especialmente a la salida):
                      –   primero/último, inicio/fin, vacío/lleno,
                            lento/rápido, grande/pequeño,
                            cercano/lejano, mínimo/máximo,
                            encima/debajo, corto/largo, pronto/tarde,
                            alto/bajo... (+/-1)
Técnicas de prueba
●   Pruebas funcionales de caja negra
       –   Mapas de transiciones
              ●   Para unidades con estado/memoria
              ●   Fronteras en los mapas de transiciones
                   suelen rebelar problemas de
                   temporización, race conditions,...
Técnicas de prueba
●   Pruebas funcionales de caja negra
       –   Árboles causa-efecto + tablas de
            decisión
       –   Selección de datos aleatoria
              ●   En realidad, que siga la gramática
                   especificada para la unidad
              ●   Generará datos que ni probadores ni
                   desarrolladores se plantearían
                   normalmente
Técnicas de prueba
●   Pruebas funcionales de caja negra
       –   Basadas en modelos y propiedades
              ●   Aserciones, enunciados
              ●   Máquinas de estados finitos
Técnicas de prueba
●   Pruebas funcionales de caja blanca
       –   Cobertura de instrucciones
              ●   Seleccionar casos de prueba para que se
                   ejecute cada sentencia en el código al
                   menos una vez
       –   Cobertura de decisiones (ramas)
              ●   En el caso de las sentencias de decisión, la
                   cobertura de instrucción puede hacer que
                   se ejecute la toma de la decisión, pero no
                   todas sus posibles ramas
Técnicas de prueba
●   Pruebas funcionales de caja blanca
       –   Cobertura de condiciones
              ●   Seleccionar casos de prueba para que la
                   toma de una decisión sea ejercitada
                   explorando todas las posibilidades de
                   la(s) condición(es) asociada(s)
       –   Análisis de flujo de datos
              ●   Búsqueda de variables sin utilizar,
                   referenciadas sin inicializar, sin
                   dereferenciar...
       –   Análisis de flujo de control
Técnicas de prueba
●   Pruebas funcionales de caja blanca:
       –   Mutación de código
       –   Inserción de fallos


●   Pruebas estructurales de caja blanca:
       –   Revisión de código
Técnicas de prueba
●   Pruebas no funcionales de caja blanca
       –   Análisis del tiempo de ejecución
               y el uso de recursos
              ●   Explora la presencia de bugs
                   monitorizando estos dos parámetros
              ●   Muy valioso para optimización
Técnicas de prueba
●   Pruebas no funcionales de caja negra
       –   Configuración (instalación)
       –   Estrés (seguridad, fiabilidad)
               ●   Qué carga aguanta el software sin fallar
               ●   Qué avisos da antes de fallar
               ●   Qué pasa cuando soporta alta carga largo
                    rato
               ●   Cuánto tarda en recuperarse
               ●   Qué asistencia es necesaria para la
                    recuperación
       –   Usabilidad
Métricas de prueba
●   Métricas de proceso
       –   Bugs en desarrollo vs. en producción (fault
            slip-through), edad media de bugs/bugs
            abiertos, tiempo de respuesta a 30 días,
            densidad de bugs...
●   Métricas de robustez
       –   Tiempo medio de fallo
●   Métricas de usabilidad
       –   Facilidad de uso (tiempo experto/tiempo
            usuario), ratio de trabajo/productividad,...
III.¿Cómo hago pruebas al
        software?
¿Cómo hago pruebas al
            software?
●   Las pruebas deben derivarse de una
    línea base (especificación)
       –   Determina qué es un error
               ●   No necesita ser completa, pero debe
                    contener suficiente información útil
               ●   Debe ser estable pero flexible, sus
                    cambios deben controlarse
       –   Debe interpretarse unívocamente
       –   Ser visible y legible para los
            stakeholders
Tipos de errores
●   Cambios y correcciones son la primera
    causa de los bugs
       –   Porque se actualiza el código y no las
            especificaciones
               ●   Inconsistencias
               ●   Falta de trazabilidad
               ●   Efectos secundarios imprevistos
       –   Porque no se revisa o prueba suficiente
Tipos de errores
●   Hay 3 principales motivos para cambiar el
    software:
       –   Corregir bugs
       –   Añadir funcionalidades
       –   Adaptarse a cambios en el entorno
Tipos de errores
●   Errores de especificación
●   Errores funcionales
       –   Previstos pero no suficientemente
            controlados
       –   Que deberían haberse previsto
       –   Que no podrían haberse previsto
●   Errores no funcionales
¿Por dónde empiezo a hacer
             pruebas?
●   Monitorización del progreso de prueba:
       –   ¿Cuánta cobertura necesito?
       –   ¿Cuántos casos de prueba necesito para
            alcanzarla?
       –   ¿Cuántos casos de prueba tengo?
       –   ¿Cuántos casos de prueba he ejecutado?
       –   ¿Cuántos bugs he encontrado?
       –   ¿He encontrado tantos bugs como
            esperaba?
¿Cuándo paro de hacer
             pruebas?
●   Las funcionalidades son estables
       –   Ha caído el ratio de detección de errores
       –   Ya no aparecen bugs de cierta gravedad
       –   Code turmoil es satisfactorio
●   Se han ejecutado todas las pruebas
       –   Se ha ejercitado todo el
            código/funcionalidades/escenarios
       –   El número y severidad de los bugs
             encontrados está en un nivel
             satisfatorio
Calidad de las pruebas
●   Métricas e indicios internos:
       –   Bugs detectados en pruebas vs.
            detectados en producción
       –   Bugs vs. cambios
       –   Bugs por iteración, bugs por parche,
            parches por release
              ●   ¿Se reducen los de mayor
                   gravedad/prioridad respecto al total?
       –   Bugs abiertos vs. cerrados
       –   Pruebas ejecutadas/abandonadas
Calidad de las pruebas
●   Métricas e indicios externos:
       –   Nuevos proyectos no avanzan porque
            hay que dedicar personal a
            mantenimiento
       –   Evolución de los retrasos en entrega
       –   Evolución de horas extras próximas a las
            fechas de entrega
       –   Evolución de LOC/bug en cada release,
            en cada producto
Gestión de las pruebas
●   Para cada proyecto software, debe
    definirse una estrategia de prueba
       –   Visión global de la tarea
       –   Dirección, prioridades
       –   Documento de estrategia:
               ●   Situación hoy + top 10 problemas +
                    posibles soluciones, cómo abordarlos
       –   Revión cada 6 meses o cuando haya
            cambios significativos en el proyecto o
            el entorno
Gestión de las pruebas
●   Para cada release, debe redactarse y
    ejecutarse un plan de pruebas
       –   Centrado en los posibles problemas de
            cada release
              ●   Nuevas features, interacción con features
                   ya existentes (backwards-compatibility)...
       –   Documento de plan de pruebas
              ●   Actividades necesarias para llevar a cabo
                   unas pruebas eficaces + herramientas y
                   entorno de pruebas + planificación
Gestión de las pruebas
●   Para cada unidad, debe mantenerse un
    documento de monitorización de
    pruebas:
       –   Casos de prueba esperados y reales
       –   Cobertura de funcionalidades
       –   Prioridad de funcionalidades
       –   Bugs esperados y encontrados
       –   Bugs por funcionalidad
Gestión de las pruebas
●   Especificación de diseño de pruebas
       –   Qué se prueba, técnica, entorno, criterios
            de aceptación/rechazo.
●   Especificación de casos de prueba
       –   Objetivo, especificación, entradas/salidas,
            dependencias, nº de bugs esperados
●   Especificación del proceso de prueba
       –   Release/configuración, pasos para
            ejecución/medición, procedimiento en
            caso de error, criterios de inicio/parada
Gestión de las pruebas

                                      d criterios
    Especificación de diseño de pruebas
●


                                    a
                                id
        Qué se prueba, técnica, entorno,
       –

                               l
                            a de prueba
         de aceptación/rechazo.
    Especificación de C   casos
                     e
●


       –           d nº de bugs esperados
        Objetivo, especificación, entradas/salidas,
              n
          la
         dependencias,
●
        P
    Especificación del proceso de prueba
       –   Release/configuración, pasos para
            ejecución/medición, procedimiento en
            caso de error, criterios de inicio/parada
“Software exhibits weak-link behaviour:
 failures in even unimportant parts of the
  code can have important repercussions
                elsewhere”


   “Bugs remain in software after testing
because testers and developers have the
 same view of the way the software will be
             used by users”
Sputnik, 1957
“There are things you can specify and
  things you can test for, and there are
things you'd never ever think of guarding
                against”.


“If you can't plan or model it, what makes
          you think you can do it?”
Taller de pruebas software
El espectro de las pruebas




   Casos de prueba con   Generación de
   generación de datos   secuencias de prueba


Pruebas individuales Propiedades generales
Ejemplos concretos Especificación completa

Weitere ähnliche Inhalte

Was ist angesagt?

Especificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de softwareEspecificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de softwareJesús E. CuRias
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
 
Construccion y Pruebas de Software
Construccion y Pruebas de SoftwareConstruccion y Pruebas de Software
Construccion y Pruebas de SoftwareGustavo Bazan Maal
 
Métricas de Proceso y proyecto de software
Métricas de Proceso y proyecto de softwareMétricas de Proceso y proyecto de software
Métricas de Proceso y proyecto de softwareLorena Quiñónez
 
Diagramas de actividad
Diagramas de actividadDiagramas de actividad
Diagramas de actividadJulio Pari
 
modelos de calidad de software
modelos de calidad de softwaremodelos de calidad de software
modelos de calidad de softwareHernan Espinoza
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoMarvin Zumbado
 
Tareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosTareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosnenyta08
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcionalAlejandra MA
 
Unidad4 analisis-semantico
Unidad4 analisis-semanticoUnidad4 analisis-semantico
Unidad4 analisis-semanticoInfomania pro
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador SintácticoPablo Guerra
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de softwareLiliana Pacheco
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turingAnel Sosa
 

Was ist angesagt? (20)

Especificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de softwareEspecificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de software
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
 
Construccion y Pruebas de Software
Construccion y Pruebas de SoftwareConstruccion y Pruebas de Software
Construccion y Pruebas de Software
 
Estimación de Proyectos de Software
Estimación de Proyectos de SoftwareEstimación de Proyectos de Software
Estimación de Proyectos de Software
 
Metodología RUP
Metodología RUPMetodología RUP
Metodología RUP
 
Métricas de Proceso y proyecto de software
Métricas de Proceso y proyecto de softwareMétricas de Proceso y proyecto de software
Métricas de Proceso y proyecto de software
 
Ciclo Vida del Software
Ciclo Vida del SoftwareCiclo Vida del Software
Ciclo Vida del Software
 
Diagramas de actividad
Diagramas de actividadDiagramas de actividad
Diagramas de actividad
 
modelos de calidad de software
modelos de calidad de softwaremodelos de calidad de software
modelos de calidad de software
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
 
problemas del software
problemas del softwareproblemas del software
problemas del software
 
Tareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosTareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientos
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcional
 
Unidad4 analisis-semantico
Unidad4 analisis-semanticoUnidad4 analisis-semantico
Unidad4 analisis-semantico
 
Traductor y su estructura
Traductor y su estructuraTraductor y su estructura
Traductor y su estructura
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Diapositivas xp
Diapositivas xpDiapositivas xp
Diapositivas xp
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turing
 
UML
UMLUML
UML
 

Andere mochten auch

Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de softwareGuillermo Lemus
 
Fases de prueba de software
Fases de prueba de softwareFases de prueba de software
Fases de prueba de softwareMarco Antonio
 
Modelo benjamin
Modelo benjaminModelo benjamin
Modelo benjaminarmangarel
 
Act 4.3 pruebas de software
Act 4.3 pruebas de softwareAct 4.3 pruebas de software
Act 4.3 pruebas de softwareRodrigo Santiago
 
03 gestión de pruebas de software diseño de casos de pruebas
03 gestión de pruebas de software   diseño de casos de pruebas03 gestión de pruebas de software   diseño de casos de pruebas
03 gestión de pruebas de software diseño de casos de pruebasAntonio Quiña
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Softwarearacelij
 
Metodologia agil scrum
Metodologia agil scrumMetodologia agil scrum
Metodologia agil scrumMarco Antonio
 
Estrategias y técnicas de pruebas de software
Estrategias y técnicas de pruebas de softwareEstrategias y técnicas de pruebas de software
Estrategias y técnicas de pruebas de softwarepadrino98
 
Proceso Conceptualizacion
Proceso ConceptualizacionProceso Conceptualizacion
Proceso ConceptualizacionjohannaAC
 
Fase Pruebas de Software
Fase Pruebas de SoftwareFase Pruebas de Software
Fase Pruebas de SoftwarejohannaAC
 
Quality testing genexus day v5 (1)
Quality testing genexus day v5 (1)Quality testing genexus day v5 (1)
Quality testing genexus day v5 (1)GeneXus
 
Enfoque estrategico para la prueba de software
Enfoque estrategico para la prueba de softwareEnfoque estrategico para la prueba de software
Enfoque estrategico para la prueba de softwareJorge Bustillos
 
Pruebas de software agiles
Pruebas de software agilesPruebas de software agiles
Pruebas de software agilesGuino Henostroza
 
5 Inteco Solo Pruebas 2009
5 Inteco Solo Pruebas 20095 Inteco Solo Pruebas 2009
5 Inteco Solo Pruebas 2009Pepe
 
Fundamentos de Pruebas de Software - Capítulo 2
Fundamentos de Pruebas de Software - Capítulo 2Fundamentos de Pruebas de Software - Capítulo 2
Fundamentos de Pruebas de Software - Capítulo 2Professional Testing
 
Automatic generation of UML sequence diagrams from test counterexamples
Automatic generation of UML sequence diagrams from test counterexamplesAutomatic generation of UML sequence diagrams from test counterexamples
Automatic generation of UML sequence diagrams from test counterexamplesLaura M. Castro
 

Andere mochten auch (20)

Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
Fases de prueba de software
Fases de prueba de softwareFases de prueba de software
Fases de prueba de software
 
Modelo benjamin
Modelo benjaminModelo benjamin
Modelo benjamin
 
Act 4.3 pruebas de software
Act 4.3 pruebas de softwareAct 4.3 pruebas de software
Act 4.3 pruebas de software
 
03 gestión de pruebas de software diseño de casos de pruebas
03 gestión de pruebas de software   diseño de casos de pruebas03 gestión de pruebas de software   diseño de casos de pruebas
03 gestión de pruebas de software diseño de casos de pruebas
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
 
Presentacion Corporativa CITIC
Presentacion Corporativa CITICPresentacion Corporativa CITIC
Presentacion Corporativa CITIC
 
Metodologia agil scrum
Metodologia agil scrumMetodologia agil scrum
Metodologia agil scrum
 
Estrategias y técnicas de pruebas de software
Estrategias y técnicas de pruebas de softwareEstrategias y técnicas de pruebas de software
Estrategias y técnicas de pruebas de software
 
Proceso Conceptualizacion
Proceso ConceptualizacionProceso Conceptualizacion
Proceso Conceptualizacion
 
Fase Pruebas de Software
Fase Pruebas de SoftwareFase Pruebas de Software
Fase Pruebas de Software
 
Pruebas de Software
Pruebas de SoftwarePruebas de Software
Pruebas de Software
 
Quality testing genexus day v5 (1)
Quality testing genexus day v5 (1)Quality testing genexus day v5 (1)
Quality testing genexus day v5 (1)
 
Enfoque estrategico para la prueba de software
Enfoque estrategico para la prueba de softwareEnfoque estrategico para la prueba de software
Enfoque estrategico para la prueba de software
 
Pruebas de software agiles
Pruebas de software agilesPruebas de software agiles
Pruebas de software agiles
 
5 Inteco Solo Pruebas 2009
5 Inteco Solo Pruebas 20095 Inteco Solo Pruebas 2009
5 Inteco Solo Pruebas 2009
 
Fundamentos de Pruebas de Software - Capítulo 2
Fundamentos de Pruebas de Software - Capítulo 2Fundamentos de Pruebas de Software - Capítulo 2
Fundamentos de Pruebas de Software - Capítulo 2
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
Automatic generation of UML sequence diagrams from test counterexamples
Automatic generation of UML sequence diagrams from test counterexamplesAutomatic generation of UML sequence diagrams from test counterexamples
Automatic generation of UML sequence diagrams from test counterexamples
 

Ähnlich wie Gestión de pruebas en desarrollo software

Ähnlich wie Gestión de pruebas en desarrollo software (20)

Tema6 pruebas del software
Tema6 pruebas del softwareTema6 pruebas del software
Tema6 pruebas del software
 
Practicas tecnicas
Practicas tecnicasPracticas tecnicas
Practicas tecnicas
 
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
 
U2T4 - Pruebas del Software
U2T4 - Pruebas del SoftwareU2T4 - Pruebas del Software
U2T4 - Pruebas del Software
 
Conceptos básicos de Unit Test
Conceptos básicos de Unit Test Conceptos básicos de Unit Test
Conceptos básicos de Unit Test
 
Si no testeo no me lo creo
Si no testeo no me lo creoSi no testeo no me lo creo
Si no testeo no me lo creo
 
Pruebas-OCW.pdf
Pruebas-OCW.pdfPruebas-OCW.pdf
Pruebas-OCW.pdf
 
S9-DAW-2022S1.pptx
S9-DAW-2022S1.pptxS9-DAW-2022S1.pptx
S9-DAW-2022S1.pptx
 
Introducción a las Pruebas Software
Introducción a las Pruebas SoftwareIntroducción a las Pruebas Software
Introducción a las Pruebas Software
 
Pruebas
PruebasPruebas
Pruebas
 
Verificacion --validacion
Verificacion --validacionVerificacion --validacion
Verificacion --validacion
 
Practicas técnicas
Practicas técnicasPracticas técnicas
Practicas técnicas
 
software testing
software testingsoftware testing
software testing
 
5. Métodos de Prueba de Software
5. Métodos de Prueba de Software5. Métodos de Prueba de Software
5. Métodos de Prueba de Software
 
Pruebas - Fundamentos
Pruebas - FundamentosPruebas - Fundamentos
Pruebas - Fundamentos
 
Pruebas fundamentos
Pruebas fundamentosPruebas fundamentos
Pruebas fundamentos
 
Ra semana 14 2
Ra semana 14 2Ra semana 14 2
Ra semana 14 2
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 

Mehr von Laura M. Castro

Ola, ChatGPT... que carreira sería boa para min?
Ola, ChatGPT... que carreira sería boa para min?Ola, ChatGPT... que carreira sería boa para min?
Ola, ChatGPT... que carreira sería boa para min?Laura M. Castro
 
IAs xerativas e nesgos de xénero
IAs xerativas e nesgos de xéneroIAs xerativas e nesgos de xénero
IAs xerativas e nesgos de xéneroLaura M. Castro
 
As intelixencias artificiais como xeradoras de cultura: exploración dos nesgo...
As intelixencias artificiais como xeradoras de cultura: exploración dos nesgo...As intelixencias artificiais como xeradoras de cultura: exploración dos nesgo...
As intelixencias artificiais como xeradoras de cultura: exploración dos nesgo...Laura M. Castro
 
David vs. Goliat: lecciones aprendidas de una experiencia fallida de adopción...
David vs. Goliat: lecciones aprendidas de una experiencia fallida de adopción...David vs. Goliat: lecciones aprendidas de una experiencia fallida de adopción...
David vs. Goliat: lecciones aprendidas de una experiencia fallida de adopción...Laura M. Castro
 
Why on Earth would I test if I have to just "Let it crash"?
Why on Earth would I test if I have to just "Let it crash"?Why on Earth would I test if I have to just "Let it crash"?
Why on Earth would I test if I have to just "Let it crash"?Laura M. Castro
 
How the BEAM will change your mind
How the BEAM will change your mindHow the BEAM will change your mind
How the BEAM will change your mindLaura M. Castro
 
So I used Erlang... is my system as scalable as they say it'd be?
So I used Erlang... is my system as scalable as they say it'd be?So I used Erlang... is my system as scalable as they say it'd be?
So I used Erlang... is my system as scalable as they say it'd be?Laura M. Castro
 
Elixir: the not-so-hidden path to Erlang
Elixir: the not-so-hidden path to ErlangElixir: the not-so-hidden path to Erlang
Elixir: the not-so-hidden path to ErlangLaura M. Castro
 
Making property-based testing easier to read for humans
Making property-based testing easier to read for humansMaking property-based testing easier to read for humans
Making property-based testing easier to read for humansLaura M. Castro
 
Erlang as a supporting technology for teaching Software Architecture
Erlang as a supporting technology for teaching Software ArchitectureErlang as a supporting technology for teaching Software Architecture
Erlang as a supporting technology for teaching Software ArchitectureLaura M. Castro
 
A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...
A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...
A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...Laura M. Castro
 
Experiencias Industriales con Programación Declarativa
Experiencias Industriales con Programación DeclarativaExperiencias Industriales con Programación Declarativa
Experiencias Industriales con Programación DeclarativaLaura M. Castro
 
Functional programming goes to Hollywood... and around the world!
Functional programming goes to Hollywood... and around the world!Functional programming goes to Hollywood... and around the world!
Functional programming goes to Hollywood... and around the world!Laura M. Castro
 
Failover and takeover contingency mechanisms for network partition and node f...
Failover and takeover contingency mechanisms for network partition and node f...Failover and takeover contingency mechanisms for network partition and node f...
Failover and takeover contingency mechanisms for network partition and node f...Laura M. Castro
 
Editing documents with LaTeX
Editing documents with LaTeXEditing documents with LaTeX
Editing documents with LaTeXLaura M. Castro
 
Introdución á edición de textos con LaTeX
Introdución á edición de textos con LaTeXIntrodución á edición de textos con LaTeX
Introdución á edición de textos con LaTeXLaura M. Castro
 
Edición de textos con LaTeX
Edición de textos con LaTeXEdición de textos con LaTeX
Edición de textos con LaTeXLaura M. Castro
 
Edición de textos con LaTeX
Edición de textos con LaTeXEdición de textos con LaTeX
Edición de textos con LaTeXLaura M. Castro
 
Improving software development using Erlang/OTP
Improving software development using Erlang/OTPImproving software development using Erlang/OTP
Improving software development using Erlang/OTPLaura M. Castro
 

Mehr von Laura M. Castro (20)

Ola, ChatGPT... que carreira sería boa para min?
Ola, ChatGPT... que carreira sería boa para min?Ola, ChatGPT... que carreira sería boa para min?
Ola, ChatGPT... que carreira sería boa para min?
 
IAs xerativas e nesgos de xénero
IAs xerativas e nesgos de xéneroIAs xerativas e nesgos de xénero
IAs xerativas e nesgos de xénero
 
As intelixencias artificiais como xeradoras de cultura: exploración dos nesgo...
As intelixencias artificiais como xeradoras de cultura: exploración dos nesgo...As intelixencias artificiais como xeradoras de cultura: exploración dos nesgo...
As intelixencias artificiais como xeradoras de cultura: exploración dos nesgo...
 
David vs. Goliat: lecciones aprendidas de una experiencia fallida de adopción...
David vs. Goliat: lecciones aprendidas de una experiencia fallida de adopción...David vs. Goliat: lecciones aprendidas de una experiencia fallida de adopción...
David vs. Goliat: lecciones aprendidas de una experiencia fallida de adopción...
 
Why on Earth would I test if I have to just "Let it crash"?
Why on Earth would I test if I have to just "Let it crash"?Why on Earth would I test if I have to just "Let it crash"?
Why on Earth would I test if I have to just "Let it crash"?
 
How the BEAM will change your mind
How the BEAM will change your mindHow the BEAM will change your mind
How the BEAM will change your mind
 
Elixir vs Java
Elixir vs JavaElixir vs Java
Elixir vs Java
 
So I used Erlang... is my system as scalable as they say it'd be?
So I used Erlang... is my system as scalable as they say it'd be?So I used Erlang... is my system as scalable as they say it'd be?
So I used Erlang... is my system as scalable as they say it'd be?
 
Elixir: the not-so-hidden path to Erlang
Elixir: the not-so-hidden path to ErlangElixir: the not-so-hidden path to Erlang
Elixir: the not-so-hidden path to Erlang
 
Making property-based testing easier to read for humans
Making property-based testing easier to read for humansMaking property-based testing easier to read for humans
Making property-based testing easier to read for humans
 
Erlang as a supporting technology for teaching Software Architecture
Erlang as a supporting technology for teaching Software ArchitectureErlang as a supporting technology for teaching Software Architecture
Erlang as a supporting technology for teaching Software Architecture
 
A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...
A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...
A Backpack to go the Extra-Functional Mile (a hitched hike by the PROWESS pro...
 
Experiencias Industriales con Programación Declarativa
Experiencias Industriales con Programación DeclarativaExperiencias Industriales con Programación Declarativa
Experiencias Industriales con Programación Declarativa
 
Functional programming goes to Hollywood... and around the world!
Functional programming goes to Hollywood... and around the world!Functional programming goes to Hollywood... and around the world!
Functional programming goes to Hollywood... and around the world!
 
Failover and takeover contingency mechanisms for network partition and node f...
Failover and takeover contingency mechanisms for network partition and node f...Failover and takeover contingency mechanisms for network partition and node f...
Failover and takeover contingency mechanisms for network partition and node f...
 
Editing documents with LaTeX
Editing documents with LaTeXEditing documents with LaTeX
Editing documents with LaTeX
 
Introdución á edición de textos con LaTeX
Introdución á edición de textos con LaTeXIntrodución á edición de textos con LaTeX
Introdución á edición de textos con LaTeX
 
Edición de textos con LaTeX
Edición de textos con LaTeXEdición de textos con LaTeX
Edición de textos con LaTeX
 
Edición de textos con LaTeX
Edición de textos con LaTeXEdición de textos con LaTeX
Edición de textos con LaTeX
 
Improving software development using Erlang/OTP
Improving software development using Erlang/OTPImproving software development using Erlang/OTP
Improving software development using Erlang/OTP
 

Kürzlich hochgeladen

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Kürzlich hochgeladen (15)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Gestión de pruebas en desarrollo software

  • 1. GESTIÓN DE PRUEBAS EN DESARROLLO SOFTWARE 25 de octubre de 2011 – Facultade de Informática
  • 2. Agenda I. ¿Qué software necesita pruebas? II.¿Qué pruebas necesita mi software? III.¿Cómo hago pruebas a mi software? [pausa] Taller de pruebas software
  • 3. I. ¿Qué software necesita pruebas?
  • 4. ¿Qué sabemos de las pruebas software? ● ¿Para qué sirven? ● ¿Cómo se hacen? ● ¿Cuándo se hacen? ● ¿Quién las hace?
  • 5.
  • 6.
  • 7. ¿Qué es un bug? El software... ● NO hace algo que debería ● Hace algo que NO debería ● Hace algo que NO dice su especificación ● Hace algo que su especificación NO dice, pero debería
  • 8. ¿Qué es un bug? El software... ● NO hace algo que debería ● Hace algo que NO debería ● Hace algo que NO dice su especificación ● Hace algo que su especificación NO dice, pero debería ...es difícil de entender, de usar, lento.
  • 9. ¿Qué los causa? ● Especificación – Porque no se escribe, no se detalla, cambia constantemente o no se propaga ● Diseño – No se detalla suficiente, cambia y no se comunica ● Código – Complejidad, documentación pobre, presión, errores tontos
  • 10. ¿Cuánto cuestan? ● “El 50% del coste del proyecto” ● “Al menos 1/3 y probablemente más de 1/2 del coste del proyecto” ● “Al menos la mitad del coste de todas las demás actividades del proyecto”
  • 11. ¿Cuánto cuestan? ● ¡Más cuanto más tarde se detectan! – Cuesta 0'10 € cambiar una especificación – Cuesta entre 1 y 10 € corregir un error durante el desarrollo o las pruebas – Cuesta desde 100 € subsanarlo si lo encuentra el cliente
  • 12. ¿Cuánto cuestan? ● ¡Más cuanto más tarde se detectan! – Cuesta 0'10 € cambiar una especificación – Cuesta entre 1 y 10 € corregir un error durante el desarrollo o las pruebas – Cuesta desde 100 € subsanarlo si lo encuentra el cliente … en el caso medio.
  • 15. El rey león, 1994/95
  • 19. En el peor de los casos...
  • 24. Definitivamente, no hacer pruebas resulta más caro
  • 25. Definitivamente, no hacer pruebas resulta más caro … y además el coste de mantenimiento cae drásticamente cuando se prueba
  • 26. Definitivamente, no hacer pruebas resulta más caro … y además el coste de mantenimiento cae drásticamente cuando se prueba bien
  • 27. ¿Para qué valen las pruebas? ● Las pruebas exitosas son las que encuentran errores ● Las pruebas no pueden demostrar que el software no tiene fallos ● Las pruebas no pueden demostrar que el software se ajusta a su especificación
  • 28. ¿Para qué valen las pruebas? ● Las pruebas pueden mostrar la presencia de errores ● Las pruebas pueden mostrar que los intentos de hacer fallar el software con respecto a su especificación fracasaron ● Las pruebas pueden mostrar que no se pudo encontrar ninguna disconformidad con respecto a la especificación
  • 29. ¿Para qué valen las pruebas? ● No se puede probar un programa por completo ● No siempre se pueden arreglar todos los errores que se encuentran ● A veces, cuantas más pruebas, menos errores se encuentran (paradoja del pesticida) ● Casi siempre, cuantos más errores se encuentran, más errores hay
  • 30. ¿Para qué vale la gestión de pruebas? ● Debemos ser capaces de responder claramente y con cierta confianza a: – ¿Está el producto listo? – ¿La cobertura de pruebas es suficiente? ● Si la respuesta es no... debe estar claro por qué
  • 31. ¿Para qué vale la gestión de pruebas? ● Las pruebas deben estar bien integradas con el ciclo de desarrollo y vida del proyecto, sea cual sea, para poder responder a – Qué hay que probar – Cuándo se empieza a probar – Cuándo se para de probar – Quién hace qué – Cuáles son los resultados
  • 33. Historia ● Prehistoria (<1956): depuración – Objetivo: que el software se ejecute ● Edad Antigua (1957-1978): demostración – Objetivo: respaldar empíricamente que el software cumple su especificación ● Edad Media (1979-1982): destrucción – Objetivo: forzar la aparición de errores
  • 34. Historia ● Edad Moderna (1983-1987): evaluación – Objetivo: detectar errores en el diseño o en la especificación ● Edad Contemporánea (>1998): prevención – Objetivo: prevenir errores de diseño y de especificación ● Métodologías ágiles ● Test-driven development
  • 35. ¿Qué sabemos de las pruebas software? Verificación Validación ¿Desarrollamos el ¿Desarrollamos el software software correcto? correctamente?
  • 36. ¿Qué sabemos de las pruebas software? Verificación Validación ¿Desarrollamos el ¿Desarrollamos el software software correcto? correctamente? (de acuerdo a su (de acuerdo a la especificación) necesidad del usuario)
  • 37. ¿Qué sabemos de las pruebas software? ● Niveles de prueba – Pruebas de unidad – Pruebas de integración – Pruebas de sistema – Pruebas de aceptación
  • 38. ¿Qué sabemos de las pruebas software? ● Técnicas de prueba – Dinámicas vs. Estáticas vs. Simbólicas ● Requieren o no de la ejecución del software, o lo simulan – Caja blanca vs. Caja negra ● Necesitan o no de conocimiento sobre la estructura interno del software – Positivas vs. Negativas ● Buscan o no ejercitar el software en condiciones normales de uso y funcionamiento
  • 39. ¿Qué sabemos de las pruebas software? ● Técnicas de prueba: – Funcionales ● Se ocupan de lo que el software debe hacer ● Suelen ser técnicas dinámicas de caja negra – Estructurales ● Se ocupan de lo que el software debe hacer ● Suelen ser técnicas de caja blanca – No funcionales ● Se ocupan de cómo el software debe hacerlo ● Suelen ser técnicas dinámicas de caja negra
  • 40. Técnicas de prueba ● Pruebas funcionales de caja negra – Particiones equivalentes ● Se examina el conjunto de posibles entradas para una unidad y se divide en rangos que, de acuerdo con la especificación, deban recibir el mismo tratamiento ● Para cada rango, se elige un elemento representante, bajo la premisa de que cualquier valor dentro de cada rango es tan bueno para encontrar errores como el resto
  • 41. Técnicas de prueba ● Pruebas funcionales de caja negra – Valores-frontera ● Complementa la técnica de particiones equivalentes seleccionando valores de entrada (y de salida) pertenecientes a las fronteras entre rangos ● Las fronteras no siempre son obvias (especialmente a la salida): – primero/último, inicio/fin, vacío/lleno, lento/rápido, grande/pequeño, cercano/lejano, mínimo/máximo, encima/debajo, corto/largo, pronto/tarde, alto/bajo... (+/-1)
  • 42. Técnicas de prueba ● Pruebas funcionales de caja negra – Mapas de transiciones ● Para unidades con estado/memoria ● Fronteras en los mapas de transiciones suelen rebelar problemas de temporización, race conditions,...
  • 43. Técnicas de prueba ● Pruebas funcionales de caja negra – Árboles causa-efecto + tablas de decisión – Selección de datos aleatoria ● En realidad, que siga la gramática especificada para la unidad ● Generará datos que ni probadores ni desarrolladores se plantearían normalmente
  • 44. Técnicas de prueba ● Pruebas funcionales de caja negra – Basadas en modelos y propiedades ● Aserciones, enunciados ● Máquinas de estados finitos
  • 45. Técnicas de prueba ● Pruebas funcionales de caja blanca – Cobertura de instrucciones ● Seleccionar casos de prueba para que se ejecute cada sentencia en el código al menos una vez – Cobertura de decisiones (ramas) ● En el caso de las sentencias de decisión, la cobertura de instrucción puede hacer que se ejecute la toma de la decisión, pero no todas sus posibles ramas
  • 46. Técnicas de prueba ● Pruebas funcionales de caja blanca – Cobertura de condiciones ● Seleccionar casos de prueba para que la toma de una decisión sea ejercitada explorando todas las posibilidades de la(s) condición(es) asociada(s) – Análisis de flujo de datos ● Búsqueda de variables sin utilizar, referenciadas sin inicializar, sin dereferenciar... – Análisis de flujo de control
  • 47. Técnicas de prueba ● Pruebas funcionales de caja blanca: – Mutación de código – Inserción de fallos ● Pruebas estructurales de caja blanca: – Revisión de código
  • 48. Técnicas de prueba ● Pruebas no funcionales de caja blanca – Análisis del tiempo de ejecución y el uso de recursos ● Explora la presencia de bugs monitorizando estos dos parámetros ● Muy valioso para optimización
  • 49. Técnicas de prueba ● Pruebas no funcionales de caja negra – Configuración (instalación) – Estrés (seguridad, fiabilidad) ● Qué carga aguanta el software sin fallar ● Qué avisos da antes de fallar ● Qué pasa cuando soporta alta carga largo rato ● Cuánto tarda en recuperarse ● Qué asistencia es necesaria para la recuperación – Usabilidad
  • 50.
  • 51. Métricas de prueba ● Métricas de proceso – Bugs en desarrollo vs. en producción (fault slip-through), edad media de bugs/bugs abiertos, tiempo de respuesta a 30 días, densidad de bugs... ● Métricas de robustez – Tiempo medio de fallo ● Métricas de usabilidad – Facilidad de uso (tiempo experto/tiempo usuario), ratio de trabajo/productividad,...
  • 52. III.¿Cómo hago pruebas al software?
  • 53. ¿Cómo hago pruebas al software? ● Las pruebas deben derivarse de una línea base (especificación) – Determina qué es un error ● No necesita ser completa, pero debe contener suficiente información útil ● Debe ser estable pero flexible, sus cambios deben controlarse – Debe interpretarse unívocamente – Ser visible y legible para los stakeholders
  • 54. Tipos de errores ● Cambios y correcciones son la primera causa de los bugs – Porque se actualiza el código y no las especificaciones ● Inconsistencias ● Falta de trazabilidad ● Efectos secundarios imprevistos – Porque no se revisa o prueba suficiente
  • 55. Tipos de errores ● Hay 3 principales motivos para cambiar el software: – Corregir bugs – Añadir funcionalidades – Adaptarse a cambios en el entorno
  • 56. Tipos de errores ● Errores de especificación ● Errores funcionales – Previstos pero no suficientemente controlados – Que deberían haberse previsto – Que no podrían haberse previsto ● Errores no funcionales
  • 57. ¿Por dónde empiezo a hacer pruebas? ● Monitorización del progreso de prueba: – ¿Cuánta cobertura necesito? – ¿Cuántos casos de prueba necesito para alcanzarla? – ¿Cuántos casos de prueba tengo? – ¿Cuántos casos de prueba he ejecutado? – ¿Cuántos bugs he encontrado? – ¿He encontrado tantos bugs como esperaba?
  • 58. ¿Cuándo paro de hacer pruebas? ● Las funcionalidades son estables – Ha caído el ratio de detección de errores – Ya no aparecen bugs de cierta gravedad – Code turmoil es satisfactorio ● Se han ejecutado todas las pruebas – Se ha ejercitado todo el código/funcionalidades/escenarios – El número y severidad de los bugs encontrados está en un nivel satisfatorio
  • 59. Calidad de las pruebas ● Métricas e indicios internos: – Bugs detectados en pruebas vs. detectados en producción – Bugs vs. cambios – Bugs por iteración, bugs por parche, parches por release ● ¿Se reducen los de mayor gravedad/prioridad respecto al total? – Bugs abiertos vs. cerrados – Pruebas ejecutadas/abandonadas
  • 60. Calidad de las pruebas ● Métricas e indicios externos: – Nuevos proyectos no avanzan porque hay que dedicar personal a mantenimiento – Evolución de los retrasos en entrega – Evolución de horas extras próximas a las fechas de entrega – Evolución de LOC/bug en cada release, en cada producto
  • 61. Gestión de las pruebas ● Para cada proyecto software, debe definirse una estrategia de prueba – Visión global de la tarea – Dirección, prioridades – Documento de estrategia: ● Situación hoy + top 10 problemas + posibles soluciones, cómo abordarlos – Revión cada 6 meses o cuando haya cambios significativos en el proyecto o el entorno
  • 62. Gestión de las pruebas ● Para cada release, debe redactarse y ejecutarse un plan de pruebas – Centrado en los posibles problemas de cada release ● Nuevas features, interacción con features ya existentes (backwards-compatibility)... – Documento de plan de pruebas ● Actividades necesarias para llevar a cabo unas pruebas eficaces + herramientas y entorno de pruebas + planificación
  • 63. Gestión de las pruebas ● Para cada unidad, debe mantenerse un documento de monitorización de pruebas: – Casos de prueba esperados y reales – Cobertura de funcionalidades – Prioridad de funcionalidades – Bugs esperados y encontrados – Bugs por funcionalidad
  • 64. Gestión de las pruebas ● Especificación de diseño de pruebas – Qué se prueba, técnica, entorno, criterios de aceptación/rechazo. ● Especificación de casos de prueba – Objetivo, especificación, entradas/salidas, dependencias, nº de bugs esperados ● Especificación del proceso de prueba – Release/configuración, pasos para ejecución/medición, procedimiento en caso de error, criterios de inicio/parada
  • 65. Gestión de las pruebas d criterios Especificación de diseño de pruebas ● a id Qué se prueba, técnica, entorno, – l a de prueba de aceptación/rechazo. Especificación de C casos e ● – d nº de bugs esperados Objetivo, especificación, entradas/salidas, n la dependencias, ● P Especificación del proceso de prueba – Release/configuración, pasos para ejecución/medición, procedimiento en caso de error, criterios de inicio/parada
  • 66. “Software exhibits weak-link behaviour: failures in even unimportant parts of the code can have important repercussions elsewhere” “Bugs remain in software after testing because testers and developers have the same view of the way the software will be used by users”
  • 68. “There are things you can specify and things you can test for, and there are things you'd never ever think of guarding against”. “If you can't plan or model it, what makes you think you can do it?”
  • 69.
  • 70. Taller de pruebas software
  • 71. El espectro de las pruebas Casos de prueba con Generación de generación de datos secuencias de prueba Pruebas individuales Propiedades generales Ejemplos concretos Especificación completa