Junior
De que depende a gradação do nível de gravidade dos erros (severity)?
sobes.tech IA
Resposta da IA
A graduação do nível de gravidade dos erros (severity) depende do impacto do defeito na funcionalidade, estabilidade ou segurança do produto de software. Avalia-se o dano potencial para o utilizador ou negócio.
Fatores principais que influenciam a severity:
- Criticidade da funcionalidade: Quão importante é a função afetada para o funcionamento da aplicação.
- Impacto nas operações principais: Se o defeito impede a realização de tarefas-chave.
- Perda de dados ou fundos: Se o defeito pode levar a fuga ou perda de dados, bem como perdas financeiras.
- Disponibilidade do sistema: Se o defeito bloqueia total ou parcialmente o uso da aplicação.
- Possibilidade de solução alternativa: Se existe uma forma alternativa de realizar a ação.
- Frequência de ocorrência: Com que frequência o defeito se manifesta (embora isto seja mais um fator de prioridade, também pode influenciar a severity se o defeito for crítico e constante).
Níveis típicos de severity (que podem variar dependendo do projeto e da empresa):
- Blocker: O produto é completamente inutilizável, funcionalidade criticamente importante bloqueada, não é possível continuar o trabalho ou testes. Perda de dados ou perdas financeiras garantidas.
- Critical: Funcionalidade criticamente importante não funciona ou funciona incorretamente. As operações principais estão seriamente afetadas, mas há possibilidade de trabalho parcial. Não há solução alternativa.
- Major: Funcionalidade importante mas não crítica não funciona ou funciona incorretamente. Pode haver interrupções nas operações principais, mas existe uma solução alternativa. Podem ocorrer perdas de dados, mas não críticas.
- Minor: Interrupções menores na funcionalidade ou problemas de usabilidade. Não afeta as operações principais. Existe uma solução simples.
- Trivial: Defeitos cosméticos, erros no texto, que não afetam a funcionalidade.
enum DefectSeverity {
case blocker, critical, major, minor, trivial
}
func determineSeverity(defectFunctionality: FunctionalityLevel, impact: ImpactLevel) -> DefectSeverity {
switch (defectFunctionality, impact) {
case (.critical, .blocksAll): return .blocker // Função crítica, bloqueia completamente o trabalho
case (.critical, .majorIssue): return .critical // Função crítica, problemas graves
case (.essential, .blocksAll): return .critical // Função principal, bloqueia completamente o trabalho
case (.essential, .majorIssue): return .major // Função principal, problemas graves
case (_, .minorIssue): return .minor // Problemas menores
case (_, .cosmetic): return .trivial // Problemas cosméticos
default: return .minor // Valor padrão
}
}
enum FunctionalityLevel {
case critical, essential, minor
}
enum ImpactLevel {
case blocksAll, majorIssue, minorIssue, cosmetic
}
// Uso:
let severity = determineSeverity(defectFunctionality: .critical, impact: .blocksAll)
print(severity) // Mostrará: blocker