Code Strumento di copertura: test di dichiarazioni, rami e decisioni
⚡ Riepilogo intelligente
Code la copertura è una misurazione white-box che riporta il grado in cui il codice sorgente è stato esercitato da una suite di test, aiutaping I team individuano istruzioni, ramificazioni, condizioni e percorsi non testati che potrebbero nascondere difetti.

Cosa è Code Copertura?
Code copertura è una misura che descrive il grado in cui il codice sorgente di un programma è stato testato. È una forma di test della scatola bianca che individua le aree di un programma non testate da una serie di casi di test. Aiuta inoltre a creare ulteriori casi di test per aumentare la copertura e a determinare una misura quantitativa della copertura del codice.
Nella maggior parte dei casi, un sistema di copertura del codice raccoglie informazioni sul programma in esecuzione. Successivamente, combina queste informazioni con quelle del codice sorgente per generare un report sulla copertura del codice della suite di test.
Perché usare Code Test di copertura?
Ecco alcuni motivi principali per utilizzare la copertura del codice:
- Consente di misurare l'efficienza dell'implementazione dei test.
- Offre una misurazione quantitativa dei test.
- Definisce il grado in cui il codice sorgente è stato testato.
Code Metodi di copertura
Di seguito sono riportati i principali metodi di analisi della copertura del codice:
- Dichiarazione di copertura
- Copertura della decisione
- Copertura delle filiali
- Toggle Copertura
- Copertura FSM
Dichiarazione di copertura
Dichiarazione di copertura Il test white box è una tecnica di test in cui tutte le istruzioni eseguibili del codice sorgente vengono eseguite almeno una volta. Viene utilizzato per calcolare il numero di istruzioni del codice sorgente che sono state eseguite. Lo scopo principale della copertura delle istruzioni è quello di coprire tutti i possibili percorsi, righe e istruzioni nel codice sorgente.
La copertura delle istruzioni viene utilizzata per derivare scenari basati sulla struttura del codice da testare.
Nel white box testing, il tester si concentra sul funzionamento del software. In altre parole, il tester si concentra sul funzionamento interno del codice sorgente, in particolare sui diagrammi di flusso o grafi di controllo.
Generalmente in qualsiasi software, se si guarda il codice sorgente, ci sarà un'ampia varietà di elementi come operatori, funzioni,ping, gestori di eccezioni e così via. In base all'input del programma, alcune istruzioni di codice potrebbero non essere eseguite. L'obiettivo della copertura delle istruzioni è quello di coprire tutti i possibili percorsi, righe e istruzioni nel codice.
Cerchiamo di capire meglio questo concetto con un esempio di come calcolare la copertura del rendiconto. Prendiamo in considerazione due scenari diversi per verificare la percentuale di copertura del rendiconto per ciascuno di essi.
Fonte Code:
Prints (int a, int b) { ------------ Printsum is a function int result = a + b; If (result > 0) Print ("Positive", result) Else Print ("Negative", result) } ----------- End of the source code
Scenario 1: Se A = 3, B = 9
Le istruzioni evidenziate in giallo sono quelle eseguite secondo lo scenario. Numero di istruzioni eseguite = 5, numero totale di istruzioni = 7, quindi copertura delle istruzioni = 5/7 = 71%.
Scenario 2: Se A = -3, B = -9
Le istruzioni evidenziate in giallo sono quelle eseguite secondo lo scenario. Numero di istruzioni eseguite = 6, numero totale di istruzioni = 7, quindi copertura delle istruzioni = 6/7 = 85%.
Ma nel complesso, come potete vedere, tutte le affermazioni sono coperte da entrambi gli scenari. Possiamo quindi concludere che la copertura complessiva delle affermazioni è del 100%.
Cosa è coperto dalla copertura assicurativa?
- Dichiarazioni non utilizzate
- Dead Code
- Rami inutilizzati
- Dichiarazioni mancanti
Test di copertura delle decisioni
Copertura della decisione È una tecnica di test white box che riporta i risultati veri o falsi di ogni espressione booleana nel codice sorgente. L'obiettivo del test di copertura decisionale è quello di coprire e validare tutto il codice sorgente accessibile, verificando e garantendo che ogni ramo di ogni possibile punto decisionale venga eseguito almeno una volta.
In questo tipo di copertura, le espressioni possono diventare complesse, rendendo difficile raggiungere una copertura del 100%. Per questo motivo, vengono utilizzati diversi metodi per riportare questa metrica. Tali metodi danno priorità alle combinazioni più critiche. Pur essendo simile alla copertura dei rami, offre una maggiore sensibilità al flusso di controllo.
Esempio di copertura decisionale
Considera il codice seguente:
Demo(int a) { If (a > 5) a = a * 3 Print (a) }
Scenario 1: Il valore di a è 2. L'esito "No" della decisione se (a>5) è selezionato, quindi la copertura della decisione è del 50%.
Scenario 2: Il valore di a è 6. L'esito "Sì" della decisione se (a>5) è selezionato, quindi la copertura della decisione è del 50%.
| Test Case | Valore di A | Uscita | Copertura della decisione |
|---|---|---|---|
| 1 | 2 | 2 | 50% |
| 2 | 6 | 18 | 50% |
Test di copertura delle filiali
Copertura delle filiali È un metodo di test white box in cui viene testato ogni risultato di un modulo di codice (istruzione o ciclo). Lo scopo della copertura dei rami è garantire che ogni condizione decisionale di ogni ramo venga eseguita almeno una volta. Aiuta a misurare la percentuale di segmenti di codice indipendenti e a individuare le sezioni prive di ramificazioni.
Ad esempio, se i risultati sono binari, è necessario verificare sia i risultati Vero che quelli Falsi.
La formula per calcolare la copertura delle filiali:
Esempio di copertura delle filiali
Per comprendere la copertura dei rami, si consideri lo stesso esempio utilizzato in precedenza. La copertura dei rami prenderà in considerazione anche il ramo incondizionato.
| Test Case | Valore di A | Uscita | Copertura della decisione | Copertura delle filiali |
|---|---|---|---|---|
| 1 | 2 | 2 | 50% | 33% |
| 2 | 6 | 18 | 50% | 67% |
Vantaggi della copertura delle filiali:
- Consente di convalidare tutti i rami del codice.
- Ti aiuta a garantire che nessun ramo porti ad anomalie nel funzionamento del programma.
- Risolve i problemi che si verificano a causa dei test di copertura delle istruzioni.
- Consente di individuare aree non testate con altri metodi di verifica.
- Consente di trovare una misura quantitativa della copertura del codice.
- La copertura dei rami ignora i rami all'interno delle espressioni booleane.
Test di copertura delle condizioni
Copertura delle condizioniLa copertura delle condizioni, o copertura delle espressioni, è un metodo di test utilizzato per testare e valutare le variabili o le sottoespressioni in un'istruzione condizionale. L'obiettivo della copertura delle condizioni è verificare i singoli risultati per ogni condizione logica. La copertura delle condizioni offre una maggiore sensibilità al flusso di controllo rispetto alla copertura delle decisioni. In questo tipo di copertura, vengono considerate solo le espressioni con operandi logici.
Ad esempio, se un'espressione contiene operazioni booleane come AND, OR o XOR, ciò indica il numero totale di possibilità. La copertura delle condizioni non garantisce la copertura completa delle decisioni.
La formula per calcolare la copertura delle condizioni:
Per un'espressione con due operandi, ci sono quattro possibili combinazioni: TT, FF, TF e FT. Considera l'input X=3, Y=4 (x b) FALSO, il che dà una copertura delle condizioni pari a 1/4 = 25%.
Copertura della macchina a stati finiti
La copertura del codice basata su macchine a stati finiti è senza dubbio il metodo di copertura più complesso. Questo perché si concentra sul comportamento del progetto. In questo metodo di copertura, è necessario analizzare quante volte vengono visitati o transitati specifici stati. Verifica inoltre quante sequenze sono incluse in una macchina a stati finiti.
Quale tipo di Code Copertura tra cui scegliere
Questa è sicuramente la risposta più difficile da dare. Per selezionare un metodo di copertura, il tester deve verificare se:
- Il codice in fase di test presenta uno o più difetti non ancora scoperti,
- costo della potenziale sanzione,
- costo della reputazione perduta,
- costo delle vendite perse e così via.
Maggiore è la probabilità che i difetti causino costosi guasti alla produzione, più severo sarà il livello di copertura da scegliere.
Code Copertura vs. copertura funzionale
| Code Copertura | Copertura funzionale |
|---|---|
| Indica quanto bene il codice sorgente è stato testato dal tuo banco di prova. | Misura il grado di copertura delle funzionalità del progetto da parte del banco di prova. |
| Non utilizza mai una specifica di progettazione. | Utilizza una specifica di progettazione. |
| Fatto dagli sviluppatori. | Fatto dai tester. |
Code Strumenti di copertura
Ecco un elenco di importanti strumenti per l'analisi della copertura del codice:
| Nome strumento | Descrizione |
|---|---|
| Cobertura | Uno strumento open source per la copertura del codice. Misura la copertura dei test strumentando una base di codice e analizzando quali righe di codice vengono eseguite e quali no durante l'esecuzione della suite di test. |
| Trifoglio | Trifoglio (OpenCloverriduce inoltre i tempi di test eseguendo solo i test che coprono il codice dell'applicazione modificato dall'ultima build. |
| Partner di sviluppo | DevPartner consente agli sviluppatori di analizzare Java codice per la qualità e la complessità del codice. |
| Emma | EMMA supporta la copertura di classi, metodi, righe e blocchi di codice di base, aggregata a livello di file sorgente, classe e metodo. |
| Kalistick | Kalistick è un'applicazione di terze parti che analizza il codice da diverse prospettive. |
| CoView e CoAnt | Uno strumento di copertura del codice per metriche, creazione di oggetti mock, testabilità del codice, copertura di percorsi e rami e altro ancora. |
| Bullseye per C++ | BullseyeCoverage è uno strumento di copertura del codice per C++ e C. |
| Sonar | Sonar è uno strumento open source per l'analisi della copertura del codice che ti aiuta a gestire la qualità del codice. |
Vantaggi e svantaggi dell'utilizzo Code Copertura
| Vantaggi | Svantaggi |
|---|---|
| Utile per valutare una misura quantitativa della copertura del codice. | Anche quando una specifica funzionalità non è implementata nella progettazione, la copertura del codice riporta comunque una copertura del 100%. |
| Consente di creare casi di test aggiuntivi per aumentare la copertura. | Non è possibile determinare se tutti i possibili valori di una funzionalità siano stati testati utilizzando la copertura del codice. |
| Consente di individuare le aree di un programma non testate da una serie di casi di prova. | Code La copertura non indica quanto e con quanta accuratezza hai coperto la tua logica. |






