SlideShare una empresa de Scribd logo
1 de 77
Desarrollo de interfaces:
                      8. REALIZACIÓN DE PRUEBAS


                                                               Jose Alberto Benítez Andrades
                                                                             jose@indipro.es
                                                                              www.indipro.es
                                                                                @indiproweb
                                                                                @jabenitez88

Jose Alberto Benítez Andrades– jose@indipro.es - @indiproweb                                   1
REALIZACIÓN DE PRUEBAS – Contenido
 Objetivo, importancia y limitaciones del proceso de prueba. Estrategias.
 Pruebas de integración: ascendentes y descendentes.
 Pruebas de sistema: configuración, recuperación, entre otras.
 Pruebas de regresión.
 Pruebas funcionales.
 Pruebas de capacidad y rendimiento.
 Pruebas de uso de recursos.
 Pruebas de seguridad.
 Pruebas manuales y automáticas. Herramientas software para la
  realización de pruebas.
 Pruebas de usuario.
 Pruebas de aceptación.
 Versiones alfa y beta.
    Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88            2
REALIZACIÓN DE PRUEBAS
 Cuando se desarrolla software se realizan una serie de actividades
  en la que hay enormes posibilidades de que aparezca el error
  humano.

 Los errores pueden presentarse desde el primer momento.

 Debido a la imposibilidad humana de trabajar y comunicarse de
  forma perfecta es necesario acompañar el desarrollo del SW de una
  actividad que garantice la calidad.

 La pruebas son un elemento crítico para la garantía de la calidad del
  SW y representan una revisión final de las especificaciones, el
  diseño y de la codificación.
 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88            3
REALIZACIÓN DE PRUEBAS
 No es raro que una organización de desarrollo de SW emplee entre el 30 y el
  40 por ciento del esfuerzo total del proyecto en las pruebas.

 La pruebas de SW para actividades críticas (Control de tráfico aéreo o de
  reactores nucleares) pueden costar de 3 a 5 veces más que el resto de los
  pasos de la Ing. De SW juntos.

 En la fases anteriores el Ing. Intenta “construir” el SW.

 Al llegar a la pruebas crea una serie de casos de prueba que intentan
  “demoler” el SW construido.

 La pruebas son el paso de la Ing. de SW que se puede ver (psicológicamente)
  como destructivo en lugar de constructivo.

 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                  4
REALIZACIÓN DE PRUEBAS
 Los Ing. de SW son por naturaleza constructivos.

 Las pruebas requieren que se descarten ideas preconcebidas sobre la
  “corrección” del SW que de acaba de desarrollar y se supere cualquier
  conflicto de intereses que aparezca cuando se descubran errores.

 Existe un mito que dice que si fuéramos realmente buenos programando, no
  habría errores que buscar. No habría errores.

 Según el mito existen errores porque somos malos en lo que hacemos y
  debemos sentirnos culpables por ello.

 Las pruebas serían un reconocimiento de nuestros fallos e implica una buena
  dosis de culpabilidad.

 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                  5
REALIZACIÓN DE PRUEBAS – Objetivos de las pruebas
 La prueba es el proceso de ejecución de un programa con la intención de
  descubrir un error.

 Un buen caso de prueba es aquel que tiene una alta probabilidad de mostrar
  un error no descubierto hasta entonces.

 Una prueba tiene éxito si descubre un error no detectado hasta entonces.

 Hay que quitarse la idea, que normalmente tenemos, de que una prueba tiene
  éxito si no descubre errores.

 El objetivo es diseñar pruebas que sistemáticamente saquen a la luz diferentes
  clases de errores, haciéndolo con la menor cantidad de tiempo y esfuerzo.


 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                     6
REALIZACIÓN DE PRUEBAS – Objetivos de las pruebas
 Como ventaja secundaria, la prueba demuestra hasta qué punto la funciones
  del SW trabajan de acuerdo con las especificaciones.

 Los datos recogidos indican en cierta medida la fiabilidad y calidad del SW
  como un todo.

 La prueba no puede asegurar la ausencia de defectos; sólo puede demostrar
  que existen defectos en el SW.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                  7
REALIZACIÓN DE PRUEBAS – Principios
 A todas las pruebas se les debería poder hacer un seguimiento hasta los
  requisitos del cliente
 Las pruebas deberían planificarse mucho antes de que empiecen.
 El principio de Pareto es aplicable a las pruebas del SW. (80% de los
  errores en 20% de los módulos)
 Las pruebas deberían empezar por “lo pequeño” y progresar hacia “lo
  grande”.
 No son posibles las pruebas exhaustivas.
 Para ser más eficaces la pruebas deberían ser realizadas por un equipo
  independiente.
 Es la facilidad con la que se puede probar un SW.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88              8
Caraterísticas que llevan a un SW. Fácil de probar.
 OPERATIVIDAD. Cuanto mejor funcione, más eficientemente se puede
  probar.
    Pocos errores
    Ningún error bloquea las pruebas.

 OBSERVABILIDAD: Lo que ves es lo que pruebas.
    El código fuente es accesible.
    Se informa automáticamente de los errores internos.
    Un resultado incorrecto se identifica fácilmente.
    Los errores internos se detectan automáticamente a través de
     mecanismos de autocomprobación.



 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88       9
Caraterísticas que llevan a un SW. Fácil de probar.
 CONTROLABILIDAD. Cuanto mejor podamos controlar el SW , más se
  puede automatizar y optimizar.
    El Ing. De pruebas puede controlar directamente los estados y
     variables del SW y HW.
    Las pruebas pueden especificarse, automatizarse y reproducirse
     convenientemente.

 CAPACIDAD DE DESCOMPOSICIÓN. Controlando el ámbito de las pruebas,
  podemos aislar más rápidamente los problemas y llevar a cabo mejores
  pruebas.
    SW. Construido en módulos.
    Los módulos se pueden probar independientemente.


 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88           10
Caraterísticas que llevan a un SW. Fácil de probar.
 SIMPLICIDAD: Cuanto menos haya que probar, más rápidamente
  podremos probarlo.
    Simplicidad funcional (Características mínimas para cumplir los
     requisitos)
    Simplicidad Estructural (Arquitectura modularizada)
    Simplicidad del código.

 ESTABILIDAD. Cuanto menos cambios, menos interrupciones a las pruebas.
    Cambios infrecuentes.
    Cambios controlados.
    El SW se recupera bien de lo fallos.



 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88         11
Caraterísticas que llevan a un SW. Fácil de probar.
 FACULIDAD DE COMPRENSIÓN: Cuanto más información tengamos, más
  inteligentes serán las pruebas.
    Entender perfectamente el diseño.
    Se ha entendido la dependencia entre os componentes.
    Se conocen los cambios en el diseño.
    La documentación es instantáneamente accesible, está bien
      organizada, es específica, detallada y exacta.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88     12
ATRIBUTOS DE UNA BUENA PRUEBA
     Tiene una alta probabilidad de encontrar un error.
     No debe ser redundante.
     Debería ser “la mejor de la cosecha”
     No debe ser ni demasiado sencilla ni demasiado compleja.




    Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88   13
INTRODUCCIÓN
 Pruebas: factor crítico para determinar la calidad del software
 La Prueba de Software puede definirse como una actividad en la cual un
  sistema o uno de sus componentes se ejecuta en circunstancias
  previamente especificadas, los resultados se observan y registran, y se
  realiza una evaluación de algún aspecto: corrección, robustez, eficiencia,
  etc.
 El objetivo de una prueba es descubrir algún error.
 Caso de prueba (test case): «un conjunto de entradas, condiciones de
  ejecución y resultados esperados desarrollados para un objetivo
  particular»
 Un caso de prueba es bueno cuando su ejecución conlleva una
  probabilidad elevada de encontrar un error.
 El éxito de la prueba se mide en función de la capacidad de detectar un
  error que estaba oculto.
 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                 14
DEFINICIONES
 Verificación: ¿estamos construyendo correctamente el producto? ¿el
  software se ha construido de acuerdo a las especificaciones?
 Validación: ¿estamos construyendo el producto correcto? ¿el software
  hace lo que el usuario realmente requiere?
 Defecto (bug): una anomalía en el software como, por ejemplo, un
  proceso, una definición de datos o un paso de procesamiento incorrectos
  en un programa
 Fallo (failure): cuando el sistema, o alguno de sus componentes, es
  incapaz de realizar las funciones requeridas dentro de los rendimientos
  especificados
 Error (error): acción humana que conduce a un resultado incorrecto (error
  de programación)



 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                15
RELACIÓN ENTRE ERROR, DEFECTO Y FALLO

  Error                                          Sistema de gestión de aeropuerto
Equivocación
del programador
                           2+2=5
                                                                                                 Accidente
                                                                                                 (seguridad)


                                               Defecto (calidad)
                                                                           S.Aproximación


                                                                  ¡Xyx//
                                                                  ???




                                                                            Fallo (fiabilidad)


  Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                                            16
Recomendaciones para la prueba
 Cada caso de prueba debe definir el resultado de salida
  esperado.
 El programador debe evitar probar sus propios programas, ya
  que desea (consciente o inconscientemente) demostrar que
  funcionan sin problemas.
 Se debe inspeccionar a conciencia el resultado de cada
  prueba, y así, poder descubrir posibles síntomas de defectos.
 Al generar casos de prueba, se deben incluir tanto datos de
  entrada válidos y esperados como no válidos e inesperados.



 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88    17
Recomendaciones para la prueba
 Las pruebas deben centrarse en dos objetivos (es habitual
  olvidar el segundo):
      Probar que el programa hace lo que debe hacer.
      Probar que el programa no hace lo que no debe hacer.
 Todos los casos de prueba deben documentarse y diseñarse
  con cuidado.
 No deben hacerse planes de prueba suponiendo que,
  prácticamente, no hay defectos en los programas y, por lo
  tanto, dedicando pocos recursos a las pruebas.
 La experiencia indica que donde hay un defecto pueden
  aparecer otros.

 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88   18
El proceso de prueba

                  Requisitos                        VALIDACIÓN                            Pruebas de
                  de usuario                                                              aceptación


                                                      VERIFICACIÓN
                      Especificac.                                                Pruebas de
                      de requisitos                                                sistema



                               Diseño                                       Pruebas de
                               modular                                      integración



                                       Especific. y                  Pruebas de
                                        lógica de                     unidad
                                         módulo


                                                         Código
 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                                         19
