Sobes.tech
Junior

Ի՞նչ է կախված սխալների լրջության մակարդակի դասակարգումից (խստություն):

sobes.tech AI

Պատասխան AI-ից

Խոշորության աստիճանի (severity) դասակարգումը կախված է թերության ազդեցությունից ծրագրային արտադրանքի գործառույթության, կայունության կամ անվտանգության վրա։ Հաշվարկվում է օգտվողի կամ բիզնեսի համար հնարավոր վնասը։

Հիմնական գործոնները, որոնք ազդում են severity-ի վրա՝

  • Գործառույթի կարևորությունը: Ինչքան կարևոր է առնչվող գործառույթը ծրագրի աշխատանքի համար։
  • Հիմնական գործողությունների վրա ազդեցությունը: Թերությունը խոչընդոտում է հիմնական խնդիրների կատարմանը։
  • Տվյալների կամ գումարի կորուստ: Կարող է թերությունը հանգեցնել տվյալների արտահոսքի կամ կորուստի, ինչպես նաև ֆինանսական վնասների։
  • Համակարգի հասանելիությունը: Թեև ամբողջությամբ կամ մասնակիորեն խոչընդոտում է ծրագրի օգտագործումը։
  • Ալտերնատիվ ճանապարհի առկայությունը: Կա արդյոք այլընտրանքային միջոց գործողությունը կատարելու համար։
  • Հաճախականությունը: Ինչքան հաճախ է հայտնվում թերությունը (սակայն սա ավելի շատ առաջնահերթության գործոն է, բայց կարող է ազդել նաև severity-ի վրա, եթե թերությունը критիկական է և մշտական)։

Տիպիկ severity մակարդակները (կարող են տարբեր լինել նախագծից և ընկերությունից՝

  • Blocker: Ապրանքը ամբողջությամբ անօգտագործելի է, խիստ կարևոր գործառույթը խոչընդոտված է, անհնար է շարունակել աշխատանքը կամ թեստավորումը։ Տվյալների կամ գումարի կորուստը երաշխավորված է։
  • Critical: Կրիտիկական գործառույթը չի աշխատում կամ սխալ է աշխատում։ Հիմնական գործողությունները լուրջ խախտված են, բայց հնարավոր է մասնակի աշխատանք։ Չկա ճանապարհի շրջանցում։
  • Major: Կարևոր, բայց ոչ կրիտիկական գործառույթը չի աշխատում կամ սխալ է աշխատում։ Մեծ հավանականություն կա հիմնական գործողությունների խախտման, բայց կա շրջանցման հնարավորություն։ Տվյալների կորուստը հնարավոր է, բայց ոչ կրիտիկական։
  • Minor: Աննշան խախտում կամ օգտագործման հարմարության խնդիր։ Չի ազդում հիմնական գործողությունների վրա։ Կա պարզ շրջանցման միջոց։
  • Trivial: Կոսմետիկ թերություններ, տեքստի սխալներ, որոնք չեն ազդում գործառույթության վրա։
// Օրինակ՝ severity որոշելու համար՝ կախված թերության տեսակից և նրա ազդեցությունից
enum DefectSeverity {
    case blocker, critical, major, minor, trivial
}

func determineSeverity(defectFunctionality: FunctionalityLevel, impact: ImpactLevel) -> DefectSeverity {
    switch (defectFunctionality, impact) {
    case (.critical, .blocksAll): return .blocker // Կրիտիկական գործառույթ, ամբողջական խոչընդոտ
    case (.critical, .majorIssue): return .critical // Կրիտիկական գործառույթ, լուրջ խնդիրներ
    case (.essential, .blocksAll): return .critical // Հիմնական գործառույթ, ամբողջական խոչընդոտ
    case (.essential, .majorIssue): return .major // Հիմնական գործառույթ, լուրջ խնդիրներ
    case (_, .minorIssue): return .minor // Աննշան խնդիրներ
    case (_, .cosmetic): return .trivial // Կոսմետիկ խնդիրներ
    default: return .minor // Դեֆոլտային արժեք
    }
}

enum FunctionalityLevel {
    case critical, essential, minor
}

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

// Օգտագործում՝
let severity = determineSeverity(defectFunctionality: .critical, impact: .blocksAll)
print(severity) // Կցուցադրվի՝ blocker