Sie sind auf Seite 1von 19

<<Análisis Estático por medio de

Herramientas>>
Curso: Pruebas de Software
12
ANALISIS ESTATICO POR MEDIO
DE HERRAMIENTAS
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

Terminología y definiciones

• Análisis Estático
• Es aquella actividad que consiste en el análisis de un objeto de prueba, por ejemplo el
código fuente, requisito llevado a cabo sin ejecutar el producto software (si esto fuera
posible)
• Posibles aspectos a ser comprobados con análisis estáticos :
• Reglas de estándares de programación.
• Diseño de un programa (análisis del flujo de control)
• Uso de datos (análisis del flujo de datos)
• Complejidad de la estructura de un programa.

Ing. Alejandro Bartra


3
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

• Aspectos generales

• Todos los objetos de prueba deben tener una estructura formal.


• Esto es especialmente importante cuando se utilizan herramientas de pruebas.
• Con mucha frecuencia no se generan documentos formalmente.
• En la práctica, lenguajes de modelado, programación y de guión (“scripting” )
cumplen con la regla, de la misma forma que algunos diagramas.

• El análisis estático de un programa mediante el uso de herramientas se desarrolla con


un esfuerzo menor que el necesario en una inspección.

Ing. Alejandro Bartra


4
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

• Aspectos generales
• Herramientas a utilizar: Compiladores y herramientas de análisis (analizadores)
• Compilador .
• Detecta errores sintácticos en el código fuente de un programa.
• Crea datos de referencia del programa (por ejemplo lista de referencia cruzada,
llamada jerárquica, tabla de símbolos)
• Comprueba la consistencia entre los tipos de variables.
• Detecta variables no declaradas y código inaccesible (código muerto)
• Analizador: trata de aspectos adicionales tales como:
• Convenciones y estándares.
• Métricas de complejidad.
• Etc.

Ing. Alejandro Bartra


5
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

Análisis del flujo de control


• Propósito
• Detectar defectos causados por un desarrollo anómalo del código (ramas muertas,
código muerto, etc.)
• Método
• La estructura del código se representa como un diagrama de control de flujo.
• Es un grafo dirigido.
• Los nodos representan sentencias o secuencias de sentencias.
• Las aristas representan las transferencias del flujo de control como decisiones y bucles.
• Resultados
• Visión de conjunto del código del programa.
• Las anomalías pueden ser fácilmente detectadas, los defectos se hacen evidentes:
• Bucles abandonados por saltos.
• Ramas muertas.
• Retornos múltiples.

Ing. Alejandro Bartra


6
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

Análisis del flujo de datos


• Propósito
• Detección de anomalías en el flujo de datos con la asistencia de los diagramas de flujo de control
respecto a las secuencias del flujo de datos.
• Beneficios
• Detección de anomalías en el flujo de datos.
• Se puede detectar fácilmente la localización exacta de defectos.
• Es un buen complemento para otros métodos de pruebas.
• Desventajas
• Limitado a un rango reducido de tipos de defectos.
• Método
• Una variable X puede tener los siguientes estados a lo largo de la ejecución de un programa:
• X se encuentra definida (d): un valor ha sido asignado a la variable X, por ejemplo X=1
• X se encuentra no definida (u): no ha sido asignado valor alguno a la variable X
• X está referenciada (r): ha sido tomada una referencia, el valor de X no cambia (Ej. x>0))
• X no ha sido utilizada (e): X no ha sido referenciada ni en lectura ni en escritura.
• El flujo de datos de una variable puede ser expresado como una secuencia de estados : d, u, r y e
• Si una de estas secuencias contiene una sub-secuencia que no tiene sentido, entonces ha tenido
lugar una anomalía en el flujo de datos.

Ing. Alejandro Bartra


7
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

Análisis del flujo de datos


• Estudio de las variables del programa
• variable definida* donde se almacena un valor en ella.
• variable utilizada en donde el valor almacenado se accede.
• variable no definida antes de que sea utilizada o cuando se encuentra fuera de alcance.

x se define, y, z se utilizan
x=y+z
IF a > b THEN read(S)

a y b se utilizan, S se define

* definido no debe confundirse con declarado

Ing. Alejandro Bartra


8
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

Fallas en el análisis de flujo de datos


n := 0
read (x) Anomalías de flujo de datos: «n» es
redefinido sin ser utilizado
n := 1
while x > y do Fallo de flujo de datos: «y» se utiliza
antes de que se haya definido
begin (primera vez alrededor del bucle)

read (y)
write( n*y)
x := x - n
end

Ing. Alejandro Bartra


9
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

Análisis del Control de Flujo de Datos

• Nodos inaccesibles desde el nodo de inicio


• Bucles infinitos
• Entrada múltiple a los bucles
• Si el código está bien estructurado
• Si el código se ajusta a la gramática de diagramas de flujos
• Saltos a etiquetas no definidas
• Excesiva complejidad ciclomática, etc.

Ing. Alejandro Bartra


10
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

Anomalías en el flujo de datos


Ejemplo:

El análisis de flujo de datos muestra: Este ejemplo puede ser


