what is cyclomatic complexity learn with an example
Team Foundation Server gestión ágil de proyectos
Complejidad ciclomática es una palabra de moda muy común en la comunidad de desarrollo. Esta técnica se utiliza principalmente para determinar la complejidad de un código o una funcionalidad.
La técnica fue desarrollada por MaCabe y ayuda a identificar las siguientes 3 preguntas para los programas / características
- ¿Se puede probar la función / programa?
- ¿Todos comprenden la función / programa?
- ¿Es la función / programa lo suficientemente confiable?
Como QA podemos utilizar esta técnica para identificar el 'nivel' de nuestras pruebas. Es una práctica que si el resultado de la complejidad ciclomática es mayor o mayor, consideramos que esa pieza de funcionalidad es de naturaleza compleja y por lo tanto concluimos como tester; que la pieza de código / funcionalidad requiere pruebas en profundidad.
Por otro lado, si el resultado de la Complejidad Ciclomática es un número menor, concluimos como QA que la funcionalidad es de menor complejidad y decidimos el alcance en consecuencia.
Déjame ir paso a paso: Primero comprenda cómo se calcula y luego pasaremos a comprender cómo se determina el nivel de prueba.
Lo que vas a aprender:
- ¿Cómo calcular la complejidad ciclomática?
- Fórmula de Complejidad Ciclomática
- Ejemplo de complejidad ciclomática
- ¿Cómo pueden usarlo los probadores?
- Ahora viene el atajo
- Lectura recomendada
¿Cómo calcular la complejidad ciclomática?
El cálculo de CC gira en torno a 2 conceptos
- Nodos
- Bordes
Los enunciados de un programa se representan como nodos y las rutas de control de un enunciado a otro se representan mediante bordes.
Fórmula de Complejidad Ciclomática
La fórmula para calcular CC es la siguiente:
CC = E ~ N + 2
Dónde:
E = Número de aristas
N = Número de nodos.
(Hay un atajo para calcularlo, pero no ahora ...... más tarde ...)
Ejemplo de complejidad ciclomática
Tomemos el siguiente ejemplo para entenderlo.
Considere el siguiente gráfico de flujo de control:
He colocado el RED puntos para identificar los nodos y AZUL líneas para identificar los bordes:
Entonces aquí en este ejemplo:
Número de nodos (puntos rojos) = 14
Número de bordes (líneas azules) = 15
Entonces la Complejidad Ciclomática = N ~ E + 2 = (14-15) +2 = 3
¿Cómo pueden usarlo los probadores?
En el mundo real, los probadores pueden sentarse con los desarrolladores para derivar el gráfico de flujo de control para un fragmento de código determinado. Y una vez que tenemos el gráfico, podemos derivar la complejidad usando esta fórmula. Pero la historia para Testers no termina aquí: - el punto principal aquí es - ¿cuál es el uso de este número para el equipo de pruebas?
Bueno, los probadores pueden hacer uso de este número para determinar el nivel de sus pruebas.
En la práctica, hay 2 niveles de prueba:
- Prueba de longitud
- Prueba de amplitud
Considere la siguiente matriz para las diferentes características de cualquier módulo: -
La prueba de longitud es una forma en la que intentamos cubrir todo el alcance seleccionando los casos de prueba importantes para cada función. Por ejemplo , en este caso, suponga que selecciono implicar con la prueba de longitud, luego puedo seleccionar -
- Subfunción 1.1 y Subfunción 1.3 para la función 1
- Subfunción 2.2 de la función 2
- Subfunción 3.3 de la función 3
- Subfunción 4.2 y Subfunción 4.3 de la función 4
- Sub función 5.3 de la función 5
Así que aquí me refiero a toda la función sin entrar en detalles exhaustivos de las subfunciones.
Ahora, si el resultado del CC es un número mayor, entonces elijo ir con la prueba de amplitud, en realidad probaré todas y cada una de las funciones junto con todas y cada una de las subfunciones.
Por lo tanto, según los requisitos de su proyecto actual, la confiabilidad del entorno, los evaluadores pueden colaborar con el equipo de desarrollo y crear un estándar para la identificación del nivel y alcance de las pruebas. Por ejemplo -
- Si el CC<=15 – Basic sanity test
- Si el CC está entre 16 y 30 - Prueba de longitud
- Si el CC está entre 31 y 50 - Prueba de amplitud
- Si CC> 50: es una función caótica y necesita una mayor descomposición
Ahora viene el atajo
Simplemente cuente el número de regiones cerradas y agregue 1.
En nuestro ejemplo anterior, número de región cerrada = 2 (rellena en amarillo), por lo que CC = 2 + 1 = 3
En el trabajo real es muy difícil concluir el resultado cuando damos declaraciones como:
- “… ..Esta funcionalidad es muy difícil de implementar”
¿A qué te refieres con difícil? ¿Es complejo, complicado o caótico?
¿Cómo llegó a la conclusión de que esto es difícil?
- '... esto debería estar disponible al final del día'
¿Qué es el final del día? Tu final del día es a las 7:00 p.m., probablemente el mío sea a las 6:00 p.m.
- '... Necesitaría hacer pruebas detalladas para esto'
¿Qué son las pruebas detalladas? No existe una técnica de prueba llamada 'Prueba detallada'
- '... el código debe ser de buena calidad antes de implementarlo en el control de calidad'
¿Cómo se mide la buena calidad?
En cambio, si reformulo las declaraciones como:
La Complejidad Ciclomática para el fragmento de código se calcula como 75 y según nuestros estándares; esta funcionalidad es de naturaleza caótica. Por lo tanto, recomendamos descomponerlo aún más.
Sobre
- “… ..Esta funcionalidad es muy difícil de implementar”
La funcionalidad se implementará en el entorno de control de calidad a las 5:00 p.m. CST.
Sobre
- '... esto debería estar disponible al final del día'
Dado que la complejidad ciclomática se calcula como 48, según nuestro estándar estaríamos haciendo las pruebas de sistemas junto con las pruebas de integración y regresión para la función.
Sobre
- '... Necesitaría hacer pruebas detalladas para esto'
Según Sonar, el CC ahora es 102. Hemos estandarizado para tener el CC a 10. Implementaremos el código cuando mejoremos el código para hacer que el CC sea menor que 10.
Sobre
- '... el código debe ser de buena calidad antes de implementarlo en QA'
¿Cuál es la diferencia entre las dos declaraciones?
Bueno, la diferencia aquí es la medida. He respaldado cada una de mis declaraciones con la medición adecuada que ayudaría a mis partes interesadas a saber exactamente lo que quiero decir.
De manera similar, use la complejidad ciclomática en las pruebas de software para determinar la medida exacta de sus esfuerzos de prueba y puede usarla no solo para identificar el alcance de sus pruebas, sino también los tipos de pruebas que necesitaría hacer.
Lectura recomendada
- ¿Qué son las pruebas de componentes o las pruebas de módulos (aprender con ejemplos)?
- ¿Qué son las pruebas de comparación (aprender con ejemplos)?
- Paquete profesional de pruebas de software eBook
- ¿Qué son las pruebas de integración de sistemas (SIT)? Aprenda con ejemplos
- Mejores herramientas de prueba de software 2021 (Herramientas de automatización de pruebas de control de calidad)
- Descarga del libro electrónico Testing Primer
- 5 diagramas importantes que los probadores deben aprender a usar
- Tutorial de revisión de TestRail: Aprenda la administración de casos de prueba de un extremo a otro