what is cyclomatic complexity learn with an example
Complessità ciclomatica è una parola d'ordine molto comune nella comunità di sviluppo. Questa tecnica viene utilizzata principalmente per determinare la complessità di un pezzo di codice o funzionalità.
La tecnica è stata sviluppata da MaCabe e aiuta a identificare le 3 domande seguenti per i programmi / funzionalità
- La funzione / programma è testabile?
- La funzione / programma è compreso da tutti?
- La funzione / programma è sufficientemente affidabile?
In qualità di QA possiamo utilizzare questa tecnica per identificare il 'livello' dei nostri test. È una pratica che se il risultato della complessità ciclomatica è più o un numero maggiore, consideriamo quel pezzo di funzionalità di natura complessa e quindi concludiamo come tester; che il pezzo di codice / funzionalità richiede test approfonditi.
D'altra parte, se il risultato della Complessità Ciclomatica è un numero inferiore, concludiamo come QA che la funzionalità è di minore complessità e decidiamo l'ambito di conseguenza.
Lasciami andare passo dopo passo: prima capire come viene calcolato, quindi passeremo a capire come viene determinato il livello di test.
Cosa imparerai:
- Come calcolare la complessità ciclomatica?
- Formula di complessità ciclomatica
- Esempio di complessità ciclomatica
- Come possono usarlo i tester?
- Ora arriva la scorciatoia
- Lettura consigliata
Come calcolare la complessità ciclomatica?
Il calcolo di CC ruota attorno a 2 concetti
come fare un mucchio in java
- Nodi
- Bordi
Le istruzioni in un programma sono rappresentate come nodi e i percorsi di controllo da un'istruzione all'altra sono rappresentati da Edges.
Formula di complessità ciclomatica
La formula per calcolare CC è la seguente:
CC = E ~ N + 2
Dove:
E = Numero di spigoli
N = Numero di nodi.
(C'è una scorciatoia per calcolarlo, ma non ora …… più tardi…)
Esempio di complessità ciclomatica
Prendiamo l'esempio seguente per capirlo.
Considera il grafico del flusso di controllo seguente:
Ho posizionato il file NETTO punti per identificare i nodi e BLU linee per identificare i bordi:
Quindi qui in questo esempio:
Numero di nodi (punti rossi) = 14
Numero di bordi (linee blu) = 15
Quindi la complessità ciclomatica = N ~ E + 2 = (14-15) +2 = 3
Come possono usarlo i tester?
Nel mondo reale, i tester possono sedersi con gli sviluppatori per derivare il grafico del flusso di controllo per un dato pezzo di codice. E una volta che abbiamo il grafico, possiamo derivare la complessità usando questa formula. Ma la storia per i tester non finisce qui: - il punto principale qui è - a cosa serve questo numero per il team di test?
Bene, i tester possono utilizzare questo numero per determinare il livello dei loro test.
In pratica ci sono 2 livelli di test:
- Test di lunghezza
- Test di larghezza
Considera la seguente matrice per le diverse caratteristiche di ogni modulo: -
Il test di lunghezza è un modo in cui cerchiamo di coprire l'intero ambito selezionando i casi di test importanti per ciascuna funzionalità. Per esempio , in questo caso, supponiamo che scelga di implicare con il test di lunghezza, quindi posso selezionare -
- Funzione secondaria 1.1 e funzione secondaria 1.3 per la funzione 1
- Funzione secondaria 2.2 dalla funzione 2
- Funzione secondaria 3.3 dalla funzione 3
- Funzione secondaria 4.2 e funzione secondaria 4.3 dalla funzione 4
- Funzione secondaria 5.3 dalla funzione 5
Quindi eccomi qui a toccare l'intera funzionalità senza entrare nei dettagli esaustivi delle funzionalità secondarie.
Ora, se il risultato del CC è un numero maggiore, allora scelgo di andare con il test di ampiezza, in realtà testerò ogni caratteristica insieme a ogni caratteristica secondaria.
i migliori siti per guardare anime online gratuitamente
Quindi, in base ai requisiti del progetto corrente, all'affidabilità dell'ambiente, i tester possono collaborare con il team di sviluppo e creare uno standard per l'identificazione del livello e dell'ambito del test. Per esempio -
- Se il CC<=15 – Basic sanity test
- Se il CC è compreso tra 16 e 30 - Test di lunghezza
- Se il CC è compreso tra 31 e 50 - Test di larghezza
- Se CC> 50: è una funzionalità caotica e necessita di un'ulteriore scomposizione
Ora arriva la scorciatoia
Basta contare il numero delle regioni chiuse e aggiungere 1 ad esso.
Nel nostro esempio sopra - numero di regioni chiuse = 2 (riempito in giallo), quindi CC = 2 + 1 = 3
Miglior VPN per l'Europa
Nel lavoro reale è molto difficile concludere il risultato quando facciamo affermazioni come:
- '... ..questa funzionalità è molto difficile da implementare'
Cosa intendi per difficile? È complesso, complicato o caotico?
Come hai concluso che questo è difficile?
- '... questo dovrebbe essere disponibile entro la fine della giornata'
Qual è la fine della giornata? La tua fine della giornata è alle 19:00, probabilmente la mia è alle 18:00?
- '... avrei bisogno di eseguire test dettagliati per questo'
Cos'è il test dettagliato? Non esiste una tecnica di test chiamata 'Test dettagliato'
- '... il codice deve essere di buona qualità prima di distribuirlo al QA'
Come misuri la buona qualità?
Invece, se riformulo le dichiarazioni come -
La Complessità Ciclomatica per il pezzo di codice è calcolata come 75 e secondo i nostri standard; questa funzionalità è di natura caotica. Quindi consigliamo di scomporlo ulteriormente.
Al di sopra di
- '... ..questa funzionalità è molto difficile da implementare'
La funzionalità verrà implementata nell'ambiente QA entro le 17:00 CST.
Al di sopra di
- '... questo dovrebbe essere disponibile entro la fine della giornata'
Poiché la complessità Cyclomatic è calcolata come 48, secondo il nostro standard, eseguiremo il test dei sistemi insieme al test di integrazione e regressione per la funzionalità.
Al di sopra di
- '... avrei bisogno di eseguire test dettagliati per questo'
Come per Sonar, il CC è ora 102. Abbiamo standardizzato per avere CC a 10. Distribuiremo il codice quando miglioreremo il codice per rendere CC inferiore a 10.
Al di sopra di
- '… .Il codice dovrebbe essere di buona qualità prima di distribuirlo al QA'
Qual è la differenza tra le due affermazioni?
Bene, la differenza qui è la misurazione. Ho supportato ciascuna delle mie affermazioni con misure adeguate che aiuterebbero i miei stakeholder a sapere esattamente cosa voglio dire.
Allo stesso modo, utilizza la complessità Cyclomatic nei test del software per determinare la misura esatta dei tuoi sforzi di test e puoi utilizzarla non solo per identificare l'ambito del test ma anche i tipi di test che dovresti eseguire.
Lettura consigliata
- Che cos'è il test dei componenti o il test dei moduli (impara con esempi)
- Che cos'è il test di confronto (impara con esempi)
- EBook sul pacchetto di carriera per il test del software
- Che cos'è il System Integration Testing (SIT): impara con esempi
- Migliori strumenti di test del software 2021 (Strumenti di automazione del test QA)
- Download dell'eBook Testing Primer
- 5 Diagrammi importanti che i tester devono imparare a utilizzare
- Esercitazione sulla revisione di TestRail: informazioni sulla gestione dei casi di test end-to-end