Now my question is, will a computer program suddenly go wrong without any logical reason?
Se si ha esattamente lo stesso ambiente di calcolo, allora dare un input X ad un programma produrrà sempre lo stesso risultato R. In pratica, raramente è in esecuzione un singolo programma in isolamento. L'applicazione più semplice oggi viene eseguita in un sistema operativo e condivide la memoria con altri programmi che possono essere "caricati" in memoria contemporaneamente. Questi programmi possono alterare la memoria in un modo che rende un determinato malfunzionamento del programma. Questo è un famoso problema con variabili di tipo 'puntatore' per esempio. Solitamente tali errori causano comportamenti anomali del sistema e non risultati di calcolo errati.
Nel tuo caso, suppongo che il problema potrebbe essere (e di solito è) non quello che ho descritto sopra. Il problema potrebbe essere questo:
- il programma ha utilizzato i tipi di dati errati per calcolare il risultato, tale errore si manifesta solo quando vengono utilizzati valori speciali.
- il programma ha riscontrato un errore nel calcolo (a causa di una condizione logica) ma non ha gestito l'errore e ha comunque prodotto il risultato. (ad esempio mescolando il float e l'aritmetica dei numeri interi)
- una regola aziendale o una condizione logica non è stata codificata correttamente, i dati immessi rappresentano questa condizione ma è stato utilizzato il calcolo errato. (ad esempio, sottrarre l'importo dall'account prima di controllare l'importo nell'account).
- utilizzando formule che si applicano solo a determinati intervalli di numeri ma i dati contengono un intervallo diverso. (ad esempio calcolando un tasso di interesse in base a un intervallo di valori)
A causa di quanto sopra e di molte altre ragioni per cui il software spende così tante risorse nel tentativo di creare software corretto, tuttavia, si verificano ancora errori software, ma gli errori sono "logici" e hanno una ragione, è solo che la ragione non è ovvio per alcuni senza una buona ricerca. Quindi, in generale, il software testato è prevedibile e non produce risultati casuali. A causa della complessità di alcuni programmi e di altri fattori, anche i programmi testati possono andare male, ma quando ciò accade, gli errori sono per un motivo logico.
If I slam on the server machine, will one of the number which the computer is calculating, become another number and make the calculation wrong?
La risposta è no in generale, il software non è fragile in questo senso.
Quello che puoi fare è isolare i casi in cui si è verificato l'errore, trovare la somiglianza tra questi insiemi di dati che causano l'errore e trovare la differenza tra i gruppi di tesi e gli altri set che producono il risultato corretto. Potresti essere in grado di identificare il set di valori specifico che causa il problema. Ad esempio potresti scoprire che ogni volta che una variabile ha un valore negativo, il risultato è sbagliato.
Informazioni aggiornate sugli errori di corruzione della memoria:
Per favore vedi Corruzione della memoria