Complessità ciclomatica di Mccabe: calcolo con diagramma di flusso (esempio)

Sommario:

Anonim

Per comprendere la complessità ciclomatica, prima di tutto comprendiamo:

Cos'è la metrica software?

La misurazione non è altro che un'indicazione quantitativa di dimensione / dimensione / capacità di un attributo di un prodotto / processo. La metrica software è definita come una misura quantitativa di un attributo che un sistema software possiede rispetto a Costo, Qualità, Dimensioni e Pianificazione.

Esempio-

Misura: numero di erroriMetriche: numero di errori rilevati per persona

In questo tutorial imparerai-

  • Cos'è la metrica software?
  • Cos'è la complessità ciclomatica?
  • Notazione del grafico di flusso per un programma:
  • Come calcolare la complessità ciclomatica
  • Proprietà della complessità ciclomatica:
  • In che modo questa metrica è utile per i test del software?
  • Altro su V (G):
  • Strumenti per il calcolo della complessità ciclomatica:
  • Usi della complessità ciclomatica:

Complessità ciclomatica nel test del software

La complessità ciclomatica nel test del software è una metrica di test utilizzata per misurare la complessità di un programma software. È una misura quantitativa di percorsi indipendenti nel codice sorgente di un programma software. La complessità ciclomatica può essere calcolata utilizzando grafici di flusso di controllo o rispetto a funzioni, moduli, metodi o classi all'interno di un programma software.

Il percorso indipendente è definito come un percorso che ha almeno un bordo che non è stato attraversato prima in nessun altro percorso.

Questa metrica è stata sviluppata da Thomas J. McCabe nel 1976 e si basa su una rappresentazione del flusso di controllo del programma. Il flusso di controllo rappresenta un programma come un grafico costituito da nodi e bordi.

Nel grafico, i nodi rappresentano le attività di elaborazione mentre i bordi rappresentano il flusso di controllo tra i nodi.

Notazione del grafico di flusso per un programma:

La notazione del diagramma di flusso per un programma definisce diversi nodi collegati attraverso i bordi. Di seguito sono riportati i diagrammi di flusso per istruzioni come if-else, While, until e la normale sequenza di flusso.

Come calcolare la complessità ciclomatica

Rappresentazione matematica:

Matematicamente, è un insieme di percorsi indipendenti attraverso il diagramma grafico. La complessità del codice del programma può essere definita utilizzando la formula -

V (G) = E - N + 2

Dove,

E - Numero di spigoli

N - Numero di nodi

V (G) = P + 1

Dove P = Numero di nodi del predicato (nodo che contiene la condizione)

Esempio -

i = 0;n = 4; // N-Numero di nodi presenti nel graficowhile (i 

Il grafico di flusso per questo programma sarà

Calcolando matematicamente,

  • V (Sol) = 9 - 7 + 2 = 4
  • V (G) = 3 + 1 = 4 (i nodi di condizione sono 1,2 e 3 nodi)
  • Set di base - Un insieme di possibili percorsi di esecuzione di un programma
  • 1, 7
  • 1, 2, 6, 1, 7
  • 1, 2, 3, 4, 5, 2, 6, 1, 7
  • 1, 2, 3, 5, 2, 6, 1, 7

Proprietà della complessità ciclomatica:

Di seguito sono riportate le proprietà della complessità ciclomatica:

  1. V (G) è il numero massimo di percorsi indipendenti nel grafico
  2. V (G)> = 1
  3. G avrà un percorso se V (G) = 1
  4. Riduci al minimo la complessità a 10

In che modo questa metrica è utile per i test del software?

Il test del percorso di base è una delle tecniche della scatola bianca e garantisce di eseguire almeno un'istruzione durante il test. Controlla ogni percorso linearmente indipendente attraverso il programma, il che significa che il numero di casi di test sarà equivalente alla complessità ciclomatica del programma.

Questa metrica è utile a causa delle proprietà della complessità ciclomatica (M) -

  1. M può essere il numero di casi di test per ottenere la copertura del ramo (limite superiore)
  2. M può essere il numero di percorsi attraverso i grafici. (Limite inferiore)

Considera questo esempio:

If (Condizione 1)Dichiarazione 1AltroDichiarazione 2If (Condizione 2)Dichiarazione 3AltroDichiarazione 4

La complessità ciclomatica per questo programma sarà 8-7 + 2 = 3.

Poiché la complessità è stata calcolata come 3, sono necessari tre casi di test per la copertura completa del percorso per l'esempio precedente.

Passaggi da seguire:

I seguenti passaggi devono essere seguiti per calcolare la complessità di Cyclomatic e la progettazione dei casi di test.

Passaggio 1 - Costruzione del grafico con nodi e bordi dal codice

Step 2 - Identificazione di percorsi indipendenti

Passaggio 3 - Calcolo della complessità ciclomatica

Passaggio 4 : progettazione dei casi di test

Una volta formato il set di base, i TEST CASES dovrebbero essere scritti per eseguire tutti i percorsi.

Altro su V (G):

La complessità ciclomatica può essere calcolata manualmente se il programma è piccolo. Se il programma è molto complesso, è necessario utilizzare strumenti automatizzati poiché comporta più grafici di flusso. In base al numero di complessità, il team può concludere sulle azioni che devono essere intraprese per misurare.

La tabella seguente fornisce una panoramica sul numero di complessità e sul significato corrispondente di v (G):

Numero di complessità Significato
1-10 Codice strutturato e ben scritto Il costo e lo sforzo elevati per la testabilità sono inferiori
10-20 Codice complesso Testabilità medio Il costo e lo sforzo sono medi
20-40 Codice molto complesso Basso costo e impegno per la testabilità sono elevati
> 40 Per niente testabile Costo e impegno molto elevati

Strumenti per il calcolo della complessità ciclomatica:

Sono disponibili molti strumenti per determinare la complessità dell'applicazione. Alcuni strumenti di calcolo della complessità vengono utilizzati per tecnologie specifiche. La complessità può essere trovata dal numero di punti decisionali in un programma. I punti di decisione sono istruzioni if, for, for-each, while, do, catch, case in un codice sorgente.

Esempi di strumenti sono

  • OCLint - Analizzatore di codice statico per C e linguaggi correlati
  • Componente aggiuntivo Reflector: metriche del codice per gli assembly .NET
  • GMetrics: trova le metriche nelle applicazioni correlate a Java

Usi della complessità ciclomatica:

La complessità ciclomatica può rivelarsi molto utile in

  • Aiuta sviluppatori e tester a determinare esecuzioni di percorsi indipendenti
  • Gli sviluppatori possono garantire che tutti i percorsi siano stati testati almeno una volta
  • Ci aiuta a concentrarci maggiormente sui sentieri scoperti
  • Migliora la copertura del codice nell'ingegneria del software
  • Valutare il rischio associato all'applicazione o al programma
  • L'utilizzo di queste metriche all'inizio del ciclo riduce un maggior rischio del programma

Conclusione:

La complessità ciclomatica è una metrica software utile per i test strutturati o White Box. Viene utilizzato principalmente per valutare la complessità di un programma. Se i punti decisionali sono maggiori, allora la complessità del programma è maggiore. Se il programma ha un numero di complessità elevato, la probabilità di errore è elevata con un aumento del tempo per la manutenzione e la risoluzione dei problemi.