El proceso de prueba
 Pruebas de unidad: se prueba cada módulo individualmente.
 Prueba funcional o de integración: el software totalmente
  ensamblado se prueba como un conjunto, para comprobar si
  cumple o no tanto los requisitos funcionales como los
  requisitos de rendimiento, seguridad, etc.
 Prueba del sistema: el software ya validado se integra con el
  resto del sistema (por ejemplo, elementos mecánicos,
  interfaces electrónicas, etc.) para probar su funcionamiento
  conjunto .
 Prueba de aceptación: el producto final se comprueba por el
  usuario final en su propio entorno de explotación para
  determinar si lo acepta como está o no.
 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88    20
Flujo de Información de la Prueba
                                                                                                           Informe de la prueba




                 Casos de prueba                     Datos de prueba                    Resultado de la prueba



                                                                       Ejecutar el programa                 Comparar los
 Diseñar los                       Preparar los                                                             resultados con los
                                                                       con los datos
 casos de prueba                   datos de prueba                                                          casos de prueba
                                                                       de prueba




Especificación
del programa




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                                                                   21
Proceso de depuración
 En cuanto a la localización del error en el código fuente:

      Analizar la información y pensar.
      Al llegar a un punto muerto, pasar a otra cosa.
      Al llegar a un punto muerto, describir el problema a otra persona.
      Usar herramientas de depuración sólo como recurso secundario.
      No experimentar cambiando el programa.
      Se deben atacar los errores individualmente.
      Se debe fijar la atención también en los datos.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88              22
Proceso de depuración
 En cuanto a la corrección del error:

      Donde hay un defecto, suele haber más.
      Debe fijarse el defecto, no sus síntomas.
      La probabilidad de corregir perfectamente un defecto no es del 100%.
      Cuidado con crear nuevos defectos.
      La corrección debe situarnos temporalmente en la fase de diseño.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                23
Diseño de casos de Prueba
 El diseño de casos de prueba para la verificación del software
  puede significar un esfuerzo considerable (cerca del 40% del
  tiempo total de desarrollo)

 Existen fundamentalmente tres enfoques:
      Prueba de caja blanca
      Prueba de caja negra
      Pruebas aleatorias


 Combinar ambos enfoques permite lograr mayor fiabilidad.


 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88     24
Diseño de casos de Prueba
                                                          Caja blanca


                               Entrada                                   Salida




                                                            Caja negra


                                Entrada                                  Salida

                                                       Funciones




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                    25
Diseño de casos de Prueba
 La prueba de caja blanca o prueba estructural se basa en el
  estudio minucioso de toda la operatividad de una parte del
  sistema, considerando los detalles procedimentales.
      Se plantean distintos caminos de ejecución alternativos y se llevan a
       cabo para observar los resultados y contrastarlos con lo esperado.
      En principio se podría pensar que es viable la verificación mediante la
       prueba de la caja blanca de la totalidad de caminos de un
       procedimiento.
      Esto es prácticamente imposible en la mayoría de los casos reales
       dada la exponencialidad en el número de combinaciones posibles.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                   26
Diseño de casos de Prueba
 La prueba de caja negra o prueba funcional principalmente analiza la
  compatibilidad en cuanto a las interfaces de cada uno de los componentes
  software entre sí.
 La prueba aleatoria consiste en utilizar modelos que representen las
  posibles entradas del programa para crear a partir de ellos los casos de
  prueba.
      Modelos estadísticos que simulan las secuencias y frecuencias habituales de
       los datos de entrada al programa.
      Se fundamenta en que la probabilidad de descubrir un error es prácticamente
       la misma si se hacen una serie de pruebas aleatoriamente elegidas, que si se
       hacen siguiendo las instrucciones dictadas por criterios de cobertura.
      Sin embargo, pueden permanecer ocultos errores que solamente se
       descubren ante entradas muy concretas.
      Este tipo de pruebas puede ser suficiente en programas poco críticos


 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                        27
Pruebas de caja blanca
 La prueba de la caja blanca usa la estructura de control del diseño
  procedural para derivar los casos de prueba.

 Idea: no es posible probar todos los caminos de ejecución distintos, pero
  sí confeccionar casos de prueba que garanticen que se verifican todos los
  caminos de ejecución llamados independientes.

 Verificaciones para cada camino independiente:
    Probar sus dos facetas desde el punto de vista lógico, es decir,
      verdadera y falsa.
    Ejecutar todos los bucles en sus límites operacionales
    Ejercitar las estructuras internas de datos.


 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                28
Pruebas de caja blanca
 Consideraciones:
    Los errores lógicos y las suposiciones incorrectas son inversamente
     proporcionales a la probabilidad de que se ejecute un camino del
     programa.

      A menudo creemos que un camino lógico tiene pocas posibilidades de
       ejecutarse cuando, de hecho, se puede ejecutar de forma regular.

      Los errores tipográficos son aleatorios.

      Tal como apuntó Beizer, “los errores se esconden en los rincones y se
       aglomeran en los límites”.


 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                 29
Tipos de cobertura
 Cobertura de sentencias. cada sentencia o instrucción del programa se
  ejecute al menos una vez.
 Cobertura de decisiones. cada decisión tenga, por lo menos una vez, un
  resultado verdadero y, al menos una vez, uno falso.
 Cobertura de condiciones. cada condición de cada decisión adopte el valor
  verdadero al menos una vez y el falso al menos una vez
 Criterio de decisión/condición. Consiste en exigir el criterio de cobertura
  de condiciones obligando a que se cumpla también el criterio de
  decisiones
 Criterio de condición múltiple. Debe garantizar todas las combinaciones
  posibles de las condiciones dentro de cada decisión.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                  30
Tipos de cobertura
             EJEMPLO 1:                                          EJEMPLO 2:

             si (a>b)                                            si (a>b)
               entonces a=a-b                                      entonces a=a-b
               si no b=b-a                                       fin_si
             fin_si


             EJEMPLO 3:                                          EJEMPLO 4:

             i=1                                                 si (a>b) y (b      es
             mientras (v[i]<>b)                                  primo)
             y(i<>5)                                               entonces a=a-b
             hacer                                               fin_si
                i=i+1;
             fin_mientras


 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                           31
Prueba del camino básico
 La prueba del camino básico es una técnica de prueba de la caja blanca
  propuesta por Tom McCabe.

 La idea es derivar casos de prueba a partir de un conjunto dado de
  caminos independientes por los cuales puede circular el flujo de control.

 Camino independiente es aquel que introduce por lo menos una sentencia
  de procesamiento (o condición) que no estaba considerada en el conjunto
  de caminos independientes calculados hasta ese momento.

 Para obtener el conjunto un conjunto de caminos independientes se
  construirá el Grafo de Flujo asociado y se calculará su Complejidad
  Ciclomática.

 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                32
Prueba del camino básico: Grafos de Flujo
 El flujo de control de un programa puede representarse por un grafo de
  flujo.
 Cada nodo del grafo corresponde a una o más sentencias de código
  fuente
 Cada nodo que representa una condición se denomina nodo predicado.
 Cualquier representación del diseño procedural se puede traducir a un
  grafo de flujo.
 Un camino independiente en el grafo es el que incluye alguna arista
  nueva, es decir, que no estaba presente en los caminos definidos
  previamente.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88             33
Prueba del camino básico: Grafos de Flujo

                                 Secuencia
     Fin
     SI                                                           no opción1   no opción2         no opciónN

                                                                                            ...

                                      En caso de

                                                                                            ...
                     Si no                                                      opción2            opciónN
Entonces




                                 Mientras                          opción1
           SI


                                                                                                             FinCaso




  Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                                                        34
Prueba del camino básico: Grafos de Flujo

 Si se diseñan casos de prueba que cubran los caminos básicos, se
  garantiza la ejecución de cada sentencia al menos una vez y la prueba de
  cada condición en sus dos posibilidades lógicas (verdadera y falsa).

 El conjunto básico para un grafo dado puede no ser único, depende del
  orden en que se van definiendo los caminos.

 Cuando aparecen condiciones lógicas compuestas la confección del grafo
  es más compleja.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88               35
Prueba del camino básico: Grafos de Flujo

                                                               Nodos
                                                             Predicado
 Ejemplo:                                                                              a
                                                                             Falso            Cierto

            SI a O b
                                                                              b                   x
             Entonces
                                                                     Falso           Cierto
                hacer x
             Si No                                                   y                   x
                hacer y
            FinSI




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                                         36
Prueba del camino básico: Complejidad Ciclomática


 Complejidad ciclomática de un grafo de flujo, V(G), indica el número
  máximo de caminos independientes en el grafo.

 Puede calcularse de tres formas alternativas:

      El número de regiones en que el grafo de flujo divide el plano.

      V(G) = A - N + 2, donde A es el número de aristas y N es el número de
       nodos.

      V(G) = P + 1, donde P es el número de nodos predicado.
 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                 37
Prueba del camino básico: Complejidad Ciclomática
                                                                               1



                                                                               2
 V(G) = 4                                                                          R3


      El grafo de la figura delimita cuatro                         4               3
       regiones.                                                               R2

                                                                 6   R1    5
      11 aristas - 9 nodos + 2 = 4
                                                                     7
      3 nodos predicado + 1 = 4                                                     8
                                                                      R4


                                                                               9


 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                           38
Prueba del camino básico: Complejidad Ciclomática
      El conjunto de caminos independientes del grafo                          1
       será 4.
         Camino 1: 1-9
         Camino 2: 1-2-4-5-7-8-1-9                                             2
         Camino 3: 1-2-4-6-7-8-1-9
         Camino 4: 1-2-3-8-1-9
                                                                        4           3

      Cualquier otro camino no será un camino
       independiente, p.e.,                                         6       5
        1-2-4-5-7-8-1-2-3-8-1-2-4-6-7-8-1-9
        ya que es simplemente una combinación de                        7
        caminos ya especificados                                                    8
      Los cuatro caminos anteriores constituyen un
       conjunto básico para el grafo
                                                                                9


    Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                       39
Prueba del camino básico: Derivación de casos de prueba
 El método de prueba del camino básico se puede aplicar a un diseño
  procedural detallado (pseudocódigo) o al código fuente de la aplicación.

 Pasos para diseñar los casos de prueba:

     1. Se etiqueta el código fuente, o el pseudocódigo, enumerando cada
        instrucción y cada condición simple.
     2. A partir del código fuente etiquetado, se dibuja el grafo de flujo
        asociado.
     3. Se calcula la complejidad ciclomática del grafo.
     4. Se determina un conjunto básico de caminos independientes.
     5. Se preparan los casos de prueba que obliguen a la ejecución de cada
        camino del conjunto básico.

 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                40
