Eu faço controle de qualidade em um grande código comercial, esse cenário irritante surge com muita frequência. Normalmente, é indicativo de não haver procedimentos rígidos para a construção do binário em todas as plataformas suportadas. Portanto, se o desenvolvedor criar seu próprio código (que ele precisa fazer para depurar e corrigir) e não seguir o mesmo procedimento de criação, é possível que os erros dependentes do sistema pareçam desaparecer magicamente (ou apareçam) . É claro que essas coisas geralmente são encerradas com "funciona para mim" no banco de dados de erros e, se falharem na próxima vez em que o problema for executado, o bug poderá ser reaberto. Sempre que suspeito que um bug possa depender do sistema, tento testá-lo em várias plataformas e relato sob quais condições ele ocorre. Muitas vezes, aparece um problema de corrupção de memória onlt se os dados corrompidos forem de magnitude suficientemente grande para causar um travamento. Algumas plataformas (combinações de HW e OS) podem falhar mais perto da fonte real da corrupção, e isso pode ser muito valioso para o pobre coitado que precisa depurá-la.
O testador precisa agregar algum valor agregado, além de apenas relatar que seu sistema mostra uma falha. Eu gasto muito tempo examinando falsos positivos - talvez a plataforma em questão esteja sobrecarregada ou a rede tenha tido uma falha. E sim, às vezes você pode obter algo realmente afetado por eventos de cronometragem aleatórios, os erros de hardware costumam ser como exemplo proto: se duas solicitações de dados retornam exatamente o mesmo período de tempo e a lógica do hardware para lidar com o conflito em potencial está com defeito, então o bug só aparecerá intermitentemente. Da mesma forma com o processamento paralelo, a menos que, por um design cuidadoso, você restrinja a solução a ser independente de qual processador é mais rápido, você pode obter bugs que acontecem apenas uma vez na lua azul, e sua importância estatística torna a depuração um pesadelo.
Além disso, nosso código está sendo atualizado, geralmente muitas vezes ao dia, rastreando um número exato de revisão de código fonte para quando foi para o sul, podendo ser uma informação muito útil para o esforço de depuração. O testador não deve estar em um relacionamento adversário com os depuradores e desenvolvedores, ele está lá como parte de uma equipe para melhorar a qualidade do produto.