Şimdi sorum şu: Bir bilgisayar programı mantıklı bir neden olmadan aniden yanlış mı gidecek?
Tam olarak aynı bilgi işlem ortamına sahipseniz, bir programa X girişi verildiğinde her zaman aynı sonuç R olur. Uygulamada, nadiren tek bir programın tek başına yürütülmesi nadirdir. Bugün en basit uygulama bir işletim sisteminde çalışır ve belleği aynı anda belleğe 'yüklenebilecek' diğer programlarla paylaşır. Bu programlar, belleği belirli bir program arızasına neden olacak şekilde değiştirebilir. Bu, örneğin 'pointer' tipi değişkenlerle ünlü bir sorundur. Genellikle bu tür hatalar anormal sistem davranışlarına neden olur ve yanlış hesaplama sonuçlarına neden olmaz.
Sizin durumunuzda, sorunun yukarıda tarif ettiğim gibi olmadığını (ve genellikle) olmadığını varsayarım. Sorun şu olabilir:
- program sonucu hesaplamak için yanlış veri tip (ler) i kullandı, bu hata sadece özel değerler kullanıldığında kendini gösterir.
- program hesaplamada bir hatayla karşılaştı (mantıksal bir durum nedeniyle), ancak hatayı işlemedi ve yine de sonuç üretti. (örn. şamandıra ve tamsayı aritmetiğinin karıştırılması)
- bir iş kuralı veya mantıksal bir koşul doğru bir şekilde kodlanmamış, girilen veriler bu koşulu temsil eder, ancak yanlış hesaplama kullanılmıştır. (örneğin, önce hesaptaki tutarı kontrol etmeden önce tutarı hesap tutarından çıkarın).
- yalnızca belirli sayı aralıkları için geçerli olan ancak veriler farklı aralık içeren formüller kullanarak. (örneğin, bir değer aralığına göre bir faiz oranının hesaplanması)
Yukarıdaki ve diğer birçok nedenden dolayı yazılım insanları doğru yazılım oluşturmak için çok fazla kaynak harcıyorlar, ancak yazılım hataları hala oluşuyor, ancak hatalar 'mantıklı' ve bir nedeni var, sadece sebebi açık değil iyi araştırma yapmadan bazılarına. Bu nedenle, genel olarak test edilen yazılım tahmin edilebilir ve rastgele sonuçlar üretmez. Bazı programların karmaşıklığı ve diğer faktörler nedeniyle, test edilen programlar bile yanlış gidebilir, ancak bu olduğunda hatalar mantıklı bir nedendir.
Sunucu makinesine çarptığımda, bilgisayarın hesapladığı sayıdan biri başka bir sayı olur ve hesaplamayı yanlış yapar mı?
Cevap genel olarak hayır, yazılım bu anlamda kırılgan değil.
Yapabileceğiniz şey, hatanın oluştuğu durumları izole etmek, hataya neden olan bu veri kümeleri arasındaki benzerliği bulmak ve bu kümeler ile doğru sonucu üreten diğer kümeler arasındaki farkı bulmaktır. Soruna neden olan belirli değerler kümesini tanımlayabilirsiniz. Örneğin, bir değişkenin her negatif değeri olduğunda, sonucun yanlış olduğunu görebilirsiniz.
Bellek bozulması hataları hakkında güncellenmiş bilgiler: Lütfen Bellek Bozulması'na bakın