Diferença entre um defeito e um bug no teste?

35

Qual é a diferença entre um defeito e um bug?

maz3tt
fonte
2
Leia testingstandards.co.uk/bs_7925-1_online.htm para obter mais informações
StuperUser
11
Existem bugs que realmente dizem que algo está faltando, o que significa que são solicitações de recursos, não bugs.
M3th0dman
A resposta depende do objetivo: por que você está perguntando?
max630
Procure a etimologia da palavra defeito. De = não, un. Facere = do. Portanto, não faz (como esperado), não executa, está quebrado, kaput. Considerando que bug significa "algo em execução que impede o desempenho". No final do dia, você terá que consertar alguma coisa, por isso tudo é acadêmico. Votei para fechar, você não tem alguns bugs para corrigir ?!
Martin Maat

Respostas:

59
  • Um bug é o resultado de um erro de codificação

  • Um defeito é um desvio dos requisitos

Ou seja: Um defeito não significa necessariamente que há um erro no código , pode ser uma função que não foi implementada, mas definida nos requisitos do software.


Na página da Wikipedia sobre teste de software :

Nem todos os defeitos de software são causados ​​por erros de codificação. Uma fonte comum de defeitos dispendiosos é causada por lacunas nos requisitos, por exemplo, requisitos não reconhecidos, que resultam em erros de omissão pelo criador do programa. [14] Uma fonte comum de lacunas de requisitos são os requisitos não funcionais, como testabilidade, escalabilidade, manutenção, usabilidade, desempenho e segurança.

Dan McGrath
fonte
15
Ambos são "desvios dos requisitos", a meu ver.
Martin Wickman
2
Um defeito não precisa ser um bug. Além disso, um bug não precisa significar que um requisito não foi atendido e, portanto, não é "um desvio do requisito"
Dan McGrath
5
Você parece estar perdendo o ponto @Martin. Sim, um bug pode ser um defeito. Sim, um defeito pode ser um bug. Mas isso nem sempre é verdade. Só porque há alguma sobreposição, não significa que elas sejam idênticas! Diagrama de Venn das Bug & Defect -> (())
Dan McGrath
8
@ Dan McGrath: basicamente, o que você fez aqui é a sua própria definição de bug. Mas, em geral, não há significado definido, é apenas um jargão de engenharia!
MaR
3
@ DanMcGrath: Seu diagrama de Venn é inútil. Pode significar ({}) ou ({)} . Suponho que você quis dizer o segundo.
Brian
21

Citando Ilene Burnstein do livro Practical Software Testing (recomendado) que parte da definição na "Coleção de Padrões IEEE para Engenharia de Software" (1994) e no "Glossário Padrão IEEE de Terminologia de Engenharia de Software" (padrão 610.12, 1990):

Erro

Um erro é um erro, equívoco ou mal-entendido por parte de um desenvolvedor de software

Na categoria desenvolvedor, incluímos engenheiros de software, programadores, analistas e testadores. Por exemplo, um desenvolvedor pode interpretar mal uma notação de design ou um programador pode digitar um nome de variável incorretamente.

Falhas (Defeitos)

Uma falha (defeito) é introduzida no software como resultado de um erro. É uma anomalia no software que pode causar um comportamento incorreto e não de acordo com sua especificação.

Às vezes, falhas ou defeitos são chamados de "bugs". O uso deste último termo trivializa o impacto das falhas na qualidade do software. O uso do termo “defeito” também está associado a artefatos de software, como requisitos e documentos de design. Defeitos que ocorrem nesses artefatos também são causados ​​por erros e geralmente são detectados no processo de revisão.

Falhas

Uma falha é a incapacidade de um sistema ou componente de software de executar suas funções necessárias dentro dos requisitos de desempenho especificados.

Durante a execução de um componente ou sistema de software, um testador, desenvolvedor ou usuário observa que ele não produz os resultados esperados. Em alguns casos, um tipo específico de mau comportamento indica que um certo tipo de falha está presente. Podemos dizer que o tipo de mau comportamento é um sintoma da falha. Um desenvolvedor / testador experiente terá uma base de conhecimento de casos de falha / sintomas / falha (modelos de falha conforme descrito no Capítulo 3) armazenados na memória. O comportamento incorreto pode incluir a produção de valores incorretos para variáveis ​​de saída, uma resposta incorreta por parte de um dispositivo ou uma imagem incorreta na tela. Durante o desenvolvimento, as falhas geralmente são observadas pelos testadores e as falhas são localizadas e reparadas pelos desenvolvedores.

