Gravità vs priorità nel test del software: differenze, matrice ed esempi reali

  1. Home
  2. Blog
  3. Test del software

Test del software

Gravità vs priorità nel test del software: Differenze, matrice ed esempi reali

La gravità dice quanti danni fa un bug. La priorità indica quanto presto risolverlo. Scopri perché non sempre corrispondono, guarda tutte e quattro le combinazioni con esempi e organizza riunioni di triage che terminano con decisioni chiare.

8 min di lettura
Severità vs priorità nel test del software: differenze, matrice ed esempi reali

Punti chiave

  • La gravità misura l’impatto di un bug sul sistema. La Priorità misura l’urgenza con cui dovrebbe essere corretta.
  • I tester solitamente propongono la severità, mentre i proprietari dei prodotti solitamente decidono la priorità.
  • Sono indipendenti, quindi un errore di battitura può essere urgente e un incidente può attendere.
  • La priorità cambia con il contesto aziendale, mentre la gravità tende a rimanere stabile.

Un nome di azienda scritto in modo errato nella home page e un arresto anomalo di una funzionalità di esportazione utilizzata raramente: quale risolvere per prima? Argomentazioni come queste sono il motivo per cui i team di test separano gravità e priorità. Uno descrive il danno tecnico e l’altro descrive l’urgenza aziendale.

Senza questa distinzione, ogni bug viene etichettato come “critico”, le etichette perdono il loro significato e gli sviluppatori smettono di fidarsi di loro. Questa guida fornisce definizioni ed esempi chiari, insieme a un semplice processo per prendere queste decisioni. Gli esempi sono illustrativi e le scale esatte differiscono a seconda dei team e degli strumenti.

La risposta breve

Severità risponde: quanto gravemente questo bug influisce sul prodotto? Un arresto anomalo o una perdita di dati sono gravi, mentre un problema estetico non lo è.

Risposte Priority: quanto presto dovremmo risolverlo? Ciò dipende dai clienti interessati, dalle scadenze, dai ricavi, dall’esposizione legale e dalla reputazione del marchio.

Pensa a un ospedale. La gravità indica la gravità delle condizioni del paziente. La priorità è l’ordine in cui i pazienti vengono curati, che dipende anche da altri fattori, come chi può aspettare in sicurezza e quali risorse sono disponibili.

Gravità e priorità fianco a fianco

Aspetto Gravità Priorità
Domanda Quanto è grave l’impatto? Entro quanto tempo deve essere riparato?
Concentrarsi Effetti tecnici sul sistema Necessità aziendale e pianificazione
Solitamente impostato da Tester o ingegnere QA Proprietario del prodotto o project manager
Base Comportamento osservato Clienti, ricavi, scadenze, rischi
Cambiamenti nel tempo? Raramente Spesso
Decide Quanto è grave il difetto L’ordine della coda delle correzioni

Livelli di gravità

La maggior parte delle squadre utilizza circa quattro o cinque livelli. Ecco una scala comune:

Livello Significato Esempio
Critico (S1) Sistema inattivo, perdita di dati o violazione della sicurezza, senza soluzione alternativa Il salvataggio di una fattura elimina i record del cliente
Maggiore (S2) Una funzionalità chiave non funziona correttamente oppure esiste solo una soluzione alternativa La ricerca non restituisce risultati per nessuna query
Moderato (S3) Una funzionalità in parte fallisce ed esiste una soluzione alternativa ragionevole Il filtro della data non funziona, ma l’ordinamento per data funziona
Minore (S4) Piccolo inconveniente, funzionalità intatta Una descrizione comando viene visualizzata nella posizione sbagliata
Banale (S5) Solo cosmetici Un’icona leggermente disallineata

Livelli di priorità

Livello Significato Azione tipica
P1, urgente Deve essere risolto adesso Lascia perdere altro lavoro e considera un hotfix
P2, alto Deve essere risolto prima della prossima versione Programma nello sprint corrente
P3, medio Dovrebbe essere risolto presto Inseriscilo in uno sprint imminente
P4, basso Correggi quando c’è capacità Mantieni il backlog e rivedilo di tanto in tanto

