Maintenant ma question est, un programme informatique va-t-il soudainement mal tourner sans raison logique?
Si vous avez exactement le même environnement informatique, alors donner une entrée X à un programme produira toujours le même résultat R. En pratique, il est rarement d'avoir un seul programme s'exécutant de manière isolée. Aujourd'hui, l'application la plus simple s'exécute dans un système d'exploitation et partage la mémoire avec d'autres programmes qui peuvent être «chargés» en même temps. Ces programmes peuvent altérer la mémoire d'une manière qui provoque des dysfonctionnements d'un programme donné. C'est un problème connu avec les variables de type 'pointeur' par exemple. De telles erreurs provoquent généralement des comportements anormaux du système et non des résultats de calcul erronés.
Dans votre cas, je suppose que le problème n'est pas (et n'est généralement pas) ce que j'ai décrit ci-dessus. Le problème peut être que:
- le programme a utilisé le ou les mauvais types de données pour calculer le résultat, cette erreur ne se manifeste que lorsque des valeurs spéciales sont utilisées.
- le programme a rencontré une erreur de calcul (en raison d'une condition logique) mais n'a pas géré l'erreur et a tout de même produit le résultat. (par exemple, mélange d'arithmétique flottante et entière)
- une règle métier ou une condition logique n'a pas été codée correctement, les données saisies représentent cette condition mais un mauvais calcul a été utilisé. (par exemple, soustrayez le montant du montant du compte avant de vérifier d'abord le montant dans le compte).
- en utilisant des formules qui s'appliquent uniquement à une certaine plage de nombres mais les données contiennent une plage différente. (par exemple, calcul d'un taux d'intérêt basé sur une plage de valeurs)
En raison de ce qui précède et de nombreuses autres raisons pour lesquelles les gens dépensent autant de ressources en logiciels pour essayer de créer un logiciel correct, cependant, des erreurs de logiciel se produisent toujours, mais les erreurs sont «logiques» et ont une raison, c'est juste que la raison n'est pas évidente à certains sans bonne recherche. Ainsi, en général, les logiciels testés sont prévisibles et ne produisent pas de résultats aléatoires. En raison de la complexité de certains programmes et d'autres facteurs, même les programmes testés peuvent mal tourner, mais lorsque cela se produit, les erreurs sont pour une raison logique.
Si je claque sur la machine serveur, l'un des nombres calculés par l'ordinateur deviendra-t-il un autre nombre et fera-t-il un mauvais calcul?
La réponse est non en général, les logiciels ne sont pas fragiles en ce sens.
Ce que vous pouvez faire est d'isoler les cas où l'erreur se produit, de trouver la similitude entre ces ensembles de données à l'origine de l'erreur et de trouver la différence entre ces ensembles et les autres ensembles qui produisent le résultat correct. Vous pourrez peut-être identifier l'ensemble de valeurs spécifiques à l'origine du problème. Par exemple, vous pouvez constater que chaque fois qu'une variable a une valeur négative, le résultat est incorrect.
Informations mises à jour sur les erreurs de corruption de mémoire: voir la corruption de mémoire