Sobes.tech
Junior

Na čem závisí gradace úrovně závažnosti chyb (severita)?

sobes.tech AI

Odpověď od AI

Gradace závažnosti chyb (severity) závisí od dopadu vady na funkčnost, stabilitu nebo bezpečnost softwarového produktu. Hodnotí se potenciální škoda pro uživatele nebo podnikání.

Hlavní faktory ovlivňující závažnost:

  • Kritičnost funkce: Jak důležitá je dotčená funkce pro chod aplikace.
  • Vliv na hlavní operace: Zabraňuje vada provádění klíčových úkolů.
  • Ztráta dat nebo finančních prostředků: Může vada vést ke ztrátě nebo úniku dat, případně k finančním ztrátám.
  • Dostupnost systému: Zcela nebo částečně blokuje použití aplikace.
  • Možnost obcházení: Existuje-li alternativní způsob provedení akce.
  • Frekvence výskytu: Jak často se vada projevuje (ačkoliv je to spíše faktor priority, může ovlivnit i závažnost, pokud je vada kritická a opakovaná).

Typické úrovně závažnosti (mohou se lišit podle projektu a společnosti):

  • Blocker: Produkt je zcela nepoužitelný, kriticky důležitá funkce je zablokována, nelze pokračovat v práci nebo testování. Ztráta dat nebo finanční ztráty jsou zaručené.
  • Critical: Kritická funkce nefunguje nebo funguje nesprávně. Hlavní operace jsou vážně narušeny, ale je možná částečná funkčnost. Není k dispozici obcházení.
  • Major: Důležitá, ale ne kritická funkce nefunguje nebo funguje nesprávně. Mohou nastat narušení hlavních operací, ale je k dispozici obcházení. Může dojít ke ztrátě dat, ale není kritická.
  • Minor: Nezávažná porucha funkčnosti nebo problémy s použitelností. Neovlivňuje hlavní operace. Je k dispozici jednoduché obcházení.
  • Trivial: Kosmetické vady, chyby v textu, které neovlivňují funkčnost.
// Příklad určení závažnosti v závislosti na typu vady a jejím dopadu
enum DefectSeverity {
    case blocker, critical, major, minor, trivial
}

func determineSeverity(defectFunctionality: FunctionalityLevel, impact: ImpactLevel) -> DefectSeverity {
    switch (defectFunctionality, impact) {
    case (.critical, .blocksAll): return .blocker // Kritická funkce, úplné blokování
    case (.critical, .majorIssue): return .critical // Kritická funkce, vážné problémy
    case (.essential, .blocksAll): return .critical // Hlavní funkce, úplné blokování
    case (.essential, .majorIssue): return .major // Hlavní funkce, vážné problémy
    case (_, .minorIssue): return .minor // Menší problémy
    case (_, .cosmetic): return .trivial // Kosmetické problémy
    default: return .minor // Výchozí hodnota
    }
}

enum FunctionalityLevel {
    case critical, essential, minor
}

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

// Použití:
let severity = determineSeverity(defectFunctionality: .critical, impact: .blocksAll)
print(severity) // Vypíše: blocker