Annota cosa significa ogni livello per la tua squadra, idealmente con un tempo di risposta target per ciascuno. “P1 significa che qualcuno inizierà entro un’ora” è molto più utile di “P1 significa molto importante”.

Le quattro combinazioni, con esempi

Il modo più chiaro per capirlo è guardare ciascuna combinazione:

Alta priorità Bassa priorità
Severità elevata Il pagamento non riesce per tutti i clienti durante una vendita Un arresto anomalo durante l’esportazione in un formato di file che quasi nessuno utilizza
Bassa gravità Il nome dell’azienda è scritto male nella home page Un errore di battitura in un vecchio articolo della guida con pochi lettori

Alta gravità, alta priorità

Il pagamento fallisce per tutti, l’azienda perde denaro di minuto in minuto e non esiste alcuna soluzione alternativa. Questo è il caso ovvio: molla tutto e aggiustalo.

Gravità alta, priorità bassa

L’applicazione si arresta in modo anomalo durante l’esportazione in un formato precedente. Tecnicamente si tratta di un grave fallimento. Ma se solo una piccola parte di utenti tocca questa funzionalità e un formato moderno funziona bene, può attendere un rilascio programmato.

Bassa gravità, alta priorità

Il nome dell’azienda è scritto male nella home page. Niente è rotto e nessun dato è a rischio. Eppure ogni visitatore lo vede, ciò danneggia la fiducia e se domani è previsto un lancio importante, è necessario risolverlo oggi.

Bassa gravità, bassa priorità

Un piccolo errore di battitura in un articolo della guida visitato raramente. Risolvilo quando è conveniente. Se il tuo arretrato è pieno di questi, valuta la possibilità di raggrupparli in un’unica attività di pulizia.

Un bug, due priorità diverse

Lo stesso difetto può meritare priorità diverse a seconda del contesto. Supponiamo che un’e-mail di conferma dell’ordine venga inviata con il logo sbagliato.

Contesto Gravità Priorità
Piccolo strumento interno Minore P4
Marchio pubblico appena rinominato, con un annuncio questa settimana Minore P1 o P2

La gravità non è cambiata perché l’impatto sul sistema è lo stesso. Ma la situazione aziendale sì. Anche il tempo può cambiare le cose. Un bug che oggi è P3 potrebbe diventare P1 la settimana prima del go-live di un cliente importante.

Suggerimento: alcuni cambiamenti nel contesto influiscono sulla gravità. Calcoli fiscali errati potrebbero sembrare moderati finché non scopri che si applicano a tutte le fatture, quindi controlla l’ampiezza del bug prima di stabilire un livello.

Chi decide severità e priorità?

  • I tester solitamente propongono la severità, poiché hanno visto il comportamento e compreso l’impatto sul sistema.
  • I proprietari o i gestori del prodotto di solito decidono la priorità, poiché valutano i clienti, le entrate e la tabella di marcia.
  • Gli sviluppatori aggiungono informazioni sulla causa, sul rischio di una soluzione e sul tempo necessario.
  • I team di supporto forniscono prove di quanti clienti sono colpiti e in che misura.

Le fonti e i team variano in base a queste responsabilità e in una piccola startup una persona può fare tutto. Ciò che conta è che tutti sappiano chi fa la decisione finale, quindi i disaccordi finiscono con una decisione.

Come valutare un bug

Quando non sei sicuro, risolvi queste domande.

Per gravità:

  1. Perde o danneggia dati o espone informazioni private?
  2. Interrompe il funzionamento di una funzione principale?
  3. Esiste una soluzione alternativa e un utente normale potrebbe trovarla?
  4. Quanta parte della funzionalità è interessata?

Per priorità:

  1. Quanti utenti sono interessati e quali?
  2. Costa denaro o crea rischi legali o di conformità?
  3. È in arrivo una release, una demo o una vendita?
  4. Quanto è visibile e potrebbe danneggiare la tua reputazione?
  5. Blocca altri lavori, come i test?

Esecuzione del triage dei bug