Para este ejemplo los
valores de dos variables son • La variable Help se encuentra fácilmente corregido
intercambiados a través de
una variable auxiliar , si no No definida (undefined) cuando
están ordenados por valor es Referenciada (referenced) Void MinMax (Int Min, Int Max)
Anomalìa u-r {
Void MinMax (Int Min, Int Max) Int Help:
• La variable Max se define
{ (“defined”) dos veces sin if (Min > Max)
ninguna referencia entre ambas {
Int Help:
definiciones
if (Min > Max) Help = Max
Anomalía d-d. Max = Min
{
• El valor definido (“defined”) Min = Help;
Max = Help para la variable Help se vuelve
Max = Min }
indefinido (undefined) al final
Help = Min; del programa sin referencia End MinMax;
} Anomalía d-u
End MinMax;

Ing. Alejandro Bartra


11
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

Anomalías en el flujo de datos


EJEMPLO DE CÓDIGO NO ALCANZABLE

• Definición de macros

Buffsize: 1000
Mailboxmax: 1000
IF Buffsize < Mailboxmax THEN
Error-Exit
ENDIF

Ing. Alejandro Bartra


12
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

Las métricas y su cálculo

• Ciertos aspectos de la calidad de un programa pueden ser medidos


utilizando métricas
• La métrica sólo tiene relevancia para el aspecto medido (considerado)

• La complejidad estática de un programa puede ser medida


• Actualmente hay aproximadamente 100 métricas diferentes disponibles.

• Métricas diferentes tratan aspectos diferentes de la complejidad del


programa
• Tamaño del programa (por ejemplo : líneas de código (“Lines of code - LOC”)
• Estructuras de control de programa (por ejemplo “Número ciclomático)

Ing. Alejandro Bartra


13
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

Las métricas y su implicación V(G) = e – n + 2p


• Número Ciclomático
• Métrica que mide la complejidad estática de
un programa basado en su grado de flujo
de control. Está basada en el número de
decisiones en un programa.
• Mide los caminos linealmente
independientes, como índice de la
testeabilidad y mantenibilidad.
• El número ciclomático se define de la
siguiente forma:
• Número de aristas e
• Número de nodos n
• Número de partes de programas
independientes inspeccionados: p
(normalmente 1)
• Valores hasta 10 son aceptables. Para
valores superiores el código debe ser
“revoked” / mejorado.
• Provee una indicación de la cantidad de
pruebas necesarias para evitar defectos.

Ing. Alejandro Bartra


14
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

V(G) = e – n + 2p

• Aristas (e)= 8
• Nodos (n) = 7
• P=1
• V(G) = 3

Ing. Alejandro Bartra


15
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

¿Cuál es más complejo y por qué?

2 3 5

Ing. Alejandro Bartra


16
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

• Las métricas y su implicación


• Número ciclomático (por Mc Cabe) - Implicación
• El número ciclomático puede ser utilizado como un valor objetivo para una revisión de
código.
• El número ciclomático puede ser calculado como el número de decisiones
independientes más uno. Si las dos formas de cálculo aportan resultados diferentes se
puede deber a:
• Ramas superfluas
• Ramas faltantes
• El número ciclomático también aporta un índice del número de casos de prueba
necesarios (para alcanzar cobertura de decisión)
• Resultado del análisis:
• El diagrama de flujo de control presenta el flujo del programa y permite la detección de
“ramas muertas” y código inalcanzable.
• Las anomalías en los datos se detectan utilizando el análisis del flujo de datos.
• Las métricas pueden ser utilizadas par evaluar la complejidad estructural conduciendo a
una estimación del esfuerzo en pruebas a esperar.

Ing. Alejandro Bartra


17
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

• ChecKing QA
• Es una herramienta que controla tanto los elementos del proceso de desarrollo software
(actividades,requisitos, cambios) como los elementos analizables del software (código fuente,
proyectos, documentación, scripts de pruebas etc.)
• Kiuwan
• Herramienta en Cloud (Saas) de análisis de código que permite medir la calidad y la deuda
técnica del software entre otras cosas. Para Java, PHP, Javascript, C#, COBOL, ABAP IV,
VB.net, C/C++, Objective-C, Android, JSP, Hibernate, SQL, PL/SQL. Cuadro de mando basado
en la ISO 9126
• PMD
• Analizador estático de código. Identifica problemas como repetición de código, if`s anidados, etc.
(BSD)
• Check Style
• Analizador estático de código, principalmente Java. Comprueba si se siguen las reglas de estilo.
(GNU Lesser General Public License Version 2.1)
• SONAR.
• Herramienta de gestión de la calidad del código fuente. Permite recopilar, analizar, y visualizar
métricas del código fuente. Está formado por PMD, Checkstyl, Findbugs, Clover y Cobertura.
Principalmente es usado con Java pero da soporte a otros lenguajes. (LGPL)
• Google CodePro Analytix
• También es una herramienta de gestión de la calidad del software. Ofrece un entorno para
evaluación de código, métricas, análisis de dependencias, cobertura de código, generación de
Test unitarios, etc.

Ing. Alejandro Bartra


18
03 ANALISIS ESTATICO POR MEDIO DE HERRAMIENTAS

• Resumen

• Análisis estático
• Con el uso de las herramientas para la realización de análisis estático
(compiladores, analizadores) el código del programa puede ser objeto de
inspección sin ser ejecutado.
• Con el uso de las herramientas se puede realizar el análisis estático de un
programa con un esfuerzo menor que el necesario para una inspección.
• Resultado del análisis:
• El diagrama de flujo de control presenta el flujo del programa y permite la
detección de “ramas muertas” y código inalcanzable.
• Las anomalías en el flujo de datos se detectan utilizando el análisis del flujo de
datos.
• Las métricas pueden ser utilizadas para evaluar la complejidad estructural
(Número Ciclomático) conduciendo a una estimación del esfuerzo en pruebas a
esperar.

Ing. Alejandro Bartra


19

Das könnte Ihnen auch gefallen