Ora la mia domanda è: un programma per computer andrà improvvisamente storto senza alcun motivo logico?
Se hai esattamente lo stesso ambiente di elaborazione, quindi dare un input X a un programma produrrà sempre lo stesso risultato R. In pratica, raramente un singolo programma viene eseguito in modo isolato. 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 modo da causare malfunzionamenti a un determinato programma. Questo è un problema famoso, ad esempio con variabili di tipo 'pointer'. Di solito tali errori causano comportamenti anomali del sistema e risultati di calcolo non errati.
Nel tuo caso, presumo che il problema potrebbe essere (e di solito lo è) non quello che ho descritto sopra. Il problema potrebbe essere che:
- 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 es. miscelazione di float e numeri interi aritmetici)
- una regola aziendale o una condizione logica non sono state codificate correttamente, i dati immessi rappresentano questa condizione ma è stato utilizzato il calcolo errato. (ad es. sottrarre l'importo dall'importo del conto prima di verificare prima l'importo nel conto).
- utilizzando formule che si applicano solo a un determinato intervallo di numeri ma i dati contengono un intervallo diverso. (ad es. calcolo di un tasso di interesse basato su un intervallo di valori)
A causa di quanto sopra e di molti altri motivi per cui le persone software spendono 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 è ovvia 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 storti, ma quando ciò accade, gli errori sono per una ragione logica.
Se sbatto sul server, uno dei numeri calcolati dal computer diventerà un altro numero e il calcolo sarà errato?
La risposta è no in generale, il software non è fragile in questo senso.
Quello che puoi fare è isolare i casi in cui si verifica l'errore, trovare la somiglianza tra questi insiemi di dati che causano l'errore e trovare la differenza tra questi insiemi e gli altri insiemi che producono il risultato corretto. Potrebbe essere possibile identificare l'insieme specifico di valori che causano 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: vedere Corruzione della memoria