Você pode ler o capítulo completo no Google Livros, aqui .

dukeofgaming
fonte
12

Existem alguns termos diferentes relacionados a erros de software. Trecho de um curso que fiz:

  • Erro : ação humana ou omissão que resulta em uma falha.

  • Falha : Falha é um defeito de software (etapa, processo ou definição de dados incorreta) que causa uma falha.

  • Bug : O mesmo que falha.

  • Falha : Incapacidade de um software de executar suas funções necessárias dentro dos requisitos de desempenho especificados.

De acordo com isso, não há diferença entre um defeito e um bug. No entanto, algumas pessoas argumentam que o bug é um erro encontrado antes da liberação do software, enquanto o defeito é encontrado pelo cliente.

Não resisti a postar o famoso "primeiro caso real de bug sendo encontrado".

texto alternativo

Tamás Szelei
fonte
Finalmente, alguém que tenha lido: testingstandards.co.uk/bs_7925-1_online.htm
StuperUser
Não é de onde eu peguei, mas eles podem ter uma fonte comum (ou essa pode ser a fonte).
Tamás Szelei
Sim, há muitos e muitos anos, passei um tempo tentando consertar um bug. Eu tive alguma cintilação irritante em uma célula na tela e não fazia sentido. Finalmente voou. (Isso foi na era do texto branco em uma tela preta, o ponto em questão era suficientemente longe para ficar sempre preto enquanto eu estava editando, então eu só notei quando o programa colocou um pouco de branco atrás dele.)
Loren Pechtel 07/09/14
7

Oh céus.

Antigamente - a operação defeituosa de um computador era causada por todo tipo de coisa - incluindo ratos mastigando a fiação e bugs reais (bichos) entrando nos trabalhos.

O termo BUG ficou como um termo que significa que algo não está funcionando como o esperado.

ERRO deve ser pensado como um termo do jargão que significa um defeito.

Um defeito é um termo tecnicamente correto, o que significa que a coisa não faz como deveria.

Sempre que possível, usar DEFECT em vez de BUG traz consigo uma conotação de que reconhecemos nossas falhas (nossos defeitos, nossa falta de entendimento dos requisitos do usuário ou as coisas que ignoramos na implementação) em vez de vesti-lo como o bug "mais trivial". "

Use DEFEITO.

Tente não usar o termo BUG. É bobo, irrelevante, histórico e trivial.

