Agora, minha pergunta é: um programa de computador de repente dará errado, sem qualquer motivo lógico?
Se você tiver exatamente o mesmo ambiente de computação, a entrada X de um programa sempre produzirá o mesmo resultado R. Na prática, raramente é possível executar um único programa isoladamente. Hoje, o aplicativo mais simples é executado em um sistema operacional e compartilha memória com outros programas que podem ser 'carregados' na memória ao mesmo tempo. Esses programas podem alterar a memória de maneira a causar mau funcionamento de um determinado programa. Este é um problema famoso com variáveis do tipo 'ponteiro', por exemplo. Geralmente, esses erros causam comportamentos anormais do sistema e não resultados de cálculos incorretos.
No seu caso, suponho que o problema possa não ser (e geralmente não é) o que descrevi acima. O problema pode ser o seguinte:
- o programa usou o (s) tipo (s) de dados errado (s) para calcular o resultado, esse erro só se manifesta quando valores especiais são usados.
- o programa encontrou um erro no cálculo (devido a uma condição lógica), mas não tratou do erro e ainda produziu o resultado. (por exemplo, mistura de float e aritmética inteira)
- uma regra de negócios ou uma condição lógica não foi codificada corretamente, os dados inseridos representam essa condição, mas o cálculo errado foi usado. (por exemplo, subtraia o valor do valor da conta antes de verificar o valor na conta primeiro).
- usando fórmulas que se aplicam apenas a determinado intervalo de números, mas os dados contêm um intervalo diferente. (por exemplo, calcular uma taxa de juros com base em uma faixa de valores)
Por causa do exposto e de muitos outros motivos pelos quais as pessoas do software gastam tantos recursos na tentativa de criar software correto, no entanto, os erros de software ainda ocorrem, mas os erros são 'lógicos' e têm um motivo, apenas que o motivo não é óbvio. para alguns sem boas pesquisas. Portanto, em geral, o software testado é previsível e não produz resultados aleatórios. Devido à complexidade de alguns programas e outros fatores, até os programas testados podem dar errado, mas quando isso acontece, os erros são por um motivo lógico.
Se eu bater na máquina do servidor, um dos números calculados pelo computador se tornará outro número e cometerá erros de cálculo?
A resposta é não, em geral, o software não é frágil nesse sentido.
O que você pode fazer é isolar os casos em que o erro está ocorrendo, encontrar a semelhança entre esses conjuntos de dados que causam o erro e encontrar a diferença entre esses conjuntos e os outros conjuntos que produzem o resultado correto. Você pode identificar o conjunto específico de valores que está causando o problema. Por exemplo, você pode achar que toda vez que uma variável tem um valor negativo, o resultado está errado.
Informações atualizadas sobre erros de corrupção de memória: Consulte Corrupção de memória