Sobes.tech
Junior

Nuo ko priklauso klaidų rimties lygio (sunkumo) laipsnio nustatymas?

sobes.tech AI

Atsakymas iš AI

Sunkumo lygio (severity) gradacija priklauso nuo defekto poveikio programinės įrangos funkcionalumui, stabilumui ar saugumui. Vertinama potenciali žala vartotojui ar verslui.

Pagrindiniai veiksniai, lemiantys severity:

  • Funkcionalumo kritiškumas: Kiek svarbi yra paveikta funkcija programos veikimui.
  • Poveikis pagrindinėms operacijoms: Trukdo ar ne defektas vykdyti pagrindines užduotis.
  • Duomenų ar pinigų praradimas: Ar defektas gali sukelti duomenų nutekėjimą ar praradimą, taip pat finansinius nuostolius.
  • Sistema prieinamumas: Ar defektas visiškai ar iš dalies blokuoja programos naudojimą.
  • Atsarginis būdas: Ar yra alternatyvus būdas atlikti veiksmą.
  • Pasikartojimo dažnumas: Kaip dažnai pasireiškia defektas (nors tai labiau prioritetą lemiantis veiksnys, bet gali turėti įtakos ir severity, jei defektas kritinis ir nuolat pasireiškia).

Tipiniai severity lygiai (gali skirtis priklausomai nuo projekto ir įmonės):

  • Blocker: Produktas visiškai neveikia, kritiškai svarbi funkcija užblokuota, neįmanoma tęsti darbo ar testavimo. Duomenų ar finansinių nuostolių garantija.
  • Critical: Kritiškai svarbi funkcija neveikia arba veikia neteisingai. Pagrindinės operacijos rimtai sutrikusios, bet yra galimybė dalinai dirbti. Nėra galimybės apeiti.
  • Major: Svarbi, bet ne kritinė funkcija neveikia arba veikia neteisingai. Gali būti pažeidimų pagrindinėse operacijose, bet yra apeitis. Duomenų praradimas galimas, bet nėra kritiškas.
  • Minor: Nedidelis funkcionalumo pažeidimas arba patogumo problemos. Nėra įtakos pagrindinėms operacijoms. Yra paprasta apeitis.
  • Trivial: Kosmetiniai defektai, klaidos tekste, neturintys įtakos funkcionalumui.
// Pavyzdys, kaip nustatyti severity priklausomai nuo defekto tipo ir poveikio
enum DefectSeverity {
    case blocker, critical, major, minor, trivial
}

func determineSeverity(defectFunctionality: FunctionalityLevel, impact: ImpactLevel) -> DefectSeverity {
    switch (defectFunctionality, impact) {
    case (.critical, .blocksAll): return .blocker // Kritinė funkcija, visiškai blokuoja
    case (.critical, .majorIssue): return .critical // Kritinė funkcija, rimti problemos
    case (.essential, .blocksAll): return .critical // Pagrindinė funkcija, visiškai blokuoja
    case (.essential, .majorIssue): return .major // Pagrindinė funkcija, rimti problemos
    case (_, .minorIssue): return .minor // Maži problemos
    case (_, .cosmetic): return .trivial // Kosmetiniai problemos
    default: return .minor // Numatytoji reikšmė
    }
}

enum FunctionalityLevel {
    case critical, essential, minor
}

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

// Naudojimas:
let severity = determineSeverity(defectFunctionality: .critical, impact: .blocksAll)
print(severity) // Išves: blocker