Prueba del camino básico: Derivación de casos de prueba
                                                           4
                                                                   Casos de Prueba

                                                                   Un caso por cada camino
                                                                   Valores concretos
                                                                   para los datos
             Código Fuente                                         de entrada y de salida
             (Pseudocódigo)
             Etiquetado

                                                           3
                                  1                                Caminos Independientes
                                          1                        (<= CC)

                                                                   Cada nuevo camino incluye
                                          2                        una arista no contemplada
                                                                   en los anteriores caminos
                                      3         4

                              5           4                    2
                                                                   Complejidad Ciclomática
                                      6
                                                                   A-N+2
                            Grafo de Flujo                         N.Predicado + 1
                                                                   Regiones Internas + 1

 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                                 41
Prueba del camino básico: Derivación de casos de prueba

          void calcula_e_imprime_media(float x, float y)
          {
                  float resultado;
1
                  resultado = 0.0;             3
                  if (x < 0 || y < 0)
                2        printf(“x e y deben ser positivos”); 4
                  else {
                         resultado = (x + y)/2;
              5          printf(“La media es %fn”, resultado);
                  }
    6     }



        Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88   42
Prueba del camino básico: Ejemplo
                       1


                                                 V(G) = 3 regiones. Por lo tanto, hay que
                X<0     2                        determinar tres caminos independientes.
         Falso                  Cierto
                                                   - Camino 1: 1-2-3-5-6
                                                   - Camino 2: 1-2-4-6
   Y<0                                   4
            3                                      - Camino 3: 1-2-3-4-6
Cierto                Falso
                                                 Casos de prueba para cada camino:
                                                    Camino 1: x=3, y= 5, rdo=4
    5                       4
                                                    Camino 2: x=-1, y=3, rdo=0, error
                                                    Camino 3: x=4, y=-3, rdo=0, error
            6



 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                              43
Pruebas de estructura de control

 La técnica de prueba del camino básico del punto anterior es una de las
  muchas existentes para la pruebas de la estructura de control.

 Aunque sea alta la efectividad de la prueba del camino básico, no nos
  asegura completamente la corrección del software.

 Veremos a continuación otras variantes de la prueba de la estructura de
  control. Estas variantes amplían el abanico de pruebas mejorando la
  fiabilidad de las pruebas de caja blanca.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88              44
Pruebas de estructura de control - Prueba de Condiciones

 La prueba de condiciones es un método de diseño de casos de prueba que
  ejercita las condiciones lógicas contenidas en el módulo de un programa.
  Los tipos de errores que pueden aparecer en una condición son los
  siguientes:

      Existe un error en un operador lógico (que sobra, falta o no es el que
       corresponde).
      Existe un error en un paréntesis lógico (cambiando el significado de los
       operadores involucrados).
      Existe un error en un operador relacional (operadores de comparación
       de igualdad, menor o igual, etc.).
      Existe un error en una expresión aritmética.

 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                45
Pruebas de estructura de control - Prueba de Bucles




                                    Bucles
                                   anidados

                                                              Bucles
     Bucles                                               concatenados     Bucles no
    simples                                                              estructurados



 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                           46
Pruebas de estructura de control - Prueba de Condiciones


 Pruebas para Bucles simples. (n es el número máximo de iteraciones
  permitidos por el bucle)

      Pasar por alto totalmente el bucle
      Pasar una sola vez por el bucle
      Pasar dos veces por el bucle
      Hacer m pasos por el bucle con m < n
      Hacer n-1, n y n + 1 pasos por el bucle




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88         47
Pruebas de estructura de control - Prueba de Condiciones
 Pruebas para Bucles anidados
    Comenzar en el bucle más interior estableciendo los demás bucles en
     sus valores mínimos.
    Realizar las pruebas de bucle simple para el más interior manteniendo
     los demás en sus valores mínimos.
    Avanzar hacia fuera confeccionando pruebas para el siguiente bucle
     manteniendo todos los externos en los valores mínimos y los demás
     bucles anidados en sus valores típicos.
    Continuar el proceso hasta haber comprobado todos los bucles.
 Pruebas para Bucles concatenados

      Siempre que los bucles concatenados sean independientes se puede
       aplicar lo relativo a bucles simples/anidados. En caso de ser
       dependientes se evaluarán como bucles anidados.
 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88               48
Pruebas de caja negra
 Los métodos de la caja negra se centran sobre los requisitos funcionales
  del software.

 La prueba de la caja negra intenta encontrar errores de los siguientes
  tipos:
    Funciones incorrectas o inexistentes.
    Errores relativos a las interfaces.
    Errores en estructuras de datos o en accesos a bases de datos
      externas.
    Errores debidos al rendimiento.
    Errores de inicialización o terminación.



 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88               49
Partición equivalente
 La partición equivalente es un método que divide el campo de entrada de
  un programa en clases de datos a partir de los cuales se pueden derivar
  casos de prueba.

 La partición equivalente define casos de prueba para descubrir clases de
  errores.

 Se define una condición de entrada para cada dato de entrada (valor
  numérico específico, rango de valores, conjunto de valores relacionados o
  condición lógica).




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                50
Partición equivalente
 Las clases de equivalencia se pueden definir de acuerdo a las siguientes
  directrices:

      Si una condición de entrada especifica un rango, se define una clase
       de equivalencia válida y dos no válidas.
      Si la condición de entrada es un valor específico, se define una clase
       de equivalencia válida y dos no válidas.
      Si la condición de entrada especifica un miembro de un conjunto, se
       define una clase de equivalencia válida y otra no válida.
      Si la condición de entrada es lógica, se define una clase válida y otra
       no válida.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                   51
Ejemplo Partición equivalente
 Datos de entrada a una aplicación bancaria
    Código de área: en blanco o número de 3 dígitos.
    Prefijo: número de 3 dígitos que no comience por 0 o 1.
    Sufijo: número de 4 dígitos.
    Contraseña: en blanco o valor alfanumérico de 6 caracteres.
    Ordenes: “comprobar”, “depositar”, “pagar factura”, etc.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88     52
Ejemplo Partición equivalente
 Condiciones de entrada
    Código de área: número de 3 dígitos o no es número
        lógica: el código puede ser un número o no.
        valor: número de 3 dígitos.
    Prefijo: número de 3 dígitos que no comience por 0 o 1.
        rango: valores entre 200 y 999.
    Sufijo: número de 4 dígitos.
        valor: número de 4 dígitos.
    Contraseña: en blanco o valor alfanumérico de 6 caracteres.
        lógica: la contraseña puede estar presente o no.
        valor: cadena de 6 caracteres.
    Ordenes: “comprobar”, “depositar”, “pagar factura”, etc.
        conjunto: el de todas las ordenes posibles.
 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88     53
Esquema prueba de la partición equivalente
                                                                    4
                                                                            Casos de Prueba Válidos:
                                                                            que cubran clases válidas
                    Especificar los
             1      datos de entrada:                                       Casos de Prueba No Válidos:
                                                                            que cubran una clase no válida
                                                                            y el resto válidas
                    dato: tipo o descripción




                                                                            DATO           CLASES        CLASES
       Determinar las clases equivalencia                               3   ENTRADA        VÁLIDAS       NO VÁLIDAS
2
                                                                                   a           (1)            (2)
       Rango: una válida y dos no válidas.
       Valor específico: una válida y dos no válidas.                               b          (3)           (4) (5)
       Conjunto:
         - Si cada elmenento se trata igual,                                       ...         ...            ...
              una válida y otra no válida.
         - Si cada elemento se trata diferente,
                                                                            TABLA de CLASES de EQUIVALENCIA
             una válida por cada elemento y
             otra no válida                                                 ENUMERADAS
       Lógica: una válida y otra no válida.


    Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                                                      54
Ejemplo Partición equivalente
 Aplicación bancaria. Datos de entrada:

      Código de área: número de 3 dígitos que no empieza por 0 ni por 1
      Nombre de identificación de operación: 6 caracteres
      Órdenes posibles: “cheque”, “depósito”, “pago factura”, “retirada de
       fondos”




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                55
Ejemplo Partición Equivalente
Determinar las clases de equivalencia
Código de área:
                     Lógica:
                        1 clase válida: número
                                 Rango:
                                    1 clase válida: 200 < código < 999
                                    2 clases no válidas: código < 200; código > 999
                        1 clase no válida: no es número
Nombre de identificación:
                     Valor específico:
                        1 clase válida: 6 caracteres
                        2 clases no válidas: más de 6 caracteres; menos de 6
                                 caracteres
Órdenes posibles:
                     Conjunto de valores:
                        1 clase válida: 4 órdenes válidas
                        1 clase no válida: órden no válida

 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                        56
Ejemplo Partición Equivalente : Tabla de clases de
equivalencia


       Datos de Entrada                     Clases Válidas          Clases No Válidas
    Código de área                   (1) 200 <= código <= 999 (2) código < 200
                                                              (3) código > 999
                                                              (4) no es númerico

    Identificación                   (5) 6 caracteres            (6) menos de 6 caracteres
                                                                 (7) más de 6 caracteres


    Orden                            (8) “cheque”                (12) ninguna orden válida
                                     (9) “depósito”
                                     (10) “pago factura”
                                     (11) “retirada de fondos”




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                               57
Ejemplo Partición Equivalente : Casos de Prueba Válidos


                         Código          Identificación               Orden         Clases Cubiertas

                      300              Nómina                    “Depósito”         (1)C (5) C (9) C

                      400              Viajes                    “Cheque”           (1) (5) (8)C

                      500              Coches                    “Pago-factura”     (1) (5) (10) C

                      600              Comida                    “Retirada-fondos” (1) (5) (11) C




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                                         58
Ejemplo Partición Equivalente: Casos de Prueba NO
Válidos

          Código               Identificación                    Orden     Clases Cubiertas

      180                  Viajes                       “Pago-factura”     (2) C (5) (10)

      1032                 Nómina                       “Depósito”         (3) C (5) (9)

      XY                   Compra                       “Retirada-fondos” (4) C (5) (11)

      350                  A                            “Depósito”         (1) (6) C (9)

      450                  Regalos                      “Cheque”           (1) (7) C (8)

      550                  Casa                         &%4                (1) (5) (12) C



 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                                59
Análisis de valores límite
 La técnica de Análisis de Valores Límites selecciona casos de prueba que
  ejerciten los valores límite dada la tendencia de la aglomeración de
  errores en los extremos.

 Complementa la de la partición equivalente. En lugar de realizar la prueba
  con cualquier elemento de la partición equivalente, se escogen los valores
  en los bordes de la clase.

 Se derivan tanto casos de prueba a partir de las condiciones de entrada
  como con las de salida.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                 60
