martes, 2 de abril de 2013

Técnicas estáticas y el proceso de pruebas (K2 - entender, explicar , razonar)

Objetivos:
  1. Reconocer los productos de trabajo de software que pueden estudiarse en base a las distintas técnicas (K1).
  2. Describir la importancia y el valor de emplear técnicas estáticas para evaluar los productos de trabajo de software (K2).
  3. Explicar la diferencia entre técnica estáticas y técnicas dinámicas, teniendo en cuenta los objetivos, los tipos de defectos a identificar y la función de estas técnicas en el marco del ciclo de vida del software (K2).
Términos usados en este artículo:PRUEBAS DINÁMICAS , PRUEBAS ESTÁTICAS.

Antecedentes.



Al contrario que las pruebas dinámicas, que exigen la ejecución de software, las técnicas de pruebas estáticas se basan en el examen manual (revisiones) y en el análisis automatizado (análisis estático) del código o de cualquier otra documentación del proyecto sin ejecutar el código.

Las revisiones constituyen una forma de probar los productos de trabajo del software (incluyendo el código) y pueden realizarse antes de ejecutar las pruebas dinámicas. Los defectos detectados durante las revisiones al principio del ciclo (por ejemplo, los defectos encontrados en los requisitos)  a menudo son mucho más baratos de eliminar que los detectados durante las pruebas realizadas ejecutando el código.

Una revisión podría hacerse íntegramente como una actividad manual, pero también existen herramientas de soportes.



La principal actividad manual consiste en examinar un producto de trabajo y hacer comentarios al respecto. Cualquier producto de trabajo de software puede ser objeto de una revisión como por ejemplo:

  1. Las especificaciones de requisitos , 
  2. Las especificaciones de diseño,
  3. El código, 
  4. Los planes de pruebas, 
  5. Las especificaciones de pruebas,
  6. Los casos de pruebas ,
  7. Los guiones de pruebas, 
  8. Las guías de usuario o las páginas web.

Los beneficios de las revisiones incluyen la detección y corrección temprana de defectos, el desarrollo de mejoras de productividad, la reducción de los tiempos de desarrollo, el ahorro de tiempo y dinero invertido en pruebas, el menor coste de la vida, menos defectos y comunicación mejorada. Las revisiones pueden encontrar omisiones , por ejemplo,, en requisitos, que no suelen encontrarse en pruebas dinámicas.

Las revisiones, el análisis estáticos y las pruebas dinámicas tienen  el mismo objetivo:

  1. Identificar defectos.
  2. Se trata de procesos complementarios.
  3. Las distintas técnicas pueden encontrar distintos tipos de defectos de una manera eficiente y efectiva,
  4. En comparación con las pruebas dinámicas , las técnicas estáticas localizan las causas o los fallos (defectos) más que los propios fallos.
Entre los defectos típicos que resultan más fáciles de localizar en revisiones que en las pruebas dinámicas se incluyen: 

  1. Desviaciones de los estándares,
  2. Defectos de requisitos,
  3. Defectos de diseño, 
  4. Mantenibilidad insuficiente y
  5. Especificaciones de interfaz incorrectas.

Resumiendo:

  • Las técnicas estáticas de pruebas comprenden varios métodos que no ejecutan el componente o sistema objeto de la prueba.
  • Las pruebas estáticas incluyen:
  1.     Revisiones ("reviews") (actividad manual).
  2.     Análisis estático ("static analysis") (actividad basada en herramientas, ejemplo Sonar, JSmeter).

  • Las técnicas estáticas complementan los métodos dinámicos:
  1.    Las pruebas estáticas detectan causas de los fallos (defectos) en lugar de fallos.
  2.    Los conceptos también son analizados, no sólo el código ejecutable.
  3.    Los defectos / desviaciones son detectados en una fase temprana antes de que sean implementados en el código.
  4.  Las pruebas estáticas pueden descubrir defectos que no fueron detectables en las pruebas dinámicas.
  • Documento de alta calidad conducen a productos de alta calidad.
  1.    Incluso si una especificación revisada no contiene ningún defecto, la interpretación de la especificación y creación del diseño pueden ser defectuosas.

Pregunta de examen:

18 What can static analysis NOT find?
a) The use of a variable before it has been defined
b) Unreachable (“dead”) code
c) Whether the value stored in a variable is correct-->OK
d) The re-definition of a variable before it has been used
e) Array bound violations

18 ¿Qué no puede encontrar el análisis estático?
a) El uso de una variable antes de que haya sido definida
b )código " muerto" inalcanzable 
c) Si el valor almacenado en una variable es correcta-->OK
d ) antes de que se ha utilizado la re- definición de una variable
e) Arreglos de reglas no permitidas.

No hay comentarios:

Publicar un comentario