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