Análisis de valores límite
 Directrices:

      Si una condición de entrada especifica un rango delimitado por los
       valores a y b, se deben diseñar casos de prueba para los valores a y b y
       para los valores justo por debajo y justo por encima de ambos.

      Si la condición de entrada especifica un número de valores, se deben
       desarrollar casos de prueba que ejerciten los valores máximo y
       mínimo además de los valores justo encima y debajo de aquéllos.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                    61
Análisis de valores límite
 ... Directrices:

      Aplicar las directrices anteriores a las condiciones de salida. Componer
       casos de prueba que produzcan salidas en sus valores máximo y
       mínimo.

      Si las estructuras de datos definidas internamente tienen límites
       prefijados (p.e., un array de 10 entradas), se debe asegurar diseñar un
       caso de prueba que ejercite la estructura de datos en sus límites.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                   62
Ejemplo Camino Básico: Código Fuente
int contar_letra(char cadena[10], char letra)
{
  int contador, n, lon;
  n=0; contador=0;
  lon = strlen (cadena);
  if (lon > 0) {
             do {
               if (cadena[contador] == letra) n++;
               contador++;
               lon--;
             } while (lon > 0);
  }
  return n;
}
 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88   63
Ejemplo Camino Básico: Código Fuente Etiquetado
int contar_letra(char cadena[10], char letra)
{
  int contador, n, lon;
                                  1
  n=0; contador=0;
  lon = strlen (cadena);
  if (lon > 0) {     2

      do {
        if (cadena[contador] == letra) 3

              n++;    4

        contador++;        5
        lon--;
                          6
      } while (lon > 0);
  }
  return n; 7
}
 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88   64
Ejemplo Camino Básico: Grafo de Flujo
int contar_letra(char cadena[10], char letra)
{                                                                        1
  int contador, n, lon;
                               1
  n=0; contador=0;
  lon = strlen (cadena);                                                 2
                                                                                     V
  if (lon > 0) { 2                                               F
     do {                                                                        3
       if (cadena[contador] == letra) 3                                                  V
            n++; 4                                                           F
                                                                                          4
       contador++;       5

       lon--;           6                                                        5
     } while (lon > 0);
  }                                                                  V
  return n; 7                                                                    6

}                                                                                F
                                                                     7
 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                           65
Ejemplo Camino Básico: Caminos Independientes
                                                                         1
 V(G) = 4;
   Nodos=7; Aristas=9;
   Nodos Predicado=3;                                                    2
                                                                                     V
   Regiones = 4                                                  F

                                                                                 3
                                                                                         V
 Conjunto de caminos independientes:
  1.   1-2-7                                                                 F
                                                                                         4
  2. 1-2-3-4-5-6-7
  3. 1-2-3-5-6-7                                                                 5

  4. 1-2-3-4-5-6-3-5-6-7 (No es el único)
                                                                     V
                                                                                 6

                                                                                 F
                                                                     7

 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                               66
Ejemplo Camino Básico: Casos de Prueba
1.          1-2-7                                     cadena = ””        letra = ‘a’   n = 0;
2.          1-2-3-4-5-6-7                              cadena = “a”      letra = ‘a’   n = 1;
3.          1-2-3-5-6-7                                 cadena = “b”     letra = ‘a’   n = 0;
4.          1-2-3-4-5-6-3-5-6-7                         cadena = “ab”   letra = ‘a’    n = 1;




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                                  67
Pruebas de integración
 Se realiza sobre un conjunto de componentes o módulos para formar un
  sistema o subsistema mayor.
 Mientras las pruebas unitarias las suele llevar a cabo el propio
  programador, las pruebas de integración suelen realizarse por un equipo
  independiente.
 Existen dos estrategias para realizar las pruebas de integración
    Integración descendente (top-down): se comienza con los niveles
       superiores del sistema y se va integrando hacia niveles inferiores,
       sustituyendo módulos no probados por módulos ficticios cuando fuera
       necesario.
    Integración ascendente (bottom-up): se integran componentes
       individuales desde los niveles inferiores, y se va ascendiendo hasta
       completar el sistema.


 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                68
Pruebas de integración
¿ Cómo abordar la prueba de los módulos de la figura ?



                                                      A


                    B                                 C               D



                    E                         F                   G




  Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88           69
Pruebas de integración: estrategia ascendente
                           1ª fase
                           fase
                                Impulsor de E        Impulsor de F       Impulsor de G       Impulsor de D




                                     E                    F                   G                   D



                     2ª fase                                             3ª fase
                     fase                                                fase
           Impulsor de E
                       B             Impulsor de F
                                                 C                                           A


                                                                     B                       C               D
                B                          C


                                                                     E                   F              G
                 E                   F               G

 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                                                   70
Pruebas de integración: estrategia ascendente
 Ventajas:
    Se detectan antes los fallos que se produzcan en la parte inferior del
     sistema.
    La definición de los casos de prueba es más sencilla, puesto que los
     módulos inferiores desempeñan funciones más específicas.
    Es más fácil observar los resultados de la prueba, ya que es en los
     módulos inferiores donde se elaboran los datos (los módulos
     superiores suelen ser coordinadores).

 Desventajas:
    Se requieren módulos impulsores que deben codificarse.
    El programa o sistema completo no se prueba hasta que se introduce
     el último módulo.

 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                71
Pruebas de integración: estrategia descendente
 El módulo raíz o principal se prueba primero. Todos sus subordinados se
  sustituyen por módulos ficticios.
 Una vez probado el módulo raíz (estando ya libre de defectos) se sustituye
  uno de sus subordinados ficticios por el módulo implementado
  correspondiente.
 Cada vez que se incorpora un módulo se efectúan las pruebas
  correspondientes.
 Al terminar cada prueba, se sustituye un módulo ficticio por su
  correspondiente real.
 Conviene repetir algunos casos de prueba de ejecuciones anteriores para
  asegurarse de que no se ha introducido ningún error nuevo.




 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                 72
Pruebas de integración: estrategia descendente
                                  1 ª et a p a                   A
                                               B                 C   D
     PRIMERO
     EN                            2 ª et a p a                  A
     PROFUNDIDAD
                                                  B              C   D

                                                   E
                                                                 A
                                  3 ª et a p a
                                                  B              C   D

                                                  E
 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88           73
Pruebas de integración: estrategia descendente
                                                                 A


                                      B                          C           D

        PRIMERO
                                                                 A
        EN
        ANCHURA                           B                      C           D


                                          E              F               G


                                                                     A


                                          B                          C       D


                                              E              F           G



 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                   74
Pruebas de integración: estrategia descendente
     Ventajas:
        Los defectos en los niveles superiores del sistema se detectan antes.
        Una vez incorporadas las funciones que manejan la entrada/salida, es fácil manejar los
          casos de prueba.
        Permite ver antes una estructura previa del programa, lo que facilita hacer
          demostraciones.

     Desventajas:
        Se requieren módulos ficticios que suelen ser complejos de crear.
        Antes de incorporar la entrada/salida es complicado manejar los casos de prueba.
        A veces no se pueden crear casos de prueba, porque los detalles de operación vienen
          proporcionados por los módulos inferiores.
        Es más difícil observar la salida, porque los resultados surgen de los módulos inferiores.
        Pueden inducir a diferir la terminación de la prueba de ciertos módulos, ya que puede
          parecer que el programa funciona.



    Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                                     75
Otros tipos de prueba
     Recorridos (“walkthroughs”).
     Pruebas de robustez (“robustness testing”)
     Pruebas de aguante (“stress”)
     Prestaciones (“performance testing”)
     Conformidad u Homologación (“conformance testing”)
     Interoperabilidad (“interoperability tesing”)
     Regresión (“regression testing”)
     Prueba de comparación




    Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88   76
Herramientas automáticas de prueba
 Analizadores estáticos. Estos sistemas de análisis de programas soportan
  pruebas de las sentencias que consideran más débiles dentro de un
  programa.
 Auditores de código. Son filtros con el propósito de verificar que el código
  fuente cumple determinados criterios de calidad (dependerá fuertemente
  del lenguaje en cuestión).
 Generadores de archivos de prueba. Estos programas confeccionan
  automáticamente ficheros con datos que servirán de entrada a las
  aplicaciones.
 Generadores de datos de prueba. Confeccionan datos de entrada
  determinados que conlleven un comportamiento concreto del software.
 Controladores de prueba. Confeccionan y alimentan los datos de entrada
  y simulan el comportamiento de otros módulos para restringir el alcance
  de la prueba.
 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88                   77

Más contenido relacionado

La actualidad más candente

Mapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareMapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareKarloz Dz
 
Ingeniería de requisitos
Ingeniería de requisitosIngeniería de requisitos
Ingeniería de requisitosZuleima
 
Estrategias prueba de software
Estrategias prueba de softwareEstrategias prueba de software
Estrategias prueba de softwareCentro Líbano
 
Ingeniería De Requisitos
Ingeniería De RequisitosIngeniería De Requisitos
Ingeniería De RequisitosssharLudena
 
Plan de pruebas de software
Plan de pruebas de softwarePlan de pruebas de software
Plan de pruebas de softwareEdgardo Rojas
 
Arquitectura multicapa
Arquitectura multicapaArquitectura multicapa
Arquitectura multicapaHugo Herrera
 
Introducción a las Pruebas Software
Introducción a las Pruebas SoftwareIntroducción a las Pruebas Software
Introducción a las Pruebas SoftwareMicael Gallego
 
Gestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo softwareGestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo softwareLaura M. Castro
 
Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010
Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010
Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010SaraEAlcntaraR
 
Pruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacionPruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacionAbner Gerardo
 
Software caja negra y caja blanca
Software caja negra y caja blancaSoftware caja negra y caja blanca
Software caja negra y caja blancaStudentPc
 
Act 4.3 pruebas de software
Act 4.3 pruebas de softwareAct 4.3 pruebas de software
Act 4.3 pruebas de softwareRodrigo Santiago
 
Pmo informatica plantilla de plan de pruebas de software
Pmo informatica plantilla de plan de pruebas de softwarePmo informatica plantilla de plan de pruebas de software
Pmo informatica plantilla de plan de pruebas de softwareCarina Lifschitz
 
Requerimientos de Usabilidad
Requerimientos de  UsabilidadRequerimientos de  Usabilidad
Requerimientos de Usabilidadgcaicedo
 

