Complexidade Ciclomática de Mccabe: Calcule com Gráfico de Fluxo (Exemplo)

Índice:

Anonim

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 (i 

O 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:

  1. V (G) é o número máximo de caminhos independentes no gráfico
  2. V (G)> = 1
  3. G terá um caminho se V (G) = 1
  4. 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) -

  1. M pode ser o número de casos de teste para atingir a cobertura do ramal (limite superior)
  2. 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 4

A 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.