Temos um site multilíngue no qual um bug foi descoberto há alguns dias. Ele exibia dados de outros idiomas em outro idioma e também a mistura de dados como idioma inglês foi selecionada, mas exibia dados de outros idiomas também na página e vice-versa. Ele está fazendo isso com pouca frequência, mas está presente no site. Passar pelo código também não ajuda, porque isso nem sempre ocorre.
Alguma sugestão para encontrar o problema em tempo hábil? Estou pedindo estratégias aqui.
web-development
testing
bug
maz3tt
fonte
fonte
Respostas:
O primeiro passo é tentar caracterizar o que pode causar esse tipo de problema. Como isso está relacionado à seleção do idioma correto para as seções do código, comece considerando o seguinte:
Agora, uma vez que você caracterizou as possibilidades do que pode dar errado, é hora para ter certeza de que os dados que você precisa para tentar descobrir o que fez de errado movimento.
Por fim, depois de restringir o problema ao ponto de saber como reproduzi-lo e o que o causa, escreva o menor teste automatizado possível para forçar o problema no código. Se você reduziu o problema a uma classe ou se um par de classes não estava funcionando corretamente corretamente, reproduza-o nesse nível. Você não precisa gerar 100 threads para fazer isso, basta fazer o menor teste que pode causar o problema 100% do tempo.
Agora você pode corrigi-lo e estar razoavelmente confiante de que não voltará a morder você novamente.
fonte
O bug não é irreprodutível. Você ainda não descobriu como reproduzi-lo ainda.
Nenhum bug é aleatório, a menos que você esteja lançando uma exceção com base no valor de retorno de alguma instrução Random ().
Eu sei que isso pode parecer semântica, mas é reconfortante mentalmente contar isso para si mesmo.
É muito difícil e frustrante descobrir como reproduzir um bug que só acontece por causa de condições complexas de corrida ou algo assim.
Quanto à forma de encontrá-lo, eu ativaria / adicionaria alguns logs ao aplicativo em locais que pudessem fornecer mais informações.
Em seguida, diga às pessoas que estão vendo o bug (sejam Devs, controle de qualidade, usuários finais) que reportem assim que o veem com o horário em que ocorreu e, em seguida, consulte seus logs. Peça-lhes outras informações, assim como o bug só pode ocorrer devido à interação de vários sistemas diferentes ou devido a uma condição de corrida
Espero que você seja capaz de encontrar uma pista.
fonte
Você pode tentar encontrar lugares no seu código onde reconheça que o problema ocorreu (parâmetros inconsistentes em um método, por exemplo), adicionar as verificações ao seu código e permitir que eles adicionem informações extras ao log de depuração (como um rastreamento de pilha, objetos adicionado à sessão etc.)
Fazendo isso com um pouco de sorte, você pode capturar informações sobre as ocorrências e deduzir o caminho de volta ao problema.
fonte
A automação deve ajudar, se forem os mesmos passos para reproduzir que às vezes falham, automatize isso e coloque-o em um loop. Execute 50.000 vezes e é muito provável que ocorra.
fonte
tente encontrar padrões para definir as condições que causam esse problema. Isso deve indicar as seções do seu código que falham (ou se comportam de maneira inconsistente).
fonte
Você consegue detectar quando o problema está ocorrendo? Nesse caso, você pode despejar informações com segurança sobre o estado do sistema nesse momento?
Se a resposta para essas duas perguntas for afirmativa, instrumente seu código para registrar o máximo de informações possível quando o erro realmente ocorrer e aguarde.
Isso não substitui o que os outros sugeriram (você ainda precisará raciocinar sobre como o código pode entrar no estado que está vendo), mas desde que não seja possível reproduzir o bug à vontade, é uma boa idéia não desperdiçar as ocasiões em que aparece.
fonte