La actualidad más candente (20)

Mapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareMapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de Software
 
Ingeniería de requisitos
Ingeniería de requisitosIngeniería de requisitos
Ingeniería de requisitos
 
Diseño caso de pruebas
Diseño caso de pruebasDiseño caso de pruebas
Diseño caso de pruebas
 
Estrategias prueba de software
Estrategias prueba de softwareEstrategias prueba de software
Estrategias prueba de software
 
Ingeniería De Requisitos
Ingeniería De RequisitosIngeniería De Requisitos
Ingeniería De Requisitos
 
Tecnicas de Pruebas
 Tecnicas de Pruebas  Tecnicas de Pruebas
Tecnicas de Pruebas
 
Pruebas del software
Pruebas del softwarePruebas del software
Pruebas del software
 
Plan de pruebas de software
Plan de pruebas de softwarePlan de pruebas de software
Plan de pruebas de software
 
Arquitectura multicapa
Arquitectura multicapaArquitectura multicapa
Arquitectura multicapa
 
Introducción a las Pruebas Software
Introducción a las Pruebas SoftwareIntroducción a las Pruebas Software
Introducción a las Pruebas Software
 
Gestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo softwareGestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo software
 
Formato ieee830(srs lleno)
Formato ieee830(srs lleno)Formato ieee830(srs lleno)
Formato ieee830(srs lleno)
 
Proceso del Software
Proceso del Software Proceso del Software
Proceso del Software
 
Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010
Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010
Tema N° 7 Atributos de Calidad del Software según Norma ISO 25010
 
Pruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacionPruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacion
 
Software caja negra y caja blanca
Software caja negra y caja blancaSoftware caja negra y caja blanca
Software caja negra y caja blanca
 
Act 4.3 pruebas de software
Act 4.3 pruebas de softwareAct 4.3 pruebas de software
Act 4.3 pruebas de software
 
Pmo informatica plantilla de plan de pruebas de software
Pmo informatica plantilla de plan de pruebas de softwarePmo informatica plantilla de plan de pruebas de software
Pmo informatica plantilla de plan de pruebas de software
 
Caracteristicas rup
Caracteristicas rupCaracteristicas rup
Caracteristicas rup
 
Requerimientos de Usabilidad
Requerimientos de  UsabilidadRequerimientos de  Usabilidad
Requerimientos de Usabilidad
 

Similar a PruebasSW

Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de softwareTensor
 
Fundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del softwareFundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del softwareWilliam Remolina
 
Pruebas software (1)
Pruebas  software (1)Pruebas  software (1)
Pruebas software (1)René Pari
 
SeccióN De TéCnicas De IngenieríA De Software(2007)
SeccióN De TéCnicas  De IngenieríA De Software(2007)SeccióN De TéCnicas  De IngenieríA De Software(2007)
SeccióN De TéCnicas De IngenieríA De Software(2007)denny osael lopez medina
 
Unidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasUnidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasSergio Sanchez
 
Capitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_softwareCapitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_softwareAndres Valencia
 
Ejemplos práctios de calidad en el software tecdencies
Ejemplos práctios de calidad en el software tecdenciesEjemplos práctios de calidad en el software tecdencies
Ejemplos práctios de calidad en el software tecdenciesMICProductivity
 
Semana xiii.i
 Semana xiii.i Semana xiii.i
Semana xiii.ielssalinas
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de softwareGomez Gomez
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de softwarepanavarrv
 
Diapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgosDiapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgosMelissa Burgos
 

Similar a PruebasSW (20)

6.redes pruebas de software
6.redes pruebas de software6.redes pruebas de software
6.redes pruebas de software
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
ejemplos.pdf
ejemplos.pdfejemplos.pdf
ejemplos.pdf
 
software testing
software testingsoftware testing
software testing
 
Capacitacitación Tester - QA 1
Capacitacitación Tester - QA 1Capacitacitación Tester - QA 1
Capacitacitación Tester - QA 1
 
Pruebas
PruebasPruebas
Pruebas
 
Fundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del softwareFundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del software
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Pruebas software (1)
Pruebas  software (1)Pruebas  software (1)
Pruebas software (1)
 
SeccióN De TéCnicas De IngenieríA De Software(2007)
SeccióN De TéCnicas  De IngenieríA De Software(2007)SeccióN De TéCnicas  De IngenieríA De Software(2007)
SeccióN De TéCnicas De IngenieríA De Software(2007)
 
Unidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasUnidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De Programas
 
Fase1
Fase1Fase1
Fase1
 
Fase1
Fase1Fase1
Fase1
 
Capitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_softwareCapitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_software
 
Ejemplos práctios de calidad en el software tecdencies
Ejemplos práctios de calidad en el software tecdenciesEjemplos práctios de calidad en el software tecdencies
Ejemplos práctios de calidad en el software tecdencies
 
Semana xiii.i
 Semana xiii.i Semana xiii.i
Semana xiii.i
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
 
Diapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgosDiapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgos
 

Más de Jose Benítez Andrades

Más de Jose Benítez Andrades (7)

7.distribucion de aplicaciones
7.distribucion de aplicaciones7.distribucion de aplicaciones
7.distribucion de aplicaciones
 
6.documentacion de aplicaciones
6.documentacion de aplicaciones6.documentacion de aplicaciones
6.documentacion de aplicaciones
 
5.confección de informes
5.confección de informes5.confección de informes
5.confección de informes
 
4.usabilidad
4.usabilidad4.usabilidad
4.usabilidad
 
3.creacion de componentes visuales
3.creacion de componentes visuales3.creacion de componentes visuales
3.creacion de componentes visuales
 
Generación de Interfaces a partir de XML
Generación de Interfaces a partir de XMLGeneración de Interfaces a partir de XML
Generación de Interfaces a partir de XML
 
Confección de interfaces de usuario con JAVA - SWING
Confección de interfaces de usuario con JAVA - SWINGConfección de interfaces de usuario con JAVA - SWING
Confección de interfaces de usuario con JAVA - SWING
 

Último

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
 
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
 
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
 
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
 
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
 
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
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
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
 
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
 
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
 
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
 
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
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 

Último (13)

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
 
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
 
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
 
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
 
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
 
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)
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
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
 
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
 
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
 
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...
 
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
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 

