Sobes.tech
Junior

Da cosa dipende la classificazione del livello di gravità degli errori (gravità)?

sobes.tech AI

Risposta dell'AI

La gradazione del livello di gravità degli errori (severity) dipende dall'impatto del difetto sulla funzionalità, stabilità o sicurezza del prodotto software. Si valuta il danno potenziale per l'utente o il business.

I principali fattori che influenzano la severity:

  • Criticità della funzionalità: Quanto è importante la funzione interessata per il funzionamento dell'applicazione.
  • Impatto sulle operazioni principali: Se il difetto impedisce l'esecuzione di compiti chiave.
  • Perdita di dati o fondi: Se il difetto può portare a fuga o perdita di dati, nonché perdite finanziarie.
  • Disponibilità del sistema: Se il difetto blocca completamente o parzialmente l'uso dell'applicazione.
  • Possibilità di soluzione alternativa: Se esiste un modo alternativo per eseguire l'azione.
  • Frequenza di manifestazione: Quanto spesso si manifesta il difetto (anche se questo è più un fattore di priorità, può influenzare anche la severity se il difetto è critico e costante).

I livelli tipici di severity (che possono variare a seconda del progetto e dell'azienda):

  • Blocker: Il prodotto è completamente inutilizzabile, funzionalità criticamente importante bloccata, impossibile continuare il lavoro o i test. Perdita di dati o perdite finanziarie garantite.
  • Critical: La funzionalità criticamente importante non funziona o funziona in modo errato. Le operazioni principali sono gravemente compromesse, ma è possibile un lavoro parziale. Non c'è una via di fuga.
  • Major: Funzionalità importante ma non critica non funziona o funziona in modo errato. Potrebbero esserci interruzioni nelle operazioni principali, ma esiste una via di fuga. Possono verificarsi perdite di dati, ma non critiche.
  • Minor: Interruzioni minori nella funzionalità o problemi di usabilità. Non influisce sulle operazioni principali. Esiste una soluzione semplice.
  • Trivial: Difetti cosmetici, errori nel testo, che non influenzano la funzionalità.
enum DefectSeverity {
    case blocker, critical, major, minor, trivial
}

func determineSeverity(defectFunctionality: FunctionalityLevel, impact: ImpactLevel) -> DefectSeverity {
    switch (defectFunctionality, impact) {
    case (.critical, .blocksAll): return .blocker // Funzione critica, blocca completamente il lavoro
    case (.critical, .majorIssue): return .critical // Funzione critica, problemi gravi
    case (.essential, .blocksAll): return .critical // Funzione principale, blocca completamente il lavoro
    case (.essential, .majorIssue): return .major // Funzione principale, problemi gravi
    case (_, .minorIssue): return .minor // Problemi minori
    case (_, .cosmetic): return .trivial // Problemi cosmetici
    default: return .minor // Valore di default
    }
}

enum FunctionalityLevel {
    case critical, essential, minor
}

enum ImpactLevel {
    case blocksAll, majorIssue, minorIssue, cosmetic
}

// Uso:
let severity = determineSeverity(defectFunctionality: .critical, impact: .blocksAll)
print(severity) // Mostrerà: blocker