Il triage è la riunione regolare in cui un team esamina i nuovi bug e decide cosa succede dopo. Un formato semplice funziona bene:

  1. Prepararsi. Il tester si assicura che ogni nuovo bug abbia passaggi chiari, prove e gravità proposta.
  2. Conferma. Controlla che sia riproducibile e che non sia un duplicato.
  3. Decidi. Concorda la gravità, imposta una priorità e assegna un proprietario.
  4. Chiudi il ciclo. Rifiuta, rinvia o pianifica ogni bug e registra il motivo.

Mantienilo breve e frequente. Durante gli ultimi giorni prima del rilascio, è comune un triage quotidiano di 15 minuti. La gravità e la priorità alimentano anche la tua decisione di rilascio, quindi concorda subito delle regole, come “nessun bug S1 o S2 aperto al momento del rilascio”, come parte dei tuoi criteri di uscita.

Gravità e priorità in una segnalazione di bug

Una voce breve e chiara aiuta tutti a prendere una buona decisione:

Title:    Checkout returns error 500 when a coupon is applied
Severity: S1 - blocks purchase, no workaround
Priority: P1 proposed - sale starts Friday
Build:    2.14.0, production
Reach:    All customers using a coupon (around 30% of orders)
Steps:    1. Add an item  2. Apply SAVE10  3. Click Pay
Result:   Error 500 and no order is created
Expected: Order is created with the discount applied

Queste cifre sono esempi. In un rapporto reale, utilizza i numeri misurati dai tuoi registri e spiega il tuo ragionamento. Scopri di più nella nostra guida su come scrivere una segnalazione di bug. È utile anche sapere cosa significano i codici di errore, quindi tieni a portata di mano il nostro trucco sui codici di stato HTTP.

Errori comuni

  • Trattarli come lo stesso campo. Se i due corrispondono sempre, stai perdendo informazioni utili.
  • Aumentare la gravità per attirare l’attenzione. Una volta che tutto è critico, niente lo è.
  • Lasciare che siano i tester a stabilire da soli le priorità. Raramente hanno il quadro completo dell’azienda.
  • Non rivedere mai il backlog. Le priorità diventano obsolete, quindi ricontrolla regolarmente i vecchi bug.
  • Non esistono definizioni scritte. Senza di esse, le persone applicano le etichette in modo diverso e si finisce per discutere sulle parole.
  • Ignorare gli accumuli di problemi di bassa gravità. Cinquanta problemi minori possono far sembrare un prodotto rotto, anche se nessuno di essi è grave da solo.

Considerazioni finali

Mantieni separate le due domande: quanto è grave la situazione e quanto presto deve essere risolta? Concordare definizioni scritte per ciascun livello e chiarire chi decide. Come passaggio successivo, prendi i dieci bug più vecchi nel tuo tracker e rivalutali utilizzando le domande sopra. Probabilmente ne troverai alcuni che dovrebbero essere spostati e altri che dovrebbero essere chiusi.

Domande frequenti

Qual è la differenza tra gravità e priorità?

La gravità indica quanto un difetto danneggia il sistema. La priorità è quanto urgentemente dovrebbe essere risolto. Uno riguarda l’impatto tecnico e l’altro riguarda l’urgenza aziendale.

Un bug può avere bassa gravità e alta priorità?

SÌ. Un nome di un’azienda errato nella home page non comporta alcun problema, ma è altamente visibile, quindi un team potrebbe volerlo correggere immediatamente.

Un bug può avere un’elevata gravità e una bassa priorità?

SÌ. Un arresto anomalo di una funzionalità legacy utilizzata raramente è tecnicamente grave, ma con pochi utenti interessati e una buona alternativa, può aspettare.

Chi stabilisce la gravità e la priorità?

I tester di solito propongono la severità e i proprietari o i manager del prodotto di solito decidono la priorità. Molti team finalizzano entrambi insieme durante una riunione di valutazione dei bug.

Quale dovrebbe essere risolto per primo, alta gravità o alta priorità?

Risolvi l’ordine di priorità, poiché la priorità è ciò che decide la coda. La gravità è un input importante, tuttavia, quindi i bug gravi di solito ricevono un’alta priorità.

Continua a imparare

