Gravidade versus Prioridade em Testes de Software: Diferenças, Matriz e Exemplos Reais
A gravidade diz quanto dano um bug causa. A prioridade diz quando corrigir o problema. Saiba por que nem sempre combinam, veja todas as quatro combinações com exemplos e realize reuniões de triagem que terminem com decisões claras.
- Gravidade mede o impacto de um bug no sistema. Prioridade mede a urgência com que deve ser corrigido.
- Os testadores geralmente propõem a severidade, enquanto os proprietários do produto geralmente decidem a prioridade.
- Eles são independentes, portanto um erro de digitação pode ser urgente e uma falha pode esperar.
- A prioridade muda de acordo com o contexto do negócio, enquanto a gravidade tende a permanecer estável.
Um nome de empresa escrito incorretamente na página inicial e uma falha em um recurso de exportação raramente usado: o que você corrige primeiro? Argumentos como esse explicam o motivo pelo qual as equipes de teste separam gravidade versus prioridade. Um descreve os danos técnicos e o outro descreve a urgência do negócio.
Sem essa distinção, todo bug é rotulado como “crítico”, os rótulos perdem o significado e os desenvolvedores deixam de confiar neles. Este guia fornece definições e exemplos claros, juntamente com um processo simples para tomar essas decisões. Os exemplos são ilustrativos e as escalas exatas diferem entre equipes e ferramentas.
A resposta curta
Gravidade responde: até que ponto esse bug afeta o produto? Uma falha ou perda de dados é grave, mas uma falha cosmética não.
Respostas prioritárias: quando devemos corrigir o problema? Isso depende dos clientes afetados, prazos, receitas, exposição legal e reputação da marca.
Pense em um hospital. Gravidade é a gravidade da condição do paciente. A prioridade é a ordem de atendimento dos pacientes, que depende também de outros fatores, como quem pode esperar com segurança e quais recursos são gratuitos.
Gravidade versus prioridade lado a lado
| Aspecto | Gravidade | Prioridade |
|---|---|---|
| Pergunta | Quão ruim é o impacto? | Em quanto tempo isso deve ser consertado? |
| Foco | Efeito técnico no sistema | Necessidade de negócios e agendamento |
| Geralmente definido por | Testador ou engenheiro de controle de qualidade | Dono do produto ou gerente de projeto |
| Base | Comportamento observado | Clientes, receita, prazos, risco |
| Mudanças ao longo do tempo? | Raramente | Muitas vezes |
| Decide | Quão sério é o defeito | A ordem da fila de correção |
Níveis de gravidade
A maioria das equipes usa cerca de quatro ou cinco níveis. Aqui está uma escala comum:
| Nível | Significado | Exemplo |
|---|---|---|
| Crítico (S1) | Sistema inativo, perda de dados ou violação de segurança, sem solução alternativa | Salvar uma fatura exclui registros de clientes |
| Maior (S2) | Um recurso importante está quebrado ou existe apenas uma solução alternativa difícil | A pesquisa não retorna resultados para nenhuma consulta |
| Moderado (S3) | Um recurso falha parcialmente e existe uma solução alternativa razoável | O filtro de data falha, mas a classificação por data funciona |
| Menor (S4) | Pequeno inconveniente, funcionalidade intacta | Uma dica de ferramenta aparece na posição errada |
| Trivial (S5) | Somente cosmético | Um ícone ligeiramente desalinhado |
Níveis de prioridade
| Nível | Significado | Ação típica |
|---|---|---|
| P1, urgente | Deve ser consertado agora | Abandone outro trabalho e considere um hotfix |
| P2, alto | Deve ser corrigido antes do próximo lançamento | Agendar no sprint atual |
| P3, médio | Deve ser corrigido em breve | Coloque em um próximo sprint |
| P4, baixo | Corrija quando houver capacidade | Mantenha o backlog e revise-o de vez em quando |
Anote o que cada nível significa para sua equipe, de preferência com um tempo de resposta alvo para cada um. “P1 significa que alguém começa dentro de uma hora” é muito mais útil do que “P1 significa muito importante”.
As quatro combinações, com exemplos
A maneira mais clara de entender isso é observar cada combinação:
| Alta prioridade | Baixa prioridade | |
|---|---|---|
| Alta gravidade | A finalização da compra falha para todos os clientes durante uma venda | Uma falha ao exportar para um formato de arquivo que quase ninguém usa |
| Baixa gravidade | O nome da empresa está escrito incorretamente na página inicial | Um erro de digitação em um artigo de ajuda antigo com poucos leitores |
Alta gravidade, alta prioridade
O checkout falha para todos, a empresa perde dinheiro a cada minuto e não há solução alternativa. Este é o caso óbvio: largue tudo e conserte.
Alta gravidade, baixa prioridade
O aplicativo trava ao exportar para um formato legado. Tecnicamente, isso é uma falha grave. Mas se apenas uma pequena parcela de usuários usar esse recurso e um formato moderno funcionar bem, ele poderá esperar por um lançamento agendado.
Baixa gravidade, alta prioridade
O nome da empresa está escrito incorretamente na página inicial. Nada está quebrado e nenhum dado está em risco. No entanto, todo visitante vê isso, isso prejudica a confiança e, se um grande lançamento estiver previsto para amanhã, precisa ser consertado hoje.
Baixa gravidade, baixa prioridade
Um pequeno erro de digitação em um artigo de ajuda raramente visitado. Corrija-o quando for conveniente. Se o seu backlog estiver cheio disso, considere agrupá-los em uma tarefa de limpeza.
Um bug, duas prioridades diferentes
O mesmo defeito pode merecer prioridades diferentes dependendo do contexto. Suponha que um e-mail de confirmação de pedido seja enviado com o logotipo errado.
| Contexto | Gravidade | Prioridade |
|---|---|---|
| Ferramenta interna pequena | Menor | P4 |
| Marca pública acaba de ser renomeada, com anúncio esta semana | Menor | P1 ou P2 |
A gravidade não mudou porque o impacto no sistema é o mesmo. Mas a situação empresarial sim. O tempo também pode mudar as coisas. Um bug que é P3 hoje pode se tornar P1 uma semana antes do lançamento de um grande cliente.
Dica: algumas mudanças no contexto afetam a gravidade. Cálculos de impostos errados podem parecer moderados até você aprender que eles se aplicam a todas as faturas, portanto, verifique a extensão do bug antes de definir um nível.
Quem decide a gravidade e a prioridade?
- Os testadores geralmente propõem severidade, pois observaram o comportamento e compreenderam o impacto no sistema.
- Proprietários ou gerentes de produtos geralmente decidem a prioridade, pois avaliam os clientes, a receita e o roteiro.
- Desenvolvedores adicionam informações sobre a causa, o risco de uma correção e quanto tempo levará.
- As equipes de suporte trazem evidências de quantos clientes foram afetados e até que ponto.
As fontes e as equipes variam quanto a essas responsabilidades e, em uma pequena startup, uma pessoa pode fazer tudo isso. O que importa é que todos saibam quem toma a decisão final, para que as divergências terminem com uma decisão.
Como avaliar um bug
Quando não tiver certeza, resolva essas questões.
Para gravidade:
- Ele perde ou corrompe dados ou expõe informações privadas?
- Isso impede o funcionamento de uma função principal?
- Existe uma solução alternativa e um usuário normal poderia encontrá-la?
- Quanto do recurso é afetado?
Para prioridade:
- Quantos usuários são afetados e quais?
- Custa dinheiro ou cria riscos legais ou de conformidade?
- Um lançamento, demonstração ou venda está chegando?
- Quão visível é isso e pode prejudicar sua reputação?
- Bloqueia outros trabalhos, como testes?
Executando triagem de bugs
A triagem é a reunião regular onde uma equipe analisa novos bugs e decide o que acontece a seguir. Um formato simples funciona bem:
- Preparar. O testador garante que cada novo bug tenha etapas claras, evidências e gravidade proposta.
- Confirme. Verifique se pode ser reproduzido e não é duplicado.
- Decida. Combine a gravidade, defina uma prioridade e atribua um proprietário.
- Feche o ciclo. Rejeite, adie ou agende cada bug e registre o motivo.
Seja curto e frequente. Durante os últimos dias antes da liberação, é comum uma triagem diária de 15 minutos. A gravidade e a prioridade também influenciam sua decisão de lançamento, portanto, defina regras antecipadamente, como “nenhum bug S1 ou S2 aberto no lançamento”, como parte de seus critérios de saída.
Gravidade e prioridade em um relatório de bug
Uma entrada curta e clara ajuda todos a tomar uma boa decisão:
Title: Checkout returns error 500 when a coupon is applied
Severity: S1 - blocks purchase, no workaround
Priority: P1 proposed - sale starts Friday
Build: 2.14.0, production
Reach: All customers using a coupon (around 30% of orders)
Steps: 1. Add an item 2. Apply SAVE10 3. Click Pay
Result: Error 500 and no order is created
Expected: Order is created with the discount applied
Esses números são exemplos. Em um relatório real, use números medidos em seus registros e explique seu raciocínio. Saiba mais em nosso guia sobre como escrever um relatório de bug. Também ajuda saber o que significam os códigos de erro, portanto, mantenha nossa folha de dicas sobre códigos de status HTTP à mão.
Erros comuns
- Tratá-los como o mesmo campo. Se os dois sempre corresponderem, você estará perdendo informações úteis.
- Inflar a severidade para chamar a atenção. Uma vez que tudo é crítico, nada o é.
- Deixar os testadores definirem a prioridade sozinhos. Eles raramente têm uma visão completa do negócio.
- Nunca revise o backlog. As prioridades ficam obsoletas, então verifique novamente os bugs antigos regularmente.
- Não há definições escritas. Sem elas, as pessoas aplicam rótulos de maneira diferente e você acaba debatendo palavras.
- Ignorar acúmulos de baixa gravidade. Cinquenta problemas menores podem fazer um produto parecer quebrado, mesmo que nenhum deles seja sério por si só.
Considerações finais
Mantenha as duas questões separadas: quão ruim é e quando deve ser corrigido? Combine as definições escritas para cada nível e deixe claro quem decide. Na próxima etapa, pegue os dez bugs mais antigos do seu rastreador e reavalie-os usando as perguntas acima. Você provavelmente encontrará alguns que deveriam ser movidos e outros que deveriam ser fechados.
Perguntas frequentes
Qual é a diferença entre gravidade e prioridade?
Gravidade é o quanto um defeito prejudica o sistema. A prioridade é a urgência com que deve ser corrigido. Um é sobre o impacto técnico e o outro é sobre a urgência do negócio.
Um bug pode ter baixa gravidade e alta prioridade?
Sim. Um nome de empresa digitado incorretamente na página inicial não quebra nada, mas é altamente visível, portanto, uma equipe pode querer corrigi-lo imediatamente.
Um bug pode ter alta gravidade e baixa prioridade?
Sim. Uma falha em um recurso legado raramente usado é tecnicamente grave, mas com poucos usuários afetados e uma boa alternativa, pode esperar.
Quem define a gravidade e a prioridade?
Os testadores geralmente propõem a severidade, e os proprietários ou gerentes do produto geralmente decidem a prioridade. Muitas equipes finalizam ambos juntos durante uma reunião de triagem de bugs.
O que deve ser corrigido primeiro: alta gravidade ou alta prioridade?
Corrija em ordem de prioridade, pois a prioridade é o que decide a fila. A gravidade é uma informação importante, portanto, bugs graves geralmente recebem alta prioridade.
Continue aprendendo
Precisa de ajuda com testes, WordPress ou SEO?
Ajudamos as equipes a fornecer software melhor e a expandir seus sites. Conte-nos no que você está trabalhando e sugeriremos um próximo passo claro.
Mais guias sobre testes, IA e desenvolvimento moderno
Gostou deste artigo? Escolha um tópico e vá direto para nossos tutoriais mais recentes.
Explicação das alucinações de IA: por que os modelos de linguagem inventam as coisas e como reduzi-las
Explicação das alucinações de IA: o que são, por que os modelos de linguagem as produzem, tipos comuns, como reduzi-las com aterramento e instruções…
Leia o artigo →DevOpsVariáveis de ambiente explicadas: arquivos .env, segredos e configuração bem feitos
Variáveis de ambiente explicadas com exemplos de Python que executamos: leitura e configuração, por que cada valor é uma string, arquivos .env, hera…
Leia o artigo →Desenvolvimento de softwareExplicação da limitação de taxa de API: algoritmos, cabeçalhos e tratamento de erros 429
Limitação de taxa de API explicada com uma simulação que executamos: token bucket, janela fixa, janela deslizante, 429 respostas, cabeçalhos de limi…
Leia o artigo →Automação de testesZombando em Python: unittest.mock, patch e os erros que fazem os testes mentirem
Zombaria em Python com unittest.mock, testado: Mock e return_value, side_effect, patch onde um nome é usado, especificação e autospec, zombaria de d…
Leia o artigo →Teste de softwareCobertura de código explicada: cobertura de linha versus filial e o que 100% realmente significa
Cobertura de código explicada com uma execução cobertura.py real: cobertura de linha, ramal e condição, leitura de um relatório, por que 100% de cob…
Leia o artigo →Bancos de dados e SQLDELETE vs TRUNCATE vs DROP em SQL: diferenças, reversão e quando usar cada um
DELETE vs TRUNCATE vs DROP explicado com SQL testado: o que cada um remove, rollback, aciona, redefinição de identidade, velocidade e como PostgreSQ…
Leia o artigo →Bancos de dados e SQLExibições SQL explicadas: crie, use e evite as armadilhas, com exemplos
Visualizações SQL explicadas com consultas que executamos: criação de uma visualização, resultados ao vivo, ocultação de colunas, desempenho, visual…
Leia o artigo →Desenvolvimento de softwareInterface TypeScript vs tipo: diferenças reais, testadas com o compilador
Interface TypeScript versus tipo, verificada com o compilador real: o que ambos podem fazer, o que apenas um pode fazer, mesclagem de declarações, e…
Leia o artigo →Desenvolvimento de softwarePython *args e **kwargs explicados: funções flexíveis com exemplos claros
Python *args e **kwargs explicados com o código que executamos: empacotamento e descompactação, ordem dos parâmetros, argumentos somente de palavras…
Leia o artigo →Desenvolvimento de softwareFunções Python Lambda: sintaxe, usos reais e quando não usá-los
Funções lambda do Python explicadas com o código que executamos: sintaxe, classificação com chave, mapa e filtro, fechamentos, armadilha de ligação …
Leia o artigo →Inteligência artificialO que são agentes de IA? Como eles funcionam, com um loop de agente simples que você pode executar
O que são agentes de IA? Um guia simples para o loop do agente, ferramentas, memória e proteções, com um pequeno loop Python que executamos, riscos …
Leia o artigo →DevOpsMonitoramento versus observabilidade: a verdadeira diferença, com logs, métricas e rastreamentos
Explicação do monitoramento versus observabilidade: falhas conhecidas e desconhecidas, logs, métricas e rastreamentos, um passo a passo do incidente…
Leia o artigo →DevOpsDocker Volumes vs Bind Mounts: persista os dados do contêiner da maneira certa
Volumes Docker versus montagens de ligação explicadas: por que os dados do contêiner desaparecem, volumes nomeados, montagens de ligação, tmpfs, exe…
Leia o artigo →Automação de testesTDD vs BDD: principais diferenças, um recurso criado de ambas as maneiras e quando usar cada um
TDD vs BDD explicado com um recurso de desconto construído em ambos os sentidos: refatoração vermelho-verde com o código que executamos, cenários da…
Leia o artigo →Teste de softwareTeste de aceitação do usuário (UAT): processo, lista de verificação e exemplos reais
Explicação do teste de aceitação do usuário: quem o executa, como ele difere do controle de qualidade, um processo de sete etapas, um modelo de caso…
Leia o artigo →Bancos de dados e SQLValores SQL NULL explicados: IS NULL, COALESCE, NULLIF e as armadilhas a serem evitadas
Valores SQL NULL explicados com consultas que executamos: lógica de três valores, IS NULL, COALESCE, NULLIF, como agregações, junções e classificaçã…
Leia o artigo →Bancos de dados e SQLInstrução SQL CASE WHEN: sintaxe, exemplos reais e erros comuns
SQL CASE WHEN explicado com consultas que executamos: formulários simples e pesquisados, ordem de condição, pivôs com SUM, truques COUNT, classifica…
Leia o artigo →Desenvolvimento de softwareO que é JWT? JSON Web Tokens explicados com um exemplo prático
O que é JWT? JSON Web Tokens explicados: as três partes, um token construído e adulterado no código que executamos, JWT vs sessões, armazenamento, t…
Leia o artigo →Desenvolvimento de softwareLoop de eventos JavaScript explicado: pilha de chamadas, microtarefas e temporizadores com exemplos
O loop de eventos JavaScript explicado com o código que executamos: pilha de chamadas, filas de tarefas e microtarefas, por que setTimeout 0 não é i…
Leia o artigo →Desenvolvimento de softwareGeradores Python e rendimento explicado: economize memória com exemplos reais
Geradores Python e rendimento explicados com o código que executamos: como eles pausam e reiniciam, medem economia de memória, pipelines, sequências…
Leia o artigo →Inteligência artificialO que são incorporações? Similaridade de vetores e cossenos explicada de forma simples
O que são incorporações? Um guia em linguagem simples para vetores, similaridade de cossenos e pesquisa semântica, com um pequeno exemplo que execut…
Leia o artigo →DevOpsImplantação azul-verde vs canário: diferenças, compensações e como escolher
Explicação da implantação azul-verde versus canário: como cada um funciona, custo, risco e reversão, agrupamento estável de usuários que testamos, m…
Leia o artigo →Automação de testesTestes instáveis: o que os causa e como corrigi-los para sempre
Testes instáveis explicados com demonstrações que executamos: as principais causas, como confirmar e diagnosticar uma, soluções adequadas para tempo…
Leia o artigo →Teste de softwareTeste de carga versus teste de estresse: diferenças, métricas e exemplos k6
Teste de carga versus teste de estresse explicado: o que cada um prova, testes de pico e absorção, as métricas que importam, por que as médias engan…
Leia o artigo →Teste de softwareCaso de teste versus cenário de teste: principais diferenças, exemplos e quando usar cada um
Caso de teste vs cenário de teste explicado: definições claras, uma tabela lado a lado, um recurso de redefinição de senha retirado de cenários para…
Leia o artigo →Bancos de dados e SQLOtimização de consultas SQL: leia planos de execução e corrija consultas lentas, com intervalos
Otimização de consulta SQL testada em um milhão de linhas: leia planos de execução, adicione os índices corretos, corrija filtros não sargáveis, use…
Leia o artigo →Bancos de dados e SQLSQL UNION vs UNION ALL: diferenças, exemplos e desempenho testado
SQL UNION vs UNION ALL explicado com consultas que executamos: duplicatas, as regras que ambos seguem, um bug de dados real, desempenho medido, INTE…
Leia o artigo →Desenvolvimento de softwareTutorial da API JavaScript Fetch: GET, POST, tratamento de erros e tempos limite
Um tutorial da API JavaScript Fetch testado em um servidor local: GET e POST, por que 404 não lança, um auxiliar reutilizável, strings de consulta, …
Leia o artigo →Desenvolvimento de softwareManipulação de arquivos Python: leitura, gravação, CSV, JSON e pathlib com exemplos
Manipulação de arquivos Python explicada com código que executamos: modos abertos, com, leitura de arquivos grandes, CSV, JSON, pathlib, arquivos bi…
Leia o artigo →Desenvolvimento de softwareClasses e objetos Python: tutorial OOP com exemplos reais
Classes e objetos Python explicados com código que executamos: __init__, métodos, atributos de classe vs instância, herança, propriedades, métodos d…
Leia o artigo →Inteligência artificialO que é um modelo de linguagem grande? Como funcionam os LLMs, explicado sem exageros
O que é um modelo de linguagem grande? LLMs explicados em linguagem simples: tokens, incorporações, atenção, treinamento, temperatura e janelas de c…
Leia o artigo →DevOpsComandos Linux para iniciantes: o guia essencial do terminal com exemplos
Comandos Linux para iniciantes, agrupados por tarefa: navegação, arquivos, visualização de logs, grep, pipes, permissões, processos e arquivos, com …
Leia o artigo →Automação de testesSelenium vs Playwright: principais diferenças, código comparado e qual escolher
Selenium vs Playwright comparado: arquitetura, espera, suporte a navegador e linguagem, depuração, o mesmo teste em ambas as ferramentas, conselhos …
Leia o artigo →Teste de softwareParticionamento de equivalência: técnica de design de teste explicada com exemplos resolvidos
Explicação do particionamento de equivalência: como encontrar partições válidas e inválidas, exemplos resolvidos para idades, senhas e cupons, teste…
Leia o artigo →Teste de softwareGravidade vs Prioridade em Testes de Software: Diferenças, Matriz e Exemplos Reais
Explicação da gravidade versus prioridade em testes de software: definições claras, uma matriz de quatro vias com exemplos, escalas de nível, quem d…
Leia o artigo →Bancos de dados e SQLTutorial de subconsultas SQL: tipos, subconsultas correlacionadas e EXISTS com exemplos
Um tutorial de subconsultas SQL com consultas que executamos: subconsultas escalares, IN, FROM e SELECT, subconsultas correlacionadas, EXISTS, a arm…
Leia o artigo →Bancos de dados e SQLTransações SQL e ACID explicados: COMMIT, ROLLBACK e níveis de isolamento
Transações SQL e ACID explicadas com uma transferência bancária que executamos: COMMIT, ROLLBACK, savepoints, locks, níveis de isolamento, leituras …
Leia o artigo →Desenvolvimento de softwareGit merge vs rebase: diferenças, exemplos e quando usar cada um
Git merge vs rebase explicado com saída real do log, uma tabela comparativa, a regra de ouro do rebase e um fluxo de trabalho seguro para equipes.
Leia o artigo →Desenvolvimento de softwareList comprehension em Python: sintaxe, exemplos e quando evitar
List comprehension em Python explicada: sintaxe, filtros, if-else, laços aninhados, tempos medidos e quando um laço for comum é a melhor escolha.
Leia o artigo →Bancos de dados e SQLSQL JOIN explicado com exemplos (Inner, Left, Right, Full)
Entenda os joins SQL passo a passo com tabelas e consultas de exemplo: INNER, LEFT, RIGHT, FULL, CROSS e SELF, além de erros comuns e dicas de desem…
Leia o artigo →