Copertura dei test nel testing del software: come misurarla
โก Riepilogo intelligente
La copertura dei test nel testing del software misura la quantitร di un'applicazione effettivamente testata da un insieme di test. Rivela requisiti, percorsi del codice e rischi non testati, consentendo ai team di aggiungere casi mirati e rilasciare con una sicurezza misurabile.

Cos'รจ la copertura del test?
La copertura del test รจ definita come una metrica nel test del software che misura la quantitร di test eseguiti da una serie di test. Comprenderร la raccolta di informazioni su quali parti di un programma vengono eseguite durante l'esecuzione della suite di test per determinare quali rami delle istruzioni condizionali sono stati presi.
In termini semplici, รจ una tecnica per garantire che i test stiano testando il tuo codice o la quantitร di codice che hai esercitato eseguendo il test.
A cosa serve la copertura dei test?
In un progetto reale, la copertura dei test supporta quattro attivitร pratiche:
- Trovare l'area di un requisito non implementato da una serie di casi di test
- Aiuta a creare casi di test aggiuntivi per aumentare la copertura
- Identificare una misura quantitativa della copertura del test, che รจ un metodo indiretto per il controllo di qualitร
- Identificare casi di test privi di significato che non aumentano la copertura
Vantaggi della copertura dei test nell'ingegneria del software
Tali attivitร si traducono in vantaggi ingegneristici concreti.
- Puรฒ garantire la qualitร del test
- Puรฒ aiutare a identificare quali parti del codice sono state effettivamente toccate per il rilascio o la correzione
- Puรฒ individuare tutti i punti decisionali e i percorsi nella tua applicazione che non sono stati testati, consentendoti di aumentare la copertura dei test.
- Prevenire difetto dispersione
- Tempi, portata e costi possono essere tenuti sotto controllo
- Prevenzione dei difetti nelle fasi iniziali del ciclo di vita del progetto
- Le lacune nei requisiti, nei casi di test e nei difetti a livello di unitร e di codice possono essere trovate in modo semplice
Tipi di copertura dei test
La copertura non รจ mai un singolo numero. Squadre tracEsistono diversi tipi contemporaneamente, perchรฉ ognuno risponde a una domanda diversa sulla stessa suite. La tabella seguente raggruppa i tipi che si incontrano piรน spesso.
| Tipo di copertura | Cosa misura | migliori Usato per |
|---|---|---|
| Copertura della dichiarazione (linea) | Le righe eseguibili vengono eseguite almeno una volta | Test unitari e audit del codice legacy |
| Copertura della filiale o della decisione | Esito vero o falso di ogni decisione | Logica condizionale e di validazione |
| Copertura delle condizioni | Ogni sottoespressione booleana come vera e come falsa | Espressioni composte AND o OR |
| Copertura del percorso | Percorsi unici intrapresi attraverso un modulo | Flussi finanziari e di sicurezza critici |
| Copertura funzionale | Funzioni o metodi richiamati dai test | API e livelli di servizio |
| Copertura dei requisiti | Requisiti mappati ad almeno un test | Accettazione e consensotracfirma finale |
| Copertura del rischio | Sono state individuate le aree ad alto rischio in cui รจ stata effettuata un'esercitazione. | Cicli di rilascio brevi |
I primi cinque tipi sono misure a livello di codice e appartengono a test della scatola bianca, mentre i requisiti e la copertura del rischio si collocano a livello del piano di test.
Quali sono le principali differenze tra Code Copertura e copertura dei test?
Code copertura e la copertura dei test sono tecniche di misurazione che consentono di valutare la qualitร del codice dell'applicazione.
Ecco alcune differenze critiche tra le cabine di questi metodi di copertura:
| Scheda Sintetica | Code Copertura | Copertura del test |
|---|---|---|
| Definizione | Code Il termine "copertura" viene utilizzato quando il codice dell'applicazione viene eseguito durante l'esecuzione dell'applicazione stessa. | Per copertura del test si intende il piano di test complessivo. |
| Goal | Code Le metriche di copertura possono aiutare il team a monitorare i propri test automatizzati. | La copertura del test fornisce dettagli sul livello a cui รจ stata testata la codifica scritta di un'applicazione. |
| Sottotipi | Code copertura suddivisa in sottotipi come copertura delle dichiarazioni, copertura delle condizioni, copertura delle filiali, Togglcopertura e, copertura FSM. | Nessun sottotipo di metodo di copertura del test. |
Formula di copertura del test
Per calcolare la copertura del test, รจ necessario seguire i passaggi indicati di seguito:
Passo 1) Contare Y, il numero totale di righe di codice nel pezzo di software che stai utilizzando analisi
Passo 2) Contare X, il numero di righe di codice eseguite attualmente da tutti i casi di test
Ora devi trovare (X diviso per Y) moltiplicato per 100. Il risultato di questo calcolo รจ la percentuale di copertura del test.
Per esempio:
Se il numero di righe di codice in un componente di sistema รจ 500 e il numero di righe eseguite in tutti i casi di test esistenti รจ 50, allora la copertura dei test รจ:
(50 / 500) * 100 = 10% // executed lines divided by total lines
Esempi di copertura del test
La percentuale da sola non racconta mai tutta la storia, come dimostrano gli esempi seguenti.
Esempio 1:
Ad esempio, se l'oggetto da testare รจ un "coltello", รจ necessario concentrarsi sulla sua capacitร di tagliare frutta e verdura con precisione. Tuttavia, ci sono anche altri aspetti da considerare, come la comoditร d'uso per l'utente.
Esempio 2:
Ad esempio, se si desidera testare l'applicazione Blocco note, verificarne le funzionalitร essenziali รจ fondamentale. Tuttavia, รจ necessario considerare anche altri aspetti, come il corretto funzionamento dell'applicazione Blocco note durante l'utilizzo di altre applicazioni, la facilitร d'uso da parte dell'utente, il corretto funzionamento in caso di blocchi o arresti anomali dovuti a manovre insolite, ecc.
Tecniche di copertura dei test
Entrambi gli esempi portano alla stessa conclusione: raggiungere un obiettivo di copertura dipende meno dallo scrivere piรน test e piรน dallo scegliere la giusta tecnica di progettazione dei test. Le tecniche seguenti ampliano la copertura mantenendoping la suite รจ piccola.
- Analisi dei valori limite: Seleziona gli input ai margini di ciascun intervallo valido, dove i difetti si concentrano maggiormente. Vedi analisi del valore limite per i casi trattati.
- Partizionamento di equivalenza: Raggruppa gli input che l'applicazione tratta in modo identico, in modo che un singolo caso possa rappresentare in modo sicuro un'intera classe di valori.
- Test della tabella decisionale: Rappresenta combinazioni di condizioni e i relativi risultati attesi all'interno di un'unica griglia.
- Test di transizione di stato: Esercita ogni movimento valido e non valido tra gli stati dell'applicazione.
- Test del percorso di base: Ricava l'insieme minimo di percorsi indipendenti dal grafo del flusso di controllo.
- Test basati sul rischio: Classifica le funzionalitร in base all'impatto sul business, dando prioritร a quelle a piรน alto rischio.
- Test esplorativi: Svela lacune che i casi preconfezionati e i report di copertura mediatica non rivelano mai.
Come si puรฒ raggiungere una copertura adeguata dei test?
Una volta scelte le tecniche, quattro percorsi consolidati garantiscono la copertura.
- La copertura dei test puรฒ essere effettuata esercitando tecniche di revisione statica come revisioni tra pari, ispezioni e procedure dettagliate
- Trasformando i difetti ad hoc in casi di test eseguibili
- A livello di codice o di test unitario, la copertura del test puรฒ essere ottenuta avvalendosi degli strumenti automatizzati di copertura del codice o di test unitario
- La copertura dei test funzionali puรฒ essere effettuata con l'aiuto di strumenti di gestione dei test adeguati
Come migliorare la copertura dei test
Stabilire la copertura รจ il punto di partenza; aumentarla รจ una procedura ripetibile. Seguite questa sequenza all'inizio di ogni ciclo di rilascio.
- Stabilire il valore di riferimento attuale. Esegui un report di copertura e registra separatamente la copertura di dichiarazioni, rami e requisiti, in modo che le lacune rimangano visibili per ciascun modulo anzichรฉ essere nascoste all'interno di una media a livello di progetto.
- Mappare i test ai requisiti. Costruire un tracGriglia di fattibilitร che collega ogni requisito ad almeno un caso di test. Ogni riga vuota indica una lacuna confermata, non un sospetto.
- Classifica i moduli in base al rischio. La logica relativa a pagamenti, autenticazione e migrazione dei dati merita una trattazione molto piรน approfondita di una schermata di aiuto statica, quindi investite il budget dove un eventuale errore avrebbe le conseguenze piรน gravi.
- Aggiungere i casi negativi e i casi limite. Input vuoti, valori sovradimensionati, timeout di rete ed errori di autorizzazione raggiungono rami che i test di percorso normale non toccano mai.
- Sovrapponi i livelli di test. Combinare unit test, test d'integrazionee controlli end-to-end, perchรฉ ogni livello copre ciรฒ che gli altri, per loro natura, non possono coprire.
- Automatizzare la suite di test di regressione. Promoi casi stabili in test di automazione e eseguirli all'interno del Conduttura CI/CD dopo ogni commit.
- Ritirare i casi ridondanti. Elimina i test duplicati che aggiungono minuti di esecuzione senza aggiungere una singola riga di codice non coperta.
- RevOsserva l'andamento ad ogni sprint. Traccoperture k accanto a densitร dei difettiUn aumento delle perdite di segnale a fronte di una copertura uniforme รจ un segnale precoce di un punto cieco.
โ ๏ธ Attenzione: Non bisogna considerare il 100% come obiettivo. Una suite di controlli all'85% con asserzioni solide protegge una release molto meglio di un 95% di controlli superficiali che eseguono codice senza verificarne il risultato.
Svantaggi della copertura dei test
La copertura rimane preziosa, ma presenta dei limiti che รจ opportuno menzionare prima di riportare qualsiasi percentuale.
- La maggior parte delle attivitร nella copertura del test sono manuali poichรฉ non sono presenti strumenti da automatizzare. Pertanto, รจ necessario un grande impegno per analizzare i requisiti e creare casi di test.
- La copertura del test consente di contare le funzionalitร e quindi di effettuare misurazioni rispetto a diversi test. Tuttavia cโรจ sempre spazio per errori di giudizio.