Lavora con Stack Quora

Hai bisogno di aiuto con test, WordPress o SEO?

Aiutiamo i team a fornire software migliore e a far crescere i loro siti. Raccontaci a cosa stai lavorando e ti suggeriremo chiaramente il prossimo passo.

Continua a leggere

Altre guide su test, intelligenza artificiale e sviluppo moderno

Ti è piaciuto questo articolo? Scegli un argomento e passa direttamente ai nostri tutorial più recenti.

Intelligenza artificiale

Spiegazione delle allucinazioni dell'intelligenza artificiale: perché i modelli linguistici inventano le cose e come ridurle

Spiegazione delle allucinazioni dell'intelligenza artificiale: cosa sono, perché i modelli linguistici le producono, tipi comuni, come ridurle con b…

Leggi l'articolo →
DevOps

Spiegazione delle variabili d'ambiente: file .env, segreti e configurazione eseguiti correttamente

Variabili d'ambiente spiegate con esempi Python che abbiamo eseguito: lettura e impostazione, perché ogni valore è una stringa, file .env, ereditari…

Leggi l'articolo →
Sviluppo software

Spiegazione della limitazione della velocità API: algoritmi, intestazioni e gestione degli errori 429

La limitazione della velocità dell'API spiegata con una simulazione che abbiamo eseguito: bucket di token, finestra fissa, finestra scorrevole, risp…

Leggi l'articolo →
Automazione dei test

Derisione in Python: unittest.mock, patch e gli errori che fanno mentire i test

Mocking in Python con unittest.mock, testato: Mock e return_value, side_effect, patch dove viene utilizzato un nome, specifiche e autospec, date moc…

Leggi l'articolo →
Test del software

Spiegazione della copertura del codice: copertura di linea o di filiale e cosa significa realmente il 100%.

Copertura del codice spiegata con una vera esecuzione di cover.py: copertura di linea, ramo e condizione, lettura di un rapporto, perché la copertur…

Leggi l'articolo →
Database e SQL

DELETE vs TRUNCATE vs DROP in SQL: differenze, rollback e quando utilizzarli

DELETE vs TRUNCATE vs DROP spiegato con SQL testato: cosa rimuove, rollback, trigger, reimpostazione dell'identità, velocità e come differiscono Pos…

Leggi l'articolo →
Database e SQL

Spiegazione delle visualizzazioni SQL: crea, utilizza ed evita le insidie, con esempi

Viste SQL spiegate con le query che abbiamo eseguito: creazione di una vista, risultati in tempo reale, nascondere colonne, prestazioni, viste aggio…

Leggi l'articolo →
Sviluppo software

Interfaccia TypeScript e tipo: differenze reali, testate con il compilatore

Interfaccia TypeScript vs tipo, verificata con il vero compilatore: cosa possono fare entrambi, cosa può fare solo uno, fusione delle dichiarazioni,…

Leggi l'articolo →
Sviluppo software

Spiegazione di Python *args e **kwargs: funzioni flessibili con esempi chiari

Python *args e **kwargs spiegati con il codice che abbiamo eseguito: compressione e decompressione, ordine dei parametri, argomenti solo per parole …

Leggi l'articolo →
Sviluppo software

Funzioni Lambda Python: sintassi, usi reali e quando non usarli

Funzioni lambda Python spiegate con il codice che abbiamo eseguito: sintassi, ordinamento con chiave, mappa e filtro, chiusure, trap dell'associazio…

Leggi l'articolo →
Intelligenza artificiale

Cosa sono gli agenti AI? Come funzionano, con un semplice ciclo di agenti che puoi eseguire

Cosa sono gli agenti IA? Una semplice guida al ciclo dell'agente, agli strumenti, alla memoria e ai guardrail, con un piccolo ciclo Python che abbia…

Leggi l'articolo →
DevOps

Monitoraggio vs osservabilità: la vera differenza, con log, metriche e tracce

Spiegazione del monitoraggio e dell'osservabilità: errori noti e sconosciuti, log, metriche e tracce, una procedura dettagliata sugli incidenti di p…

Leggi l'articolo →
DevOps

