Para entender a Complexidade Ciclomática, vamos primeiro entender -
O que é Software Metric?
A medição nada mais é do que uma indicação quantitativa de tamanho / dimensão / capacidade de um atributo de um produto / processo. A métrica de software é definida como uma medida quantitativa de um atributo que um sistema de software possui em relação a custo, qualidade, tamanho e cronograma.
Exemplo-
Medida - Nº de errosMétricas - Número de erros encontrados por pessoa
Neste tutorial, você aprenderá-
- O que é Software Metric?
- O que é complexidade ciclomática?
- Notação de gráfico de fluxo para um programa:
- Como calcular a complexidade ciclomática
- Propriedades da complexidade ciclomática:
- Como essa métrica é útil para teste de software?
- Mais em V (G):
- Ferramentas para cálculo da complexidade ciclomática:
- Usos da complexidade ciclomática:
Complexidade ciclomática em teste de software
Complexidade ciclomática em teste de software é uma métrica de teste usada para medir a complexidade de um programa de software. É uma medida quantitativa de caminhos independentes no código-fonte de um programa de software. A complexidade ciclomática pode ser calculada usando gráficos de fluxo de controle ou com respeito a funções, módulos, métodos ou classes dentro de um programa de software.
Caminho independente é definido como um caminho que tem pelo menos uma aresta que não foi percorrida antes em nenhum outro caminho.
Essa métrica foi desenvolvida por Thomas J. McCabe em 1976 e é baseada em uma representação de fluxo de controle do programa. O fluxo de controle representa um programa como um gráfico que consiste em nós e arestas.
No gráfico, os nós representam tarefas de processamento, enquanto as arestas representam o fluxo de controle entre os nós.
Notação de gráfico de fluxo para um programa:
A notação de fluxograma para um programa define vários nós conectados pelas arestas. Abaixo estão os diagramas de fluxo para instruções como if-else, While, until e sequência normal de fluxo.
Como calcular a complexidade ciclomática
Representação matemática:
Matematicamente, é um conjunto de caminhos independentes através do diagrama gráfico. A complexidade do código do programa pode ser definida usando a fórmula -
V (G) = E - N + 2
Onde,
E - Número de arestas
N - Número de nós
V (G) = P + 1
Onde P = Número de nós predicados (nó que contém a condição)
Exemplo -
i = 0;n = 4; // N-Número de nós presentes no gráficoenquanto (iO gráfico de fluxo para este programa será
Computando matematicamente,
- V (G) = 9 - 7 + 2 = 4
- V (G) = 3 + 1 = 4 (nós de condição são 1,2 e 3 nós)
- Conjunto de base - um conjunto de possíveis caminhos de execução de um programa
- 1, 7
- 1, 2, 6, 1, 7
- 1, 2, 3, 4, 5, 2, 6, 1, 7
- 1, 2, 3, 5, 2, 6, 1, 7
Propriedades da complexidade ciclomática:
A seguir estão as propriedades da complexidade ciclomática:
- V (G) é o número máximo de caminhos independentes no gráfico
- V (G)> = 1
- G terá um caminho se V (G) = 1
- Minimize a complexidade para 10
Como essa métrica é útil para teste de software?
O teste de caminho de base é uma técnica de caixa branca e garante a execução de pelo menos uma instrução durante o teste. Ele verifica cada caminho linearmente independente através do programa, o que significa que o número de casos de teste, será equivalente à complexidade ciclomática do programa.
Esta métrica é útil devido às propriedades de complexidade ciclomática (M) -
- M pode ser o número de casos de teste para atingir a cobertura do ramal (limite superior)
- M pode ser o número de caminhos através dos gráficos. (Limite inferior)
Considere este exemplo -
If (condição 1)Declaração 1OutroDeclaração 2Se (condição 2)Declaração 3OutroDeclaração 4A complexidade ciclomática para este programa será 8-7 + 2 = 3.
Como a complexidade foi calculada como 3, três casos de teste são necessários para a cobertura completa do caminho para o exemplo acima.
Passos a serem seguidos:
As etapas a seguir devem ser seguidas para calcular a complexidade ciclomática e o projeto de casos de teste.
Etapa 1 - Construção do grafo com nós e arestas do código
Etapa 2 - Identificação de caminhos independentes
Etapa 3 - Cálculo da complexidade ciclomática
Etapa 4 - Projeto de Casos de Teste
Uma vez que o conjunto básico é formado, TEST CASES deve ser escrito para executar todos os caminhos.
Mais em V (G):
A complexidade ciclomática pode ser calculada manualmente se o programa for pequeno. Ferramentas automatizadas precisam ser usadas se o programa for muito complexo, pois envolve mais gráficos de fluxo. Com base no número de complexidade, a equipe pode concluir sobre as ações que precisam ser tomadas para a medição.
A tabela a seguir fornece uma visão geral sobre o número de complexidade e o significado correspondente de v (G):
Número de Complexidade Significado 1-10 Código estruturado e bem escrito Alto custo de testabilidade e esforço é menor 10-20 Custo e esforço médio de testabilidade de código complexo são médios 20-40 Código muito complexo, baixo custo e esforço de testabilidade são altos > 40 Nem um pouco testável Custo e esforço muito altos Ferramentas para cálculo da complexidade ciclomática:
Muitas ferramentas estão disponíveis para determinar a complexidade do aplicativo. Algumas ferramentas de cálculo de complexidade são usadas para tecnologias específicas. A complexidade pode ser encontrada pelo número de pontos de decisão em um programa. Os pontos de decisão são if, for, for-each, while, do, catch, instruções case em um código-fonte.
Exemplos de ferramentas são
- OCLint - analisador de código estático para C e linguagens relacionadas
- Reflector Add In - Métricas de código para assemblies .NET
- GMetrics - Encontre métricas em aplicativos relacionados a Java
Usos da complexidade ciclomática:
A complexidade ciclomática pode ser muito útil em
- Ajuda os desenvolvedores e testadores a determinar execuções de caminhos independentes
- Os desenvolvedores podem garantir que todos os caminhos foram testados pelo menos uma vez
- Nos ajuda a nos concentrar mais nos caminhos descobertos
- Melhorar a cobertura de código em Engenharia de Software
- Avalie o risco associado ao aplicativo ou programa
- Usar essas métricas no início do ciclo reduz mais o risco do programa
Conclusão:
A complexidade ciclomática é uma métrica de software útil para testes estruturados ou de caixa branca. É usado principalmente para avaliar a complexidade de um programa. Se os pontos de decisão forem maiores, então a complexidade do programa será maior. Se o programa tiver um número de alta complexidade, a probabilidade de erro será alta com o aumento do tempo para manutenção e solução de problemas.