PruebasSW

  • 1. Desarrollo de interfaces: 8. REALIZACIÓN DE PRUEBAS Jose Alberto Benítez Andrades jose@indipro.es www.indipro.es @indiproweb @jabenitez88 Jose Alberto Benítez Andrades– jose@indipro.es - @indiproweb 1
  • 2. REALIZACIÓN DE PRUEBAS – Contenido  Objetivo, importancia y limitaciones del proceso de prueba. Estrategias.  Pruebas de integración: ascendentes y descendentes.  Pruebas de sistema: configuración, recuperación, entre otras.  Pruebas de regresión.  Pruebas funcionales.  Pruebas de capacidad y rendimiento.  Pruebas de uso de recursos.  Pruebas de seguridad.  Pruebas manuales y automáticas. Herramientas software para la realización de pruebas.  Pruebas de usuario.  Pruebas de aceptación.  Versiones alfa y beta. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 2
  • 3. REALIZACIÓN DE PRUEBAS  Cuando se desarrolla software se realizan una serie de actividades en la que hay enormes posibilidades de que aparezca el error humano.  Los errores pueden presentarse desde el primer momento.  Debido a la imposibilidad humana de trabajar y comunicarse de forma perfecta es necesario acompañar el desarrollo del SW de una actividad que garantice la calidad.  La pruebas son un elemento crítico para la garantía de la calidad del SW y representan una revisión final de las especificaciones, el diseño y de la codificación. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 3
  • 4. REALIZACIÓN DE PRUEBAS  No es raro que una organización de desarrollo de SW emplee entre el 30 y el 40 por ciento del esfuerzo total del proyecto en las pruebas.  La pruebas de SW para actividades críticas (Control de tráfico aéreo o de reactores nucleares) pueden costar de 3 a 5 veces más que el resto de los pasos de la Ing. De SW juntos.  En la fases anteriores el Ing. Intenta “construir” el SW.  Al llegar a la pruebas crea una serie de casos de prueba que intentan “demoler” el SW construido.  La pruebas son el paso de la Ing. de SW que se puede ver (psicológicamente) como destructivo en lugar de constructivo. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 4
  • 5. REALIZACIÓN DE PRUEBAS  Los Ing. de SW son por naturaleza constructivos.  Las pruebas requieren que se descarten ideas preconcebidas sobre la “corrección” del SW que de acaba de desarrollar y se supere cualquier conflicto de intereses que aparezca cuando se descubran errores.  Existe un mito que dice que si fuéramos realmente buenos programando, no habría errores que buscar. No habría errores.  Según el mito existen errores porque somos malos en lo que hacemos y debemos sentirnos culpables por ello.  Las pruebas serían un reconocimiento de nuestros fallos e implica una buena dosis de culpabilidad. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 5
  • 6. REALIZACIÓN DE PRUEBAS – Objetivos de las pruebas  La prueba es el proceso de ejecución de un programa con la intención de descubrir un error.  Un buen caso de prueba es aquel que tiene una alta probabilidad de mostrar un error no descubierto hasta entonces.  Una prueba tiene éxito si descubre un error no detectado hasta entonces.  Hay que quitarse la idea, que normalmente tenemos, de que una prueba tiene éxito si no descubre errores.  El objetivo es diseñar pruebas que sistemáticamente saquen a la luz diferentes clases de errores, haciéndolo con la menor cantidad de tiempo y esfuerzo. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 6
  • 7. REALIZACIÓN DE PRUEBAS – Objetivos de las pruebas  Como ventaja secundaria, la prueba demuestra hasta qué punto la funciones del SW trabajan de acuerdo con las especificaciones.  Los datos recogidos indican en cierta medida la fiabilidad y calidad del SW como un todo.  La prueba no puede asegurar la ausencia de defectos; sólo puede demostrar que existen defectos en el SW. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 7
  • 8. REALIZACIÓN DE PRUEBAS – Principios  A todas las pruebas se les debería poder hacer un seguimiento hasta los requisitos del cliente  Las pruebas deberían planificarse mucho antes de que empiecen.  El principio de Pareto es aplicable a las pruebas del SW. (80% de los errores en 20% de los módulos)  Las pruebas deberían empezar por “lo pequeño” y progresar hacia “lo grande”.  No son posibles las pruebas exhaustivas.  Para ser más eficaces la pruebas deberían ser realizadas por un equipo independiente.  Es la facilidad con la que se puede probar un SW. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 8
  • 9. Caraterísticas que llevan a un SW. Fácil de probar.  OPERATIVIDAD. Cuanto mejor funcione, más eficientemente se puede probar.  Pocos errores  Ningún error bloquea las pruebas.  OBSERVABILIDAD: Lo que ves es lo que pruebas.  El código fuente es accesible.  Se informa automáticamente de los errores internos.  Un resultado incorrecto se identifica fácilmente.  Los errores internos se detectan automáticamente a través de mecanismos de autocomprobación. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 9
  • 10. Caraterísticas que llevan a un SW. Fácil de probar.  CONTROLABILIDAD. Cuanto mejor podamos controlar el SW , más se puede automatizar y optimizar.  El Ing. De pruebas puede controlar directamente los estados y variables del SW y HW.  Las pruebas pueden especificarse, automatizarse y reproducirse convenientemente.  CAPACIDAD DE DESCOMPOSICIÓN. Controlando el ámbito de las pruebas, podemos aislar más rápidamente los problemas y llevar a cabo mejores pruebas.  SW. Construido en módulos.  Los módulos se pueden probar independientemente. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 10
  • 11. Caraterísticas que llevan a un SW. Fácil de probar.  SIMPLICIDAD: Cuanto menos haya que probar, más rápidamente podremos probarlo.  Simplicidad funcional (Características mínimas para cumplir los requisitos)  Simplicidad Estructural (Arquitectura modularizada)  Simplicidad del código.  ESTABILIDAD. Cuanto menos cambios, menos interrupciones a las pruebas.  Cambios infrecuentes.  Cambios controlados.  El SW se recupera bien de lo fallos. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 11
  • 12. Caraterísticas que llevan a un SW. Fácil de probar.  FACULIDAD DE COMPRENSIÓN: Cuanto más información tengamos, más inteligentes serán las pruebas.  Entender perfectamente el diseño.  Se ha entendido la dependencia entre os componentes.  Se conocen los cambios en el diseño.  La documentación es instantáneamente accesible, está bien organizada, es específica, detallada y exacta. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 12
  • 13. ATRIBUTOS DE UNA BUENA PRUEBA  Tiene una alta probabilidad de encontrar un error.  No debe ser redundante.  Debería ser “la mejor de la cosecha”  No debe ser ni demasiado sencilla ni demasiado compleja. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 13
  • 14. INTRODUCCIÓN  Pruebas: factor crítico para determinar la calidad del software  La Prueba de Software puede definirse como una actividad en la cual un sistema o uno de sus componentes se ejecuta en circunstancias previamente especificadas, los resultados se observan y registran, y se realiza una evaluación de algún aspecto: corrección, robustez, eficiencia, etc.  El objetivo de una prueba es descubrir algún error.  Caso de prueba (test case): «un conjunto de entradas, condiciones de ejecución y resultados esperados desarrollados para un objetivo particular»  Un caso de prueba es bueno cuando su ejecución conlleva una probabilidad elevada de encontrar un error.  El éxito de la prueba se mide en función de la capacidad de detectar un error que estaba oculto. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 14
  • 15. DEFINICIONES  Verificación: ¿estamos construyendo correctamente el producto? ¿el software se ha construido de acuerdo a las especificaciones?  Validación: ¿estamos construyendo el producto correcto? ¿el software hace lo que el usuario realmente requiere?  Defecto (bug): una anomalía en el software como, por ejemplo, un proceso, una definición de datos o un paso de procesamiento incorrectos en un programa  Fallo (failure): cuando el sistema, o alguno de sus componentes, es incapaz de realizar las funciones requeridas dentro de los rendimientos especificados  Error (error): acción humana que conduce a un resultado incorrecto (error de programación) Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 15
  • 16. RELACIÓN ENTRE ERROR, DEFECTO Y FALLO Error Sistema de gestión de aeropuerto Equivocación del programador 2+2=5 Accidente (seguridad) Defecto (calidad) S.Aproximación ¡Xyx// ??? Fallo (fiabilidad) Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 16
  • 17. Recomendaciones para la prueba  Cada caso de prueba debe definir el resultado de salida esperado.  El programador debe evitar probar sus propios programas, ya que desea (consciente o inconscientemente) demostrar que funcionan sin problemas.  Se debe inspeccionar a conciencia el resultado de cada prueba, y así, poder descubrir posibles síntomas de defectos.  Al generar casos de prueba, se deben incluir tanto datos de entrada válidos y esperados como no válidos e inesperados. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 17
  • 18. Recomendaciones para la prueba  Las pruebas deben centrarse en dos objetivos (es habitual olvidar el segundo):  Probar que el programa hace lo que debe hacer.  Probar que el programa no hace lo que no debe hacer.  Todos los casos de prueba deben documentarse y diseñarse con cuidado.  No deben hacerse planes de prueba suponiendo que, prácticamente, no hay defectos en los programas y, por lo tanto, dedicando pocos recursos a las pruebas.  La experiencia indica que donde hay un defecto pueden aparecer otros. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 18
  • 19. El proceso de prueba Requisitos VALIDACIÓN Pruebas de de usuario aceptación VERIFICACIÓN Especificac. Pruebas de de requisitos sistema Diseño Pruebas de modular integración Especific. y Pruebas de lógica de unidad módulo Código Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 19
  • 20. El proceso de prueba  Pruebas de unidad: se prueba cada módulo individualmente.  Prueba funcional o de integración: el software totalmente ensamblado se prueba como un conjunto, para comprobar si cumple o no tanto los requisitos funcionales como los requisitos de rendimiento, seguridad, etc.  Prueba del sistema: el software ya validado se integra con el resto del sistema (por ejemplo, elementos mecánicos, interfaces electrónicas, etc.) para probar su funcionamiento conjunto .  Prueba de aceptación: el producto final se comprueba por el usuario final en su propio entorno de explotación para determinar si lo acepta como está o no. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 20
  • 21. Flujo de Información de la Prueba Informe de la prueba Casos de prueba Datos de prueba Resultado de la prueba Ejecutar el programa Comparar los Diseñar los Preparar los resultados con los con los datos casos de prueba datos de prueba casos de prueba de prueba Especificación del programa Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 21
  • 22. Proceso de depuración  En cuanto a la localización del error en el código fuente:  Analizar la información y pensar.  Al llegar a un punto muerto, pasar a otra cosa.  Al llegar a un punto muerto, describir el problema a otra persona.  Usar herramientas de depuración sólo como recurso secundario.  No experimentar cambiando el programa.  Se deben atacar los errores individualmente.  Se debe fijar la atención también en los datos. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 22
  • 23. Proceso de depuración  En cuanto a la corrección del error:  Donde hay un defecto, suele haber más.  Debe fijarse el defecto, no sus síntomas.  La probabilidad de corregir perfectamente un defecto no es del 100%.  Cuidado con crear nuevos defectos.  La corrección debe situarnos temporalmente en la fase de diseño. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 23
  • 24. Diseño de casos de Prueba  El diseño de casos de prueba para la verificación del software puede significar un esfuerzo considerable (cerca del 40% del tiempo total de desarrollo)  Existen fundamentalmente tres enfoques:  Prueba de caja blanca  Prueba de caja negra  Pruebas aleatorias  Combinar ambos enfoques permite lograr mayor fiabilidad. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 24
  • 25. Diseño de casos de Prueba Caja blanca Entrada Salida Caja negra Entrada Salida Funciones Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 25
  • 26. Diseño de casos de Prueba  La prueba de caja blanca o prueba estructural se basa en el estudio minucioso de toda la operatividad de una parte del sistema, considerando los detalles procedimentales.  Se plantean distintos caminos de ejecución alternativos y se llevan a cabo para observar los resultados y contrastarlos con lo esperado.  En principio se podría pensar que es viable la verificación mediante la prueba de la caja blanca de la totalidad de caminos de un procedimiento.  Esto es prácticamente imposible en la mayoría de los casos reales dada la exponencialidad en el número de combinaciones posibles. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 26
  • 27. Diseño de casos de Prueba  La prueba de caja negra o prueba funcional principalmente analiza la compatibilidad en cuanto a las interfaces de cada uno de los componentes software entre sí.  La prueba aleatoria consiste en utilizar modelos que representen las posibles entradas del programa para crear a partir de ellos los casos de prueba.  Modelos estadísticos que simulan las secuencias y frecuencias habituales de los datos de entrada al programa.  Se fundamenta en que la probabilidad de descubrir un error es prácticamente la misma si se hacen una serie de pruebas aleatoriamente elegidas, que si se hacen siguiendo las instrucciones dictadas por criterios de cobertura.  Sin embargo, pueden permanecer ocultos errores que solamente se descubren ante entradas muy concretas.  Este tipo de pruebas puede ser suficiente en programas poco críticos Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 27
  • 28. Pruebas de caja blanca  La prueba de la caja blanca usa la estructura de control del diseño procedural para derivar los casos de prueba.  Idea: no es posible probar todos los caminos de ejecución distintos, pero sí confeccionar casos de prueba que garanticen que se verifican todos los caminos de ejecución llamados independientes.  Verificaciones para cada camino independiente:  Probar sus dos facetas desde el punto de vista lógico, es decir, verdadera y falsa.  Ejecutar todos los bucles en sus límites operacionales  Ejercitar las estructuras internas de datos. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 28
  • 29. Pruebas de caja blanca  Consideraciones:  Los errores lógicos y las suposiciones incorrectas son inversamente proporcionales a la probabilidad de que se ejecute un camino del programa.  A menudo creemos que un camino lógico tiene pocas posibilidades de ejecutarse cuando, de hecho, se puede ejecutar de forma regular.  Los errores tipográficos son aleatorios.  Tal como apuntó Beizer, “los errores se esconden en los rincones y se aglomeran en los límites”. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 29
  • 30. Tipos de cobertura  Cobertura de sentencias. cada sentencia o instrucción del programa se ejecute al menos una vez.  Cobertura de decisiones. cada decisión tenga, por lo menos una vez, un resultado verdadero y, al menos una vez, uno falso.  Cobertura de condiciones. cada condición de cada decisión adopte el valor verdadero al menos una vez y el falso al menos una vez  Criterio de decisión/condición. Consiste en exigir el criterio de cobertura de condiciones obligando a que se cumpla también el criterio de decisiones  Criterio de condición múltiple. Debe garantizar todas las combinaciones posibles de las condiciones dentro de cada decisión. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 30
  • 31. Tipos de cobertura EJEMPLO 1: EJEMPLO 2: si (a>b) si (a>b) entonces a=a-b entonces a=a-b si no b=b-a fin_si fin_si EJEMPLO 3: EJEMPLO 4: i=1 si (a>b) y (b es mientras (v[i]<>b) primo) y(i<>5) entonces a=a-b hacer fin_si i=i+1; fin_mientras Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 31
  • 32. Prueba del camino básico  La prueba del camino básico es una técnica de prueba de la caja blanca propuesta por Tom McCabe.  La idea es derivar casos de prueba a partir de un conjunto dado de caminos independientes por los cuales puede circular el flujo de control.  Camino independiente es aquel que introduce por lo menos una sentencia de procesamiento (o condición) que no estaba considerada en el conjunto de caminos independientes calculados hasta ese momento.  Para obtener el conjunto un conjunto de caminos independientes se construirá el Grafo de Flujo asociado y se calculará su Complejidad Ciclomática. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 32
  • 33. Prueba del camino básico: Grafos de Flujo  El flujo de control de un programa puede representarse por un grafo de flujo.  Cada nodo del grafo corresponde a una o más sentencias de código fuente  Cada nodo que representa una condición se denomina nodo predicado.  Cualquier representación del diseño procedural se puede traducir a un grafo de flujo.  Un camino independiente en el grafo es el que incluye alguna arista nueva, es decir, que no estaba presente en los caminos definidos previamente. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 33
  • 34. Prueba del camino básico: Grafos de Flujo Secuencia Fin SI no opción1 no opción2 no opciónN ... En caso de ... Si no opción2 opciónN Entonces Mientras opción1 SI FinCaso Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 34
  • 35. Prueba del camino básico: Grafos de Flujo  Si se diseñan casos de prueba que cubran los caminos básicos, se garantiza la ejecución de cada sentencia al menos una vez y la prueba de cada condición en sus dos posibilidades lógicas (verdadera y falsa).  El conjunto básico para un grafo dado puede no ser único, depende del orden en que se van definiendo los caminos.  Cuando aparecen condiciones lógicas compuestas la confección del grafo es más compleja. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 35
  • 36. Prueba del camino básico: Grafos de Flujo Nodos Predicado  Ejemplo: a Falso Cierto SI a O b b x Entonces Falso Cierto hacer x Si No y x hacer y FinSI Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 36
  • 37. Prueba del camino básico: Complejidad Ciclomática  Complejidad ciclomática de un grafo de flujo, V(G), indica el número máximo de caminos independientes en el grafo.  Puede calcularse de tres formas alternativas:  El número de regiones en que el grafo de flujo divide el plano.  V(G) = A - N + 2, donde A es el número de aristas y N es el número de nodos.  V(G) = P + 1, donde P es el número de nodos predicado. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 37
  • 38. Prueba del camino básico: Complejidad Ciclomática 1 2  V(G) = 4 R3  El grafo de la figura delimita cuatro 4 3 regiones. R2 6 R1 5  11 aristas - 9 nodos + 2 = 4 7  3 nodos predicado + 1 = 4 8 R4 9 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 38
  • 39. Prueba del camino básico: Complejidad Ciclomática  El conjunto de caminos independientes del grafo 1 será 4.  Camino 1: 1-9  Camino 2: 1-2-4-5-7-8-1-9 2  Camino 3: 1-2-4-6-7-8-1-9  Camino 4: 1-2-3-8-1-9 4 3  Cualquier otro camino no será un camino independiente, p.e., 6 5 1-2-4-5-7-8-1-2-3-8-1-2-4-6-7-8-1-9 ya que es simplemente una combinación de 7 caminos ya especificados 8  Los cuatro caminos anteriores constituyen un conjunto básico para el grafo 9 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 39
  • 40. Prueba del camino básico: Derivación de casos de prueba  El método de prueba del camino básico se puede aplicar a un diseño procedural detallado (pseudocódigo) o al código fuente de la aplicación.  Pasos para diseñar los casos de prueba: 1. Se etiqueta el código fuente, o el pseudocódigo, enumerando cada instrucción y cada condición simple. 2. A partir del código fuente etiquetado, se dibuja el grafo de flujo asociado. 3. Se calcula la complejidad ciclomática del grafo. 4. Se determina un conjunto básico de caminos independientes. 5. Se preparan los casos de prueba que obliguen a la ejecución de cada camino del conjunto básico. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 40
  • 41. Prueba del camino básico: Derivación de casos de prueba 4 Casos de Prueba Un caso por cada camino Valores concretos para los datos Código Fuente de entrada y de salida (Pseudocódigo) Etiquetado 3 1 Caminos Independientes 1 (<= CC) Cada nuevo camino incluye 2 una arista no contemplada en los anteriores caminos 3 4 5 4 2 Complejidad Ciclomática 6 A-N+2 Grafo de Flujo N.Predicado + 1 Regiones Internas + 1 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 41
  • 42. Prueba del camino básico: Derivación de casos de prueba void calcula_e_imprime_media(float x, float y) { float resultado; 1 resultado = 0.0; 3 if (x < 0 || y < 0) 2 printf(“x e y deben ser positivos”); 4 else { resultado = (x + y)/2; 5 printf(“La media es %fn”, resultado); } 6 } Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 42
  • 43. Prueba del camino básico: Ejemplo 1 V(G) = 3 regiones. Por lo tanto, hay que X<0 2 determinar tres caminos independientes. Falso Cierto - Camino 1: 1-2-3-5-6 - Camino 2: 1-2-4-6 Y<0 4 3 - Camino 3: 1-2-3-4-6 Cierto Falso Casos de prueba para cada camino: Camino 1: x=3, y= 5, rdo=4 5 4 Camino 2: x=-1, y=3, rdo=0, error Camino 3: x=4, y=-3, rdo=0, error 6 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 43
  • 44. Pruebas de estructura de control  La técnica de prueba del camino básico del punto anterior es una de las muchas existentes para la pruebas de la estructura de control.  Aunque sea alta la efectividad de la prueba del camino básico, no nos asegura completamente la corrección del software.  Veremos a continuación otras variantes de la prueba de la estructura de control. Estas variantes amplían el abanico de pruebas mejorando la fiabilidad de las pruebas de caja blanca. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 44
  • 45. Pruebas de estructura de control - Prueba de Condiciones  La prueba de condiciones es un método de diseño de casos de prueba que ejercita las condiciones lógicas contenidas en el módulo de un programa. Los tipos de errores que pueden aparecer en una condición son los siguientes:  Existe un error en un operador lógico (que sobra, falta o no es el que corresponde).  Existe un error en un paréntesis lógico (cambiando el significado de los operadores involucrados).  Existe un error en un operador relacional (operadores de comparación de igualdad, menor o igual, etc.).  Existe un error en una expresión aritmética. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 45
  • 46. Pruebas de estructura de control - Prueba de Bucles Bucles anidados Bucles Bucles concatenados Bucles no simples estructurados Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 46
  • 47. Pruebas de estructura de control - Prueba de Condiciones  Pruebas para Bucles simples. (n es el número máximo de iteraciones permitidos por el bucle)  Pasar por alto totalmente el bucle  Pasar una sola vez por el bucle  Pasar dos veces por el bucle  Hacer m pasos por el bucle con m < n  Hacer n-1, n y n + 1 pasos por el bucle Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 47
  • 48. Pruebas de estructura de control - Prueba de Condiciones  Pruebas para Bucles anidados  Comenzar en el bucle más interior estableciendo los demás bucles en sus valores mínimos.  Realizar las pruebas de bucle simple para el más interior manteniendo los demás en sus valores mínimos.  Avanzar hacia fuera confeccionando pruebas para el siguiente bucle manteniendo todos los externos en los valores mínimos y los demás bucles anidados en sus valores típicos.  Continuar el proceso hasta haber comprobado todos los bucles.  Pruebas para Bucles concatenados  Siempre que los bucles concatenados sean independientes se puede aplicar lo relativo a bucles simples/anidados. En caso de ser dependientes se evaluarán como bucles anidados. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 48
  • 49. Pruebas de caja negra  Los métodos de la caja negra se centran sobre los requisitos funcionales del software.  La prueba de la caja negra intenta encontrar errores de los siguientes tipos:  Funciones incorrectas o inexistentes.  Errores relativos a las interfaces.  Errores en estructuras de datos o en accesos a bases de datos externas.  Errores debidos al rendimiento.  Errores de inicialización o terminación. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 49
  • 50. Partición equivalente  La partición equivalente es un método que divide el campo de entrada de un programa en clases de datos a partir de los cuales se pueden derivar casos de prueba.  La partición equivalente define casos de prueba para descubrir clases de errores.  Se define una condición de entrada para cada dato de entrada (valor numérico específico, rango de valores, conjunto de valores relacionados o condición lógica). Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 50
  • 51. Partición equivalente  Las clases de equivalencia se pueden definir de acuerdo a las siguientes directrices:  Si una condición de entrada especifica un rango, se define una clase de equivalencia válida y dos no válidas.  Si la condición de entrada es un valor específico, se define una clase de equivalencia válida y dos no válidas.  Si la condición de entrada especifica un miembro de un conjunto, se define una clase de equivalencia válida y otra no válida.  Si la condición de entrada es lógica, se define una clase válida y otra no válida. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 51
  • 52. Ejemplo Partición equivalente  Datos de entrada a una aplicación bancaria  Código de área: en blanco o número de 3 dígitos.  Prefijo: número de 3 dígitos que no comience por 0 o 1.  Sufijo: número de 4 dígitos.  Contraseña: en blanco o valor alfanumérico de 6 caracteres.  Ordenes: “comprobar”, “depositar”, “pagar factura”, etc. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 52
  • 53. Ejemplo Partición equivalente  Condiciones de entrada  Código de área: número de 3 dígitos o no es número  lógica: el código puede ser un número o no.  valor: número de 3 dígitos.  Prefijo: número de 3 dígitos que no comience por 0 o 1.  rango: valores entre 200 y 999.  Sufijo: número de 4 dígitos.  valor: número de 4 dígitos.  Contraseña: en blanco o valor alfanumérico de 6 caracteres.  lógica: la contraseña puede estar presente o no.  valor: cadena de 6 caracteres.  Ordenes: “comprobar”, “depositar”, “pagar factura”, etc.  conjunto: el de todas las ordenes posibles. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 53
  • 54. Esquema prueba de la partición equivalente 4 Casos de Prueba Válidos: que cubran clases válidas Especificar los 1 datos de entrada: Casos de Prueba No Válidos: que cubran una clase no válida y el resto válidas dato: tipo o descripción DATO CLASES CLASES Determinar las clases equivalencia 3 ENTRADA VÁLIDAS NO VÁLIDAS 2 a (1) (2) Rango: una válida y dos no válidas. Valor específico: una válida y dos no válidas. b (3) (4) (5) Conjunto: - Si cada elmenento se trata igual, ... ... ... una válida y otra no válida. - Si cada elemento se trata diferente, TABLA de CLASES de EQUIVALENCIA una válida por cada elemento y otra no válida ENUMERADAS Lógica: una válida y otra no válida. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 54
  • 55. Ejemplo Partición equivalente  Aplicación bancaria. Datos de entrada:  Código de área: número de 3 dígitos que no empieza por 0 ni por 1  Nombre de identificación de operación: 6 caracteres  Órdenes posibles: “cheque”, “depósito”, “pago factura”, “retirada de fondos” Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 55
  • 56. Ejemplo Partición Equivalente Determinar las clases de equivalencia Código de área: Lógica: 1 clase válida: número Rango: 1 clase válida: 200 < código < 999 2 clases no válidas: código < 200; código > 999 1 clase no válida: no es número Nombre de identificación: Valor específico: 1 clase válida: 6 caracteres 2 clases no válidas: más de 6 caracteres; menos de 6 caracteres Órdenes posibles: Conjunto de valores: 1 clase válida: 4 órdenes válidas 1 clase no válida: órden no válida Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 56
  • 57. Ejemplo Partición Equivalente : Tabla de clases de equivalencia Datos de Entrada Clases Válidas Clases No Válidas Código de área (1) 200 <= código <= 999 (2) código < 200 (3) código > 999 (4) no es númerico Identificación (5) 6 caracteres (6) menos de 6 caracteres (7) más de 6 caracteres Orden (8) “cheque” (12) ninguna orden válida (9) “depósito” (10) “pago factura” (11) “retirada de fondos” Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 57
  • 58. Ejemplo Partición Equivalente : Casos de Prueba Válidos Código Identificación Orden Clases Cubiertas 300 Nómina “Depósito” (1)C (5) C (9) C 400 Viajes “Cheque” (1) (5) (8)C 500 Coches “Pago-factura” (1) (5) (10) C 600 Comida “Retirada-fondos” (1) (5) (11) C Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 58
  • 59. Ejemplo Partición Equivalente: Casos de Prueba NO Válidos Código Identificación Orden Clases Cubiertas 180 Viajes “Pago-factura” (2) C (5) (10) 1032 Nómina “Depósito” (3) C (5) (9) XY Compra “Retirada-fondos” (4) C (5) (11) 350 A “Depósito” (1) (6) C (9) 450 Regalos “Cheque” (1) (7) C (8) 550 Casa &%4 (1) (5) (12) C Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 59
  • 60. Análisis de valores límite  La técnica de Análisis de Valores Límites selecciona casos de prueba que ejerciten los valores límite dada la tendencia de la aglomeración de errores en los extremos.  Complementa la de la partición equivalente. En lugar de realizar la prueba con cualquier elemento de la partición equivalente, se escogen los valores en los bordes de la clase.  Se derivan tanto casos de prueba a partir de las condiciones de entrada como con las de salida. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 60
  • 61. Análisis de valores límite  Directrices:  Si una condición de entrada especifica un rango delimitado por los valores a y b, se deben diseñar casos de prueba para los valores a y b y para los valores justo por debajo y justo por encima de ambos.  Si la condición de entrada especifica un número de valores, se deben desarrollar casos de prueba que ejerciten los valores máximo y mínimo además de los valores justo encima y debajo de aquéllos. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 61
  • 62. Análisis de valores límite  ... Directrices:  Aplicar las directrices anteriores a las condiciones de salida. Componer casos de prueba que produzcan salidas en sus valores máximo y mínimo.  Si las estructuras de datos definidas internamente tienen límites prefijados (p.e., un array de 10 entradas), se debe asegurar diseñar un caso de prueba que ejercite la estructura de datos en sus límites. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 62
  • 63. Ejemplo Camino Básico: Código Fuente int contar_letra(char cadena[10], char letra) { int contador, n, lon; n=0; contador=0; lon = strlen (cadena); if (lon > 0) { do { if (cadena[contador] == letra) n++; contador++; lon--; } while (lon > 0); } return n; } Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 63
  • 64. Ejemplo Camino Básico: Código Fuente Etiquetado int contar_letra(char cadena[10], char letra) { int contador, n, lon; 1 n=0; contador=0; lon = strlen (cadena); if (lon > 0) { 2 do { if (cadena[contador] == letra) 3 n++; 4 contador++; 5 lon--; 6 } while (lon > 0); } return n; 7 } Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 64
  • 65. Ejemplo Camino Básico: Grafo de Flujo int contar_letra(char cadena[10], char letra) { 1 int contador, n, lon; 1 n=0; contador=0; lon = strlen (cadena); 2 V if (lon > 0) { 2 F do { 3 if (cadena[contador] == letra) 3 V n++; 4 F 4 contador++; 5 lon--; 6 5 } while (lon > 0); } V return n; 7 6 } F 7 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 65
  • 66. Ejemplo Camino Básico: Caminos Independientes 1  V(G) = 4; Nodos=7; Aristas=9; Nodos Predicado=3; 2 V Regiones = 4 F 3 V  Conjunto de caminos independientes: 1. 1-2-7 F 4 2. 1-2-3-4-5-6-7 3. 1-2-3-5-6-7 5 4. 1-2-3-4-5-6-3-5-6-7 (No es el único) V 6 F 7 Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 66
  • 67. Ejemplo Camino Básico: Casos de Prueba 1. 1-2-7 cadena = ”” letra = ‘a’ n = 0; 2. 1-2-3-4-5-6-7 cadena = “a” letra = ‘a’ n = 1; 3. 1-2-3-5-6-7 cadena = “b” letra = ‘a’ n = 0; 4. 1-2-3-4-5-6-3-5-6-7 cadena = “ab” letra = ‘a’ n = 1; Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 67
  • 68. Pruebas de integración  Se realiza sobre un conjunto de componentes o módulos para formar un sistema o subsistema mayor.  Mientras las pruebas unitarias las suele llevar a cabo el propio programador, las pruebas de integración suelen realizarse por un equipo independiente.  Existen dos estrategias para realizar las pruebas de integración  Integración descendente (top-down): se comienza con los niveles superiores del sistema y se va integrando hacia niveles inferiores, sustituyendo módulos no probados por módulos ficticios cuando fuera necesario.  Integración ascendente (bottom-up): se integran componentes individuales desde los niveles inferiores, y se va ascendiendo hasta completar el sistema. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 68
  • 69. Pruebas de integración ¿ Cómo abordar la prueba de los módulos de la figura ? A B C D E F G Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 69
  • 70. Pruebas de integración: estrategia ascendente 1ª fase fase Impulsor de E Impulsor de F Impulsor de G Impulsor de D E F G D 2ª fase 3ª fase fase fase Impulsor de E B Impulsor de F C A B C D B C E F G E F G Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 70
  • 71. Pruebas de integración: estrategia ascendente  Ventajas:  Se detectan antes los fallos que se produzcan en la parte inferior del sistema.  La definición de los casos de prueba es más sencilla, puesto que los módulos inferiores desempeñan funciones más específicas.  Es más fácil observar los resultados de la prueba, ya que es en los módulos inferiores donde se elaboran los datos (los módulos superiores suelen ser coordinadores).  Desventajas:  Se requieren módulos impulsores que deben codificarse.  El programa o sistema completo no se prueba hasta que se introduce el último módulo. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 71
  • 72. Pruebas de integración: estrategia descendente  El módulo raíz o principal se prueba primero. Todos sus subordinados se sustituyen por módulos ficticios.  Una vez probado el módulo raíz (estando ya libre de defectos) se sustituye uno de sus subordinados ficticios por el módulo implementado correspondiente.  Cada vez que se incorpora un módulo se efectúan las pruebas correspondientes.  Al terminar cada prueba, se sustituye un módulo ficticio por su correspondiente real.  Conviene repetir algunos casos de prueba de ejecuciones anteriores para asegurarse de que no se ha introducido ningún error nuevo. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 72
  • 73. Pruebas de integración: estrategia descendente 1 ª et a p a A B C D PRIMERO EN 2 ª et a p a A PROFUNDIDAD B C D E A 3 ª et a p a B C D E Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 73
  • 74. Pruebas de integración: estrategia descendente A B C D PRIMERO A EN ANCHURA B C D E F G A B C D E F G Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 74
  • 75. Pruebas de integración: estrategia descendente  Ventajas:  Los defectos en los niveles superiores del sistema se detectan antes.  Una vez incorporadas las funciones que manejan la entrada/salida, es fácil manejar los casos de prueba.  Permite ver antes una estructura previa del programa, lo que facilita hacer demostraciones.  Desventajas:  Se requieren módulos ficticios que suelen ser complejos de crear.  Antes de incorporar la entrada/salida es complicado manejar los casos de prueba.  A veces no se pueden crear casos de prueba, porque los detalles de operación vienen proporcionados por los módulos inferiores.  Es más difícil observar la salida, porque los resultados surgen de los módulos inferiores.  Pueden inducir a diferir la terminación de la prueba de ciertos módulos, ya que puede parecer que el programa funciona. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 75
  • 76. Otros tipos de prueba  Recorridos (“walkthroughs”).  Pruebas de robustez (“robustness testing”)  Pruebas de aguante (“stress”)  Prestaciones (“performance testing”)  Conformidad u Homologación (“conformance testing”)  Interoperabilidad (“interoperability tesing”)  Regresión (“regression testing”)  Prueba de comparación Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 76
  • 77. Herramientas automáticas de prueba  Analizadores estáticos. Estos sistemas de análisis de programas soportan pruebas de las sentencias que consideran más débiles dentro de un programa.  Auditores de código. Son filtros con el propósito de verificar que el código fuente cumple determinados criterios de calidad (dependerá fuertemente del lenguaje en cuestión).  Generadores de archivos de prueba. Estos programas confeccionan automáticamente ficheros con datos que servirán de entrada a las aplicaciones.  Generadores de datos de prueba. Confeccionan datos de entrada determinados que conlleven un comportamiento concreto del software.  Controladores de prueba. Confeccionan y alimentan los datos de entrada y simulan el comportamiento de otros módulos para restringir el alcance de la prueba. Jose Alberto Benítez Andrades– jose@indipro.es - @jabenitez88 77