jueves, 28 de marzo de 2013

Pruebas de estructura/arquitectura de software (Pruebas estructurales) (K2 - entender, explicar , razonar)


Objetivos:

  1. Comparar cuatro tipos de pruebas de software (funcional, no funcional, estructural y asociado al cambio) (K2).
  2. Reconocer que las pruebas funcionales y estructurales se llevan a cabo en cualquier nivel de prueba (K1).
  3. Identificar y describir los tipos de pruebas no funcionales en base a requisitos no funcionales (K2).
  4. Identificar y describir los tipos de pruebas en base al análisis de la estructura o arquitectura o arquitectura de un sistema de software (K2). 
  5. Describir el objetivo de las pruebas de confirmación y regresión (K2).
Términos usados en este artículo: PRUEBAS DE CAJA NEGRA, COBERTURA DE CÓDIGO, PRUEBAS FUNCIONALES, PRUEBAS DE INTEROPERABILIDAD, PRUEBAS DE CARGA, PRUEBAS DE MANTENIBILIDAD, PRUEBAS DE FIABILIDAD, PRUEBAS DE SEGURIDAD, PRUEBAS DE ESTRÉS, PRUEBAS ESTRUCTURALES, PRUEBAS DE USABILIDAD, PRUEBAS DE CAJA BLANCA.

Antecedentes.

Las pruebas estructurales son una aproximación al diseño de casos de prueba en donde las pruebas se derivan a partir del conocimiento de la estructura e implementación del software.

Esta aproximación se denomina a veces pruebas de «caja blanca», de «caja de cristal» o de «caja transparente» para distinguirlas de las pruebas de caja negra.



La comprensión del algoritmo utilizado en un componente puede ayudar a identificar particiones adicionales y casos de prueba. Para ilustrar esto, se ha implementado la especificación de la rutina de búsqueda como una rutina de búsqueda binaria (ver figura). Por supuesto, ésta tiene precondiciones más estrictas. La secuencia se implementa como un vector, este vector debe estar ordenado y el valor del límite inferior del vector debe ser menor que el valor del límite superior.


Examinando el código de la rutina de búsqueda, puede verse que la búsqueda binaria implica dividir el espacio de búsqueda en tres partes. Cada una de estas partes constituye una partición de equivalencia (ver figura). A continuación, se diseñan los casos de prueba en los que el elemento buscado se sitúa en los límites de cada una de estas particiones.



Esto da lugar a un conjunto de casos de prueba revisados para la rutina de búsqueda, tal y como se muestra en la última figura. Observe que se ha modificado el vector de entrada para que esté ordenado de forma ascendente y se han añadido pruebas adicionales en las que el elemento a buscar es adyacente a la posición central del vector.


Las pruebas estructurales (caja blanca) pueden realizarse en todos los niveles de prueba. Las técnicas estructurales son las más idóneas, después de las técnicas basadas en la especificación, para ayudar a medir las exhaustividad de las pruebas mediante una evaluación de la cobertura de un tipo de estructura.

La cobertura es la medida en que un juego de pruebas ha probado una estructura expresada como porcentaje de los elemento cubiertos. Si la cobertura no es del 100%, entonces podrán diseñarse más pruebas para probar los elementos que faltan para aumentar la cobertura. Las técnicas de cobertura se abordarán en los siguientes capítulos.

En todos los niveles de prueba, pero especialmente en las pruebas de componente y en las pruebas de integración de componentes, puede recurrirse a herramientas para medir la cobertura de código de los elementos, tales como sentencias o decisiones. Las pruebas estructurales pueden basarse en la arquitectura del sistema, como por ejemplo una jerarquía de llamadas.

Los enfoques de las pruebas estructurales también pueden aplicarse a nivel de sistema, integración de sistemas o pruebas de aceptación.

Resumiendo:

Objetivo:  Cobertura.
  •  Análisis de la estructura de un objeto de prueba (enfoque: caja blanca).
  • La finalidad de las pruebas es medir el grado en el cual la estructura del objeto de prueba ha sido cubierta por los casos de prueba.
Ámbito de aplicación:
  • Las pruebas estructurales son posibles en todos los niveles de pruebas, la cobertura del código se realiza de forma conjunta a las pruebas de componente y de integración mediante el uso de herramientas.
  • El diseño de pruebas estructurales se finaliza tras haber sido diseñadas las pruebas funcionales, con el propósito de obtener un alto grado de cobertura.
Ejecución:
  • Se probará la estructura interna de un objeto de prueba (por ejemplo el flujo de control en el interior de un componente, el flujo a través de la estructura de un menú).
  • Su objetivo es: todos los elementos estructurales identificados deberán estar cubiertos por casos de prueba.
Pregunta de examen:

12 Given the following code, which is true about the minimum number of test cases
required for full statement and branch coverage:
Read P
Read Q
IF P+Q > 100 THEN
Print “Large”
ENDIF
If P > 50 THEN
Print “P Large”
ENDIF
a) 1 test for statement coverage, 3 for branch coverage
b) 1 test for statement coverage, 2 for branch coverage-->OK
c) 1 test for statement coverage, 1 for branch coverage
d) 2 tests for statement coverage, 3 for branch coverage
e) 2 tests for statement coverage, 2 for branch coverage


12 Dado el siguiente código, que es verdad sobre el número mínimo de casos de prueba
necesaria para la plena afirmación y la cobertura de la rama :

Read P
Read Q
IF P+Q > 100 THEN
Print “Large”
ENDIF
If P > 50 THEN
Print “P Large”
ENDIF


a) Prueba 1 para la cobertura de declaración, 3 para la cobertura de la rama
b) 1 prueba para la cobertura de sentencias , 2 para la cobertura de rama--->OK
c ) 1 prueba para la cobertura de declaración, 1 para la cobertura de rama
d ) 2 pruebas para la cobertura de declaración , 3 para la cobertura de la rama

e) 2 pruebas para la cobertura de declaración, 2 para la cobertura de rama



No hay comentarios:

Publicar un comentario