Estou desenvolvendo um programa usando uma biblioteca feita por outro programador (ele trabalha na mesma empresa). Recentemente, descobri um vazamento na biblioteca, que ocorre sob certas condições de rede após algumas horas de execução. Eu arquivei um bug com a descrição das condições para fazer esse vazamento acontecer. O desenvolvedor respondeu que "isso não é suficiente", "não é responsabilidade dele reproduzir bugs" e eu tenho que criar um teste de unidade para reproduzir esse bug, caso contrário ele não fará nada.
- Ele está certo?
- O que eu posso fazer nessa situação? Criar teste de unidade é impossível, porque depende de alguns tempos aleatórios da rede.
teamwork
collaboration
user626528
fonte
fonte
Respostas:
Ele está certo? Provavelmente é uma pergunta que realmente não pode ser respondida sem conhecer sua empresa. No entanto, ele certamente não está sendo muito útil.
Eu levantaria o erro com ele (o que você fez), se estiver causando um problema em seu projeto, eu o elevaria como um bloqueador com seu gerente de projeto e deixaria bem claro que você levantou o bug com a devida pessoa, mas afetará seu projeto se não for corrigido imediatamente.
Eu também falava com o desenvolvedor e explicava por que é inviável criar testes de unidade, mas você ficaria feliz em mostrá-lo na sua máquina (supondo que isso seja viável?).
fonte
Ele está 100% certo de que você deve fornecer informações suficientes para tornar o bug reproduzível - caso contrário, não há chance de descobrir se alguma correção fornecida por ele realmente funcionará.
Mas - ele está IMHO 100% errado que isso deve estar na forma de um teste de unidade. Se você pode descrever um cenário de teste de uma maneira que ele possa reproduzir a falha (pelo menos com uma alta probabilidade em um período de tempo razoável ou por teste manual), você tem uma prova de que o problema existe - o que deve definir seu colega na responsabilidade de corrigi-lo. Obviamente, se você conseguir criar um cenário que reproduza o bug mais rapidamente, isso seria útil para ele. O ideal seria fazer um teste automatizado com isso, e isso depende da sua organização, que é responsável por isso.
fonte
Ambos os lados devem se esforçar.
O desenvolvedor da biblioteca deve fazer um esforço adicional, mesmo sem testes de unidade, porque alguns problemas não podem ser reproduzidos com testes de unidade. Às vezes é hardware, às vezes é uma sequência específica de ações corretas do restante do programa que faz com que a biblioteca produza resultados ruins.
Você deve fazer algum esforço adicional, porque depois de tudo isso não será um bug na biblioteca, mas resultado de ações incorretas do restante do programa (por exemplo, heap corrompido pode fazer com que qualquer biblioteca se comporte estranhamente). Portanto, faz sentido reduzir o máximo possível de códigos que não sejam da biblioteca envolvidos na reprodução de bugs. E você provavelmente fará isso mais rápido e limpo do que uma pessoa não familiarizada com o código do seu aplicativo.
fonte
Se o autor da biblioteca não conseguir reproduzir o bug com base no seu relatório, não é razoável esperar que ele gaste muito tempo nele, muito menos corrigi-lo.
Mas você também tem uma quantidade limitada de tempo trabalhando em um produto que é periférico ao seu interesse. Infelizmente, isso pode significar que o bug continua a existir e não é feito nenhum trabalho para resolvê-lo.
Felizmente, isso não é necessariamente um desastre - enquanto em um mundo ideal, todos os softwares seriam livres de bugs, não é esse o caso, e, portanto, precisamos priorizar com base nos problemas que isso causa nos EUA.
Isso significa que é realmente de sua responsabilidade desenvolver um caso de teste reproduzível SE VOCÊ QUER FIXAR. Você pode não se importar se isso é corrigido e, nesse caso, você fez tudo o que pode e deve ser esperado de você. Você pode querer consertá-lo, mas não o suficiente para dedicar tempo para torná-lo reproduzível neste momento. Isso é perfeitamente aceitável.
Relatar um bug da melhor maneira possível, no momento em que você tiver que lidar com isso, é simplesmente uma boa cidadania; você não precisa ir além, a menos que seja necessário para o seu programa. E você pode não querer fazê-lo, mesmo assim, pode haver outra biblioteca que você possa usar ou pode ser possível criar sua própria em um período de tempo razoável. Basicamente, cabe a você decidir o que e que tipo de esforço vale a pena para você.
fonte
Eu estaria inclinado a deixar os cachorros dormirem por enquanto - você levantou a questão e ela é atribuída a ele. Presumivelmente, existem processos para rastrear erros pendentes e persegui-los?
Se você deseja progredir ativamente ainda mais, sugiro conversar com seu gerente para verificar se existem ferramentas de teste disponíveis que possam reproduzir o problema de maneira confiável.
Do lado do desenvolvedor - seria seriamente inerte da parte deles não fazer nada, desde que você tenha fornecido as informações necessárias. Pode ser possível, no entanto, que eles tenham uma enorme carga de trabalho, portanto, não podem dedicar o tempo necessário para acompanhar o problema.
fonte
Você encontrou um bug, denunciou e ele está sendo um idiota por causa disso.
Se vocês fossem amigos íntimos, ele teria feito algo para ajudar, mas preferiria apenas empurrar a questão de volta.
Você pode fazer mais relatando mais detalhes e tentando apoiar suas alegações de que está vazando memória. Ainda assim, você tem suas próprias responsabilidades e precisa terminar seu próprio trabalho.
Faça o máximo possível de informações no rastreador de erros e siga em frente.
Se você vir essa pessoa novamente no futuro. Seja amigável, tente falar sobre interesses comuns e entenda que os bons relacionamentos são uma maneira muito mais eficaz de consertar as coisas e, em seguida, qualquer quantidade de fatos que você possa fornecer para apoiar uma reivindicação.
fonte
Muitas vezes, o que eu encontrei em situações semelhantes é uma suposição de que todos os bugs devem ser corrigidos e, embora seja admirável, é definitivamente um grande objetivo a ter (vamos admitir que nunca pretendemos escrever bugs!) qualquer projeto de tamanho decente para corrigir um erro apenas porque é um erro (se você pode encontrá-lo!) É por isso que temos metodologias, padrões e práticas de gerenciamento e codificação de projetos, etc.
Então, uma coisa que eu diria em defesa do proprietário da biblioteca (e foi o caso quando trabalhei em alguns grandes projetos) é que o tempo de desenvolvimento custa dinheiro e é um recurso finito, e a decisão sobre como o relatório é tratado , que investiga, quais testes são produzidos / necessários e, finalmente, se (e se sim, quando) uma correção é implementada se baseia puramente no impacto nos negócios. Qual é o impacto de reiniciar seu processo de longa execução de vez em quando, se ele falhar e você pode automatizá-lo facilmente (e talvez você não deva já ser uma medida defensiva de programação?), É apenas hora ou há mais? ?
Observe também, do ponto de vista deles, um relatório de bug de um usuário sobre um problema imprevisível em um pedaço de código que acontece muito raramente, apenas em conjunto com o código, possivelmente apenas em uma máquina e apenas com um tempo incomum. As condições simplesmente não terão uma justificativa forte para que um grande período de tempo de desenvolvimento encontre e corrija - se for possível. Mas se for um caso de negócios suficientemente forte para que o usuário deseje / precise dedicar um tempo para investigar mais detalhadamente e fornecer um caso / aplicativo de teste confiável ou uma descrição de problema radicalmente mais detalhada que a inicial, então pode ser outro jogo. .
Talvez essa seja uma questão de comunicação que o proprietário da biblioteca não considerou colocar dessa maneira e se você tem um caso comercial sólido (como seu código é caro para a empresa, tem um requisito de conformidade legal, falha de segurança ou tem algum outro grande efeito indireto), então é hora de contatá-lo com a gerência e deixá-los lutar.
fonte
Você mencionou que 'arquivei um bug com a descrição das condições para fazer esse vazamento acontecer'.
Se você tem certeza de que a descrição é realmente suficiente para reproduzir o bug, já conhece as condições exatas. Agora, se você não pode escrever um teste de unidade após conhecer as condições, isso significa claramente que você não pode zombar de alguns dos componentes envolvidos ou de algumas partes do código estarem muito acopladas para permitir a criação de um teste de unidade prático.
Você deve pedir ao proprietário da biblioteca para refatorar o código para permitir a criação de teste de unidade. Você terá que explicar claramente o que está na biblioteca que está impedindo você de criar um teste de unidade. Ele terá que refatorar o código, caso contrário, conceda que o teste de unidade não é possível com o código atual. Nos dois sentidos, você vence.
Se isso não funcionar, a seguir estão as opções que você possui:
fonte