Volumi Docker e montaggi di associazione: mantenere i dati del contenitore nel modo giusto

Volumi Docker e montaggi di collegamento spiegati: perché i dati del contenitore scompaiono, volumi denominati, montaggi di collegamento, tmpfs, ese…

Leggi l'articolo →
Automazione dei test

TDD vs BDD: differenze chiave, una caratteristica costruita in entrambi i modi e quando utilizzarli ciascuno

TDD vs BDD spiegato con una funzione di sconto costruita in entrambi i modi: refactoring rosso-verde con il codice che abbiamo eseguito, scenari "Da…

Leggi l'articolo →
Test del software

Test di accettazione da parte dell'utente (UAT): processo, lista di controllo ed esempi reali

Spiegazione del test di accettazione dell'utente: chi lo esegue, in cosa differisce dal QA, un processo in sette fasi, un modello di test case UAT, …

Leggi l'articolo →
Database e SQL

Spiegazione dei valori SQL NULL: IS NULL, COALESCE, NULLIF e le trappole da evitare

Valori SQL NULL spiegati con le query che abbiamo eseguito: logica a tre valori, IS NULL, COALESCE, NULLIF, come aggregazioni, join e ordinamento tr…

Leggi l'articolo →
Database e SQL

Istruzione SQL CASE WHEN: sintassi, esempi reali ed errori comuni

SQL CASE WHEN spiegato con le query che abbiamo eseguito: moduli semplici e cercati, ordine delle condizioni, pivot con SUM, trucchi COUNT, ordiname…

Leggi l'articolo →
Sviluppo software

Cos'è il JWT? Token Web JSON spiegati con un esempio funzionante

Cos'è il JWT? Spiegazione dei token Web JSON: le tre parti, un token creato e manomesso nel codice che abbiamo eseguito, JWT e sessioni, archiviazio…

Leggi l'articolo →
Sviluppo software

Spiegazione del loop di eventi JavaScript: stack di chiamate, microtask e timer con esempi

Il ciclo di eventi JavaScript spiegato con il codice che abbiamo eseguito: stack di chiamate, code di attività e microtask, perché setTimeout 0 non …

Leggi l'articolo →
Sviluppo software

Spiegazione dei generatori Python e del rendimento: risparmia memoria con esempi reali

Generatori Python e rendimento spiegati con il codice che abbiamo eseguito: come vengono messi in pausa e ripresi, misurato il risparmio di memoria,…

Leggi l'articolo →
Intelligenza artificiale

Cosa sono gli incorporamenti? I vettori e la somiglianza del coseno spiegati semplicemente

Cosa sono gli incorporamenti? Una guida in linguaggio semplice ai vettori, alla similarità del coseno e alla ricerca semantica, con un piccolo esemp…

Leggi l'articolo →
DevOps

Distribuzione blu-verde rispetto a quella canaria: differenze, compromessi e come scegliere

Spiegazione della distribuzione blu-verde e canary: come funziona ciascuna, costi, rischi e rollback, bucket utente stabile che abbiamo testato, mig…

Leggi l'articolo →
Automazione dei test

Test instabili: quali sono le cause e come risolverli definitivamente

Test instabili spiegati con demo che abbiamo eseguito: le cause principali, come confermarne e diagnosticarne uno, soluzioni adeguate per tempistich…

Leggi l'articolo →
Test del software

Test di carico e test di stress: differenze, metriche ed esempi k6

Spiegazione del test di carico e dello stress test: cosa dimostra ciascuno, test di picco e di assorbimento, le metriche che contano, perché le medi…

Leggi l'articolo →
Test del software

Caso di test e scenario di test: differenze chiave, esempi e quando utilizzarli

Spiegazione del caso di test e dello scenario di test: definizioni chiare, una tabella affiancata, una funzione di reimpostazione della password pre…

Leggi l'articolo →
Database e SQL

Ottimizzazione delle query SQL: leggi i piani di esecuzione e correggi query lente, con tempistiche

Ottimizzazione delle query SQL testata su un milione di righe: leggi i piani di esecuzione, aggiungi gli indici corretti, correggi filtri non aggior…

