Como lidar com bugs que eu acho que corrigi, mas não tenho certeza

13

Existem alguns tipos de bugs que são muito difíceis de reproduzir, ocorrem muito raramente e aparentemente aleatoriamente. Pode acontecer que eu encontre uma causa possível, corrija-a, teste o programa e não consiga reproduzir o bug. No entanto, como era impossível reproduzir o bug de forma confiável e isso acontecia tão raramente, como posso indicar isso em um rastreador de erros? Qual é a maneira comum de fazer isso?

Se eu definir o statusfixo, e o solutionfixo, isso significaria algo completamente fixo, não é?

É prática comum definir statuscomo fixo e solutionabrir, para indicar aos testadores que "provavelmente está fixo, mas precisa de mais atenção para garantir"?

Edit: a maioria (se não todos) dos rastreadores de bugs tem duas propriedades para o status de um bug, talvez os nomes não sejam os mesmos. Por statusQuero dizer novo, atribuído fixo, fechado, etc. , e solutioneu quero dizer aberta (novo), fixa, insolúvel, não reproduzível, duplicar, não um bug , etc.

vsz
fonte
3
Isso é um pouco específico para o seu rastreador de erros. Quais outros valores você pode atribuir ao status e à solução ?
scarfridge
Em alguns rastreadores de erros, há um status de resolvido e outro de fechado. Somente pessoas de controle de qualidade têm permissão para definir o status como fechado, mas os desenvolvedores podem definir o status como resolvido.
27712 Brian

Respostas:

8

É prática comum definir o status como fixo e abrir a solução, para indicar aos testadores que "provavelmente está fixo, mas precisa de mais atenção para garantir"?

Comum ou não, esta é a coisa certa a ser feita de qualquer maneira, e você explicou por que você mesmo: não importa como, é uma boa abordagem para

indicam aos testadores que "provavelmente está consertado, mas precisa de mais atenção para garantir"


Nota lateral, mesmo que o rastreador de erros em particular não tenha um campo como o que você descreve solution, o desenvolvedor pode pelo menos adicionar um comentário de forma livre explicando acima.

... e se o rastreador de erros não permitir adicionar comentários ao problema, ele deverá ser substituído por um que permita. A capacidade de adicionar esclarecimentos de forma livre é um recurso extremamente importante, pois os problemas variam muito para caber em alguma forma predefinida.

mosquito
fonte
6

A equipe de teste decidirá se o problema foi resolvido e se pode ser fechado. Se houver mais regressões, efeitos colaterais da correção ou se a correção em si não for eficaz em outro cenário, o problema será reaberto. Mas se você já fez testes de desenvolvedor suficientes, é melhor marcá-lo como corrigido.

eminência
fonte
+1 - Esta é a resposta mais simples. Se você se esforçou ao máximo, e o conjunto de testes das equipes de teste é forte o suficiente, o que mais você pode fazer?
ozz
3

Existem tipos de bugs que são muito difíceis de reproduzir, ocorrem muito raramente e aparentemente aleatoriamente. Pode acontecer que eu encontre uma causa possível, corrija-a, teste o programa e não consiga reproduzir o bug.

Na verdade, se eu não houver um cenário de teste reproduzível, nem tentarei consertar esse bug com antecedência. Se você quiser que o testador preste mais atenção, dê a eles a chance de criar um cenário reproduzível.

Por exemplo, digamos que você altere o programa, e um testador investe 1 hora na tentativa de reproduzir o bug, e o bug não aparece - foi uma hora suficiente? Ou está testando ainda mais uma perda de tempo porque o bug já foi corrigido?

Por outro lado, quando você não altera o programa e o erro não aparece em uma hora, provavelmente o testador deve investir outra hora na tentativa de coisas diferentes. E quando o testador investe um dia e não consegue mais reproduzir o erro - vale a pena tentar corrigi-lo?

Dito isso, você pode pensar em como modela esse processo no seu sistema de rastreamento de bugs: não tentar consertá-lo e entregá-lo aos testadores pode ser um status de bug como "aberto". Se os testadores não puderem reproduzi-lo, é obviamente "não reproduzível". Felizmente, isso não acontece, eles encontram um cenário reproduzível, você pode encontrar a causa raiz do seu bug, corrigi-lo e definir o status como "corrigido". Tente evitar entrar em algo como "não sei se está consertado".

Doc Brown
fonte
4
Para certos tipos de erros, um cenário de teste reproduzível simplesmente não existe. Por exemplo, um bug relacionado ao tempo pode ocorrer 1 vez em um milhão em média - mas é impossível prever se será na 3ª ou na 532454ª execução. No entanto, esses erros são erros e devem ser corrigidos.
Joonas Pulakka
3
@Joonas Pulakka: Eu concordo. E esses erros podem depender de circunstâncias externas. No caso de embutidos, eles podem depender de picos de energia causados ​​por algo fora de seu controle. Não tentar consertá-lo nem sempre é a melhor solução, especialmente se encontrar um cheiro de código que suspeito que possa ser a causa desse bug. Nesse caso, por que não devo corrigi-lo?
vsz
2
@JoonasPulakka: para a minha experiência sobre cenários reproduzíveis, na maioria dos casos em que as pessoas dizem "não é possível", faltam apenas a idéia certa de tornar as coisas possíveis. No seu exemplo, pode-se configurar um cenário com um loop de "10 milhões de execuções", tornando pelo menos muito provável a exibição do bug em um período de tempo razoável.
Doc Brown)
2
@ vsz: você deve corrigi-lo, é claro, mas o que estou sugerindo é que primeiro você crie um teste (ou dê aos testadores uma dica do que testar) e, em seguida, corrija-o, e não vice-versa.
Doc Brown)
2
O @DocBrown está certo, outra maneira de pensar é que às vezes os bugs exigem uma abordagem estatística para "reproduzi-los". É bem possível que exista um conjunto muito específico de entradas / circunstâncias que reproduz o erro, mas você NÃO deve ter idéia do que são essas entradas e o conjunto de possíveis entradas pode ser grande demais para percorrer. Nesses casos, uma abordagem é coletar estatísticas sobre a ocorrência do bug toda vez que você tentar solucioná-lo. Pode levar muito tempo, e os resultados podem não lhe dar 100% de "confiança" no sentido estatístico, mas às vezes isso é tudo o que você tem.
Angelo
0

Às vezes, a única evidência que você tem é puramente estatística, por exemplo, ocorre uma ou duas vezes por mês, mas aparentemente não está conectada a nada. No geral, esse é o pior tipo de bug para diagnosticar e resolver que já encontrei, porque você não pode dizer se suas correções têm algum efeito com certeza. A última delas que tive que resolver terminou com uma correção estatística: a frequência do sintoma caiu para 10% com a qual começamos. A peça final nunca foi encontrada, ou talvez tenha sido, mas ninguém tinha como dizer.

Dois conselhos que tenho são: (1) suponha que várias causas possam estar em vigor até que você saiba o contrário; e (2) faça uma hipótese de como os sintomas podem existir e, em seguida, destrua todas as linhas de lógica que estejam envolvidas remotamente. Às vezes, orientações profundas são o único meio para um fim satisfatório.

Chris Cochran
fonte