Teraz moje pytanie brzmi: czy program komputerowy nagle pójdzie nie tak bez żadnego logicznego powodu?
Jeśli masz dokładnie to samo środowisko komputerowe, wówczas podanie X programu zawsze daje ten sam wynik R. W praktyce rzadko zdarza się, aby pojedynczy program działał osobno. Najprostsza aplikacja działa dzisiaj w systemie operacyjnym i współdzieli pamięć z innymi programami, które mogą być jednocześnie „ładowane” do pamięci. Programy te mogą zmieniać pamięć w sposób, który powoduje nieprawidłowe działanie danego programu. Jest to znany problem np. Ze zmiennymi typu „wskaźnik”. Zwykle takie błędy powodują nieprawidłowe zachowanie systemu i nieprawidłowe wyniki obliczeń.
W twoim przypadku zakładam, że problemem może być (i zwykle nie jest) to, co opisałem powyżej. Problemem może być to, że:
- program użył niewłaściwych typów danych do obliczenia wyniku, błąd ten objawia się tylko wtedy, gdy używane są wartości specjalne.
- program napotkał błąd w obliczeniach (z powodu warunku logicznego), ale nie poradził sobie z błędem i nadal wygenerował wynik. (np. mieszanie arytmetyki zmiennoprzecinkowej)
- reguła biznesowa lub warunek logiczny nie został poprawnie zakodowany, wprowadzone dane reprezentują ten warunek, ale użyto niepoprawnego obliczenia. (np. odejmij kwotę od kwoty konta, zanim najpierw sprawdzisz kwotę na koncie).
- używając formuł, które dotyczą tylko określonego zakresu liczb, ale dane zawierają inny zakres. (np. obliczanie stopy procentowej w oparciu o zakres wartości)
Ze względu na powyższe i wiele innych powodów, dla których ludzie oprogramowania spędzają tak dużo zasobów, próbując stworzyć prawidłowe oprogramowanie, nadal występują błędy oprogramowania, ale błędy są „logiczne” i mają powód, po prostu powód nie jest oczywisty dla niektórych bez dobrych badań. Ogólnie rzecz biorąc, testowane oprogramowanie jest przewidywalne i nie daje losowych wyników. Ze względu na złożoność niektórych programów i inne czynniki nawet przetestowane programy mogą pójść nie tak, ale kiedy tak się dzieje, błędy są z logicznego powodu.
Jeśli uderzę w serwer, czy jeden z obliczanych przez komputer liczb stanie się innym i sprawi, że obliczenia będą błędne?
Odpowiedź brzmi: nie, oprogramowanie nie jest w tym sensie kruche.
Co możesz zrobić, to wyizolować przypadki, w których występuje błąd, znaleźć podobieństwo między tymi zestawami danych powodującymi błąd i znaleźć różnicę między tymi zestawami a innymi zestawami, które dają poprawny wynik. Możesz być w stanie zidentyfikować konkretny zestaw wartości powodujących problem. Na przykład może się okazać, że za każdym razem, gdy zmienna ma wartość ujemną, wynik jest błędny.
Zaktualizowano informacje o błędach uszkodzenia pamięci: Zobacz Uszkodzenie pamięci