Bug, Falha, Defeito… e Incidente

No campo da qualidade de software, entender a terminologia correta é fundamental para que a nossa comunicação seja eficaz e a resolução de problemas seja conseguida de forma mais fácil.

Termos como bug, falha, defeito e incidente são frequentemente utilizados, mas muitas vezes de forma intercambiável, o que pode causar alguma confusão para os que não estão completamente à vontade com estes conceitos e suas definições.

Espero com este artigo esclarecer estes conceitos, discutir como e quando são encontrados, como devem ser reportados e quem deve ser informado dos mesmos.


Definições e Diferenças

Bug

  • Definição: Um bug é um erro, problema ou falha inesperada no software, que causa um comportamento incorreto ou inesperado do mesmo.

  • Quando é normalmente encontrado: Durante o desenvolvimento do software, na execução dos testes ou na utilização do software.

  • Registo: através de ferramentas de registo e mapeamento de bugs (Jira, Bugzilla).

  • Pessoas que devem ser notificadas: Programadores, QAs, gestores de projeto.

Defeito

  • Definição: Um defeito é uma discrepância entre o comportamento esperado do software (especificado na documentação) e o comportamento real observado.

  • Quando é normalmente encontrado: durante os testes de validação e de verificação.

  • Registo: através de ferramentas de gestão de defeitos.

  • Pessoas que devem ser notificadas: QAs, programadores, analistas de negócios (BA).

Falha

  • Definição: Uma falha é a incapacidade de um sistema (ou componente) de executar a função exigida, conforme especificado.

  • Quando é normalmente encontrado: durante a operação do sistema (ou seja, a sua execução/utilização) em ambiente de produção.

  • Registo: sistemas de monitorização de falhas e logs.

  • Pessoas que devem ser notificadas: Equipa de operações, equipa de suporte técnico, gestores de projeto.

Incidente

  • Definição: Um incidente é qualquer evento que não faz parte da operação padrão de um serviço e que causa, ou pode causar, uma interrupção ou redução na qualidade desse serviço.

  • Quando é normalmente encontrado: Em qualquer fase do ciclo de vida do software, especialmente em produção.

  • Registo: Sistemas de gestão de incidentes (ITIL).

  • Pessoas que devem ser notificadas: Suporte técnico, gestores de projeto, clientes.


Foco no Ciclo de Testes

Durante as diferentes fases do ciclo de testes, o principal foco e objectivo é na identificação e resolução bugs, falhas, defeitos e incidentes varia:

  1. Planeamento de Testes: Definir estratégias para identificar e documentar defeitos e bugs.

  2. Desenvolvimento: Os programadores focam-se em identificar e corrigir bugs.

  3. Testes de Unidade e Integração: Identificar e reportar bugs e defeitos.

  4. Testes de Sistema: QAs encontram e documentam defeitos e falhas.

  5. Testes de Aceitação: Incidentes e defeitos são identificados e reportados.

  6. Implantação: Monitorização para identificar e resolver falhas e incidentes em produção.


Como reportar e gerir os problemas encontrados

Reportar Bugs e Defeitos

  • Ferramentas: Jira, Bugzilla, Trello.

  • O que não deve faltar: Título, descrição detalhada, passos para reproduzir, resultados esperados vs. resultados reais, screenshots, logs.

  • Prioridade: Deve ser classificado por severidade e impacto no sistema.

Reportar Falhas

  • Ferramentas: Ferramentas de monitorização, como Nagios, Splunk,…

  • O que não deve faltar: Descrição do problema, impacto, tempo de ocorrência, logs do sistema.

  • Prioridade: Alta prioridade para falhas que afetem a operação do sistema.

Reportar Incidentes

  • Ferramentas: ITIL Incident Management Tools, ServiceNow.

  • O que não deve faltar: Descrição do incidente, impacto, tempo de ocorrência, medidas temporárias (workarounds).

  • Prioridade: Imediato para incidentes críticos que interrompem o serviço (os chamados showstoppers).

Apresentação de resultados

  • Possíveis Formatos: Relatórios de bugs, relatórios de testes, dashboards.

  • Conteúdo: Estatísticas de bugs, status de defeitos, resumo de falhas e incidentes, impacto no projeto.

Workarounds

  • Definição: Soluções temporárias para contornar um problema até que uma correção permanente seja implementada.

  • Exemplos Práticos:

    • Bug: Reiniciar a aplicação para resolver um bug temporário.

    • Falha: Redirecionar o tráfego para um servidor backup.

    • Incidente: Utilizar um método alternativo para completar uma transação.


Exemplos Práticos

Bug

  • Exemplo: Um botão "Salvar" não funciona numa aplicação web.

  • Contexto: Encontrado durante testes de sistema.

  • Registo: Descrito no Jira com passos para reproduzir e logs da consola do browser.

Defeito

  • Exemplo: O sistema calcula de forma incorrecta os impostos.

  • Contexto: Encontrado durante os testes de validação contra os requisitos.

  • Registo: Detalhado com especificações do requisito e comportamento observado vs esperado.

Falha

  • Exemplo: Um servidor de base de dados falha, tornando a aplicação indisponível.

  • Contexto: Ocorrido no ambiente de produção.

  • Registo: Registrado em sistemas de monitorização, com logs do sistema.

Incidente

  • Exemplo: Um serviço de autenticação de utilizadores fica indisponível, afetando o login.

  • Contexto: Ocorrido em produção durante um pico de carga nos acessos ao sistema.

  • Registo: Descrito no sistema de gestão de incidentes, com indicação do impacto e das possíveis medidas temporárias.


A compreensão clara e a gestão eficaz de bugs, falhas, defeitos e incidentes são essenciais para a qualidade de software.

Cada termo possui um significado específico e um papel crucial no ciclo de vida do desenvolvimento de software.

Ao adoptarmos boas práticas de registo e gestão dos problemas, as equipas conseguem garantir que os problemas são resolvidos de forma eficiente, melhorando assim a confiabilidade e a satisfação do utilizador final.

 
Anterior
Anterior

7 Princípios de Teste de Software - a origem e a necessidade

Próximo
Próximo

Mockups no Contexto de Testes de Software