rapid_now
fonte
2
Por que você deseja remover do uso um termo técnico bem conhecido? Me desculpe ... sim, o BUG é histórico - mas se você acha que os programadores consideram os bugs (genericamente, por oposição ao específico) triviais apenas porque são chamados de bugs ou o termo irrelevante por causa de suas origens, então eu sou com medo de me transformar em uma meia-idade mal-humorada é inteiramente justificada. Ah, e como @Dan aponta, os erros são defeitos, mas os defeitos não são necessariamente erros, o que sugere ainda que o termo tenha valor.
Murph
3
@ Murph, um "bug" é um eufemismo para um erro de programação. Inconscientemente, isso atrai um tipo de gremlin sobre o qual o desenvolvedor não tem controle. Isso não está correto - é um erro e reconhecer que este é um passo em direção a um comportamento mais profissional. (Imho claro :-))
rsp
11
É claro que eu discordo (-: eu sei exatamente quem é responsável pelos bugs - erros de codificação e lógica - que eu tenho no meu código. (Eu também sou capaz de identificar falhas no código de outras pessoas). Todos os programadores que eu conheço são claros sobre o que o termo significa - que eles (bem algum programador), e não algum tipo de gremlin cometeu um erro.
Murph
2
Ao lidar com seus clientes, você pode chamar essas coisas de bugs ou defeitos. Bugs é um jargão. Defeitos é um reconhecimento, fora do jargão, de que não é como deveria ser. "Defeitos" é um termo que encoraja uma comunicação clara - tanto fora da fraternidade de programação quanto dentro dela. (Eu também discordo que há uma diferença entre um bug e um defeito.)
quickly_now
Defeitos é o termo apropriado. Quantos programas são lançados com bugs e todos nós aceitamos isso? Mas quantos programas são lançados com defeitos? Não aceitamos isso porque o termo implica em uma maior gravidade e sabemos que é nossa própria culpa do erro, em vez de um bug em que podemos culpar o clima ou a hora do dia.
Rudolf Olah
7

No Glossário Padrão da IEEE de Terminologia de Engenharia de Software, citado no KA de Conhecimento em Engenharia de Software para Teste de Software e Qualidade de Software:

erro. Veja: erro; culpa.


erro. (1) A diferença entre um valor ou condição calculado, observado ou medido e o valor ou condição verdadeiro, especificado ou teoricamente correto. Por exemplo, uma diferença de 30 metros entre um resultado calculado e o resultado correto. (2) Uma etapa, processo ou definição de dados incorreta. Por exemplo, uma instrução incorreta em um programa de computador. (3) resultado incorreto. Por exemplo, um resultado calculado de 12 quando o resultado correto é 10. (4) Uma ação humana que produz um resultado incorreto. Por exemplo, uma ação incorreta por parte de um programador ou operador. Nota: Embora todas as quatro definições sejam comumente usadas, uma distinção atribui a definição 1 à palavra "erro", a definição 2 à palavra "falha", a definição 3 à palavra "falha" e a definição 4 à palavra "erro". Veja a2so: erro dinâmico; erro fatal; erro indígena; erro semântico; erro sintático; erro estático; erro transitório.


falha. A incapacidade de um sistema ou componente de executar suas funções necessárias dentro dos requisitos de desempenho especificados. Nota: A disciplina de tolerância a falhas distingue entre uma ação humana (um erro), sua manifestação (uma falha de hardware ou software), o resultado da falha (uma falha) e a quantidade pela qual o resultado está incorreto (o erro). Veja também: falha; falha dependente; exceção; Modo de falha; taxa de falha; falha grave; falha incipiente; falha independente; falha aleatória; falha suave; falha emperrada.


culpa. (1) Um defeito em um dispositivo ou componente de hardware; por exemplo, um curto-circuito ou fio quebrado. (2) Etapa, processo ou definição de dados incorreta em um programa de computador. Nota: Essa definição é usada principalmente pela disciplina de tolerância a falhas. No uso comum, os termos "erro" e "erro" são usados ​​para expressar esse significado. Veja também: falha sensível a dados; falha sensível ao programa; falhas equivalentes; mascaramento de falhas; falha intermitente.


Eu acho que a definição de falha é a mais relevante. Tudo começa com um erro, seja nos requisitos, no design, na implementação ou no caso / procedimento de teste. Se esse erro for manifestado no software, ele se tornará uma falha. Uma falha é causada pela existência de uma ou mais falhas no software.

Não estou muito interessado na definição formal de erro. Eu prefiro muito a definição fornecida por dukeofgaming em sua resposta , no entanto, a que está nesta resposta é a definição padrão de erro do IEEE.

Thomas Owens
fonte
3

A resposta de Dan McGrath acertou em cheio.

  • Um bug é o resultado de um erro de codificação
  • Um defeito é um desvio dos requisitos

Talvez um exemplo torne isso mais claro.

Exemplo: o cliente queria que o formulário da web pudesse salvar e fechar a janela.

Cenário 1: o formulário da Web possui um botão Salvar e outro botão Fechar. Resultado: Defeito, porque o cliente queria o botão 1 para salvar e fechar a janela. O desenvolvedor não entendeu e foi criado separadamente. Como os dois botões cumpriram seus requisitos, não é um bug, mas um defeito porque não atendeu aos requisitos do cliente.

Cenário # 2: o formulário da Web tem um botão Salvar e Fechar, mas salva e não fecha. Resultado: Bug. Porque o botão não funciona conforme necessário / esperado. O desenvolvedor sabe que é suposto produzir esse resultado, mas no final não o fez. (talvez erro de codificação)

Não tenho certeza se isso torna mais claro.

p / s: do ponto de vista do desenvolvedor (eu já fui), defeitos e bugs são igualmente importantes. Ainda vamos consertar.

Nós até encontramos anomalias estranhas, que classificamos como bugs e tentamos continuamente descobrir qual é a causa e como corrigi-la. Denominar erros não o torna trivial em comparação com os defeitos.

tctham
fonte
O que chamamos de requisitos defeituosos?
gnasher729
@ gnasher729 Se por requisitos defeituosos, você quis dizer que os programadores não entendiam os requisitos, então eu pensaria que é um defeito. Mas se você quis dizer requisitos defeituosos, pois o usuário que fornece os requisitos errados, resultando no trabalho final, não resolve o problema inicial, isso está além do bug e do defeito, pois esse é um problema com a sessão de coleta de requisitos e não com o desenvolvimento.
Tctham 14/05
0

A diferença é que o termo "bug" parece mágico. Como se um programa pudesse ter erros aleatoriamente depois de terminar a programação. Se houver erros aleatórios, significa que você não está em conformidade com as especificações e seu programa está com erro.

Um defeito significa um erro em que o programa não está em conformidade com as especificações. Isso é mais grave e basicamente diz que qualquer erro é um grande problema com o programa e isso significa que o programa não está apto para ser lançado.

A diferença está na atitude dos programadores que usam os termos. Existem milhões de programas lançados com bugs e as pessoas estão bem com isso porque aceitam, por algum motivo, que um bug é mágico e aleatório e que todo programa contém pelo menos um bug. No entanto, um programador que usa o termo "defeito" pode ficar desconfortável ao liberar um programa com defeito, porque o termo implica em uma maior gravidade.

As implicações de preferir um termo ao outro afetam-nos diariamente.

Rudolf Olah
fonte
0

De acordo com a confiabilidade: conceitos básicos e terminologia :

Uma falha do sistema ocorre quando o serviço entregue se desvia do cumprimento da função do sistema, sendo este último o objetivo do sistema. Um erro é a parte do estado do sistema que pode levar à falha subseqüente: um erro que afeta o serviço é uma indicação de que uma falha ocorre ou ocorreu. A causa adjudicada ou hipotética de um erro é uma falha .

Entendo defeito como apenas outro nome por falha.

O bug é confuso e pode representar uma falha ou falha, dependendo do contexto.

Observe que não há menção de especificação: mesmo uma especificação pode estar com defeito.

mouviciel
fonte
0

Aqui está um que fiz anteriormente para o meu empregador Q-LEAP com base no vocabulário ISTQB e também verifiquei o vocabulário IEEE. Apreciar.

Bug e defeito? O mesmo, embora se possa ter uma discussão interminável sobre isso. Temos realmente outras coisas com que nos preocupar, a vida já é bastante complicada etc.

insira a descrição da imagem aqui

Um exemplo de como o termo é usado na natureza, em "Como o Google testa o software" p. 113. Abra um artigo do "IEEE Software" e é usado da mesma maneira. De fato, raramente encontramos a palavra "defeito" na vida real.

Vida de um inseto

Bugs e relatórios de bugs são os artefatos que todos os testadores entendem. A localização de bugs, a triagem de bugs, a correção de bugs e a regressão de bugs são a pulsação e o fluxo de trabalho da qualidade do software. Essa é a parte dos testes mais convencional no Google, mas ainda existem alguns desvios interessantes da norma. Nesta seção, ignoramos os erros arquivados para rastrear itens de trabalho e usamos o termo para identificar o código quebrado real. Como tal, os bugs geralmente representam o fluxo de trabalho de hora em hora e cotidiano para as equipes de engenharia.

Um bug nasce. Os erros são encontrados e arquivados por todos no Google. Os gerentes de produto arquivam bugs quando detectam problemas nas versões iniciais que diferem de suas especificações / pensamentos. Os desenvolvedores arquivam bugs quando percebem que acidentalmente fizeram o check-in de um problema ou encontram um problema em outro lugar na base de código ou enquanto usam os produtos do Google. Os bugs também vêm do campo, de testadores de fontes coletivas, testes de fornecedores externos e são arquivados pelos gerentes da comunidade que monitoram os Grupos do Google específicos do produto. Muitas versões internas de aplicativos também têm maneiras rápidas de arquivar bugs, como o Google Maps. E, às vezes, os programas de software criam bugs por meio de uma API.

David Tonhofer
fonte
0

Fora de um bug / tarefa / ticket / defeito / problema / qualquer instância específica do sistema de rastreamento, essas palavras não têm significado exato e, portanto, discutir a diferença entre elas é inútil. Ao definir seu fluxo de trabalho, você deve definir a terminologia e fornecer descrições.

No meu ambiente atual, um "defeito" é qualquer item no Jira. Parece que o próprio Jira usa o termo "problema". Podemos ter herdado de algum sistema anterior. "Bug" é um tipo de problema quando algo não está funcionando conforme o esperado e descrito na documentação. "Solicitação de recurso" quando algo está funcionando como esperado, mas o empuxo é desejado (pode ser óbvio e importante, mas se o comportamento atual for descrito, ainda será uma solicitação de recurso). Existem mais tipos, mas esses 2 são usados ​​por pessoas fora da equipe de desenvolvimento para solicitar algo.

Se você está escolhendo nomes para tipos de problemas, "bug" e "defeito" são parecidos comigo. A diferença entre eles é estilística. Como o inglês não é minha língua nativa, não consigo ver muito disso e não tenho certeza se o que vejo está correto.

max630
fonte