Leggi l'articolo →
Database e SQL

SQL UNION vs UNION ALL: differenze, esempi e prestazioni testate

SQL UNION vs UNION ALL spiegati con le query che abbiamo eseguito: duplicati, regole seguite da entrambi, un vero bug di dati, prestazioni misurate,…

Leggi l'articolo →
Sviluppo software

Tutorial sull'API di recupero JavaScript: GET, POST, gestione degli errori e timeout

Un tutorial sull'API JavaScript Fetch testato su un server locale: GET e POST, perché 404 non genera eccezioni, un helper riutilizzabile, stringhe d…

Leggi l'articolo →
Sviluppo software

Gestione dei file Python: lettura, scrittura, CSV, JSON e pathlib con esempi

Gestione dei file Python spiegata con il codice che abbiamo eseguito: modalità aperte, con, lettura di file di grandi dimensioni, CSV, JSON, pathlib…

Leggi l'articolo →
Sviluppo software

Classi e oggetti Python: tutorial OOP con esempi reali

Classi e oggetti Python spiegati con il codice che abbiamo eseguito: __init__, metodi, attributi di classe e istanza, ereditarietà, proprietà, metod…

Leggi l'articolo →
Intelligenza artificiale

Che cos'è un modello linguistico di grandi dimensioni? Come funzionano i LLM, spiegato senza esagerazioni

Cos’è un modello linguistico ampio? LLM spiegati in un linguaggio semplice: token, incorporamenti, attenzione, formazione, finestre di temperatura e…

Leggi l'articolo →
DevOps

Comandi Linux per principianti: la guida essenziale del terminale con esempi

Comandi Linux per principianti, raggruppati per attività: navigazione, file, visualizzazione log, grep, pipe, permessi, processi e archivi, con un e…

Leggi l'articolo →
Automazione dei test

Selenio vs drammaturgo: differenze chiave, codice a confronto e quale scegliere

Selenium vs Playwright a confronto: architettura, attesa, supporto per browser e linguaggio, debug, lo stesso test in entrambi gli strumenti, consig…

Leggi l'articolo →
Test del software

Partizionamento di equivalenza: tecnica di progettazione dei test spiegata con esempi pratici

Spiegazione del partizionamento di equivalenza: come trovare partizioni valide e non valide, esempi funzionanti per età, password e coupon, test che…

Leggi l'articolo →
Test del software

Gravità vs priorità nel test del software: differenze, matrice ed esempi reali

Spiegazione della gravità e della priorità nei test del software: definizioni chiare, una matrice a quattro vie con esempi, scale di livello, chi im…

Leggi l'articolo →
Database e SQL

Esercitazione sulle sottoquery SQL: tipi, sottoquery correlate ed EXISTS con esempi

Un tutorial sulle sottoquery SQL con le query che abbiamo eseguito: sottoquery scalari, IN, FROM e SELECT, sottoquery correlate, EXISTS, trap NOT IN…

Leggi l'articolo →
Database e SQL

Spiegazione di transazioni SQL e ACID: COMMIT, ROLLBACK e livelli di isolamento

Transazioni SQL e ACID spiegate con un bonifico bancario eseguito: COMMIT, ROLLBACK, punti di salvataggio, blocchi, livelli di isolamento, letture s…

Leggi l'articolo →
Sviluppo software

Git merge vs rebase: differenze, esempi e quando usare ciascuno

Git merge vs rebase spiegato con output reale del log, una tabella di confronto, la regola d'oro del rebase e un flusso di lavoro sicuro per i team.

Leggi l'articolo →
Sviluppo software

List comprehension in Python: sintassi, esempi e quando evitarla

List comprehension in Python spiegata: sintassi, filtri, if-else, cicli annidati, tempi misurati e i casi in cui un normale ciclo for è meglio.

Leggi l'articolo →
Database e SQL

SQL JOIN spiegati con esempi (Inner, Left, Right, Full)

Capisci i JOIN SQL passo dopo passo con tabelle e query di esempio: INNER, LEFT, RIGHT, FULL, CROSS e SELF, con errori comuni e consigli sulle prest…

Leggi l'articolo →