ตอนนี้คำถามของฉันคือโปรแกรมคอมพิวเตอร์จะเกิดข้อผิดพลาดโดยไม่มีเหตุผลหรือไม่?
หากคุณมีสภาพแวดล้อมการประมวลผลที่เหมือนกันดังนั้นการป้อนอินพุต X ให้กับโปรแกรมจะให้ผลลัพธ์ที่เหมือนกันเสมอ R ในทางปฏิบัติมันแทบจะไม่ต้องมีโปรแกรมเดียวที่ทำงานแยกกัน แอปพลิเคชั่นที่ง่ายที่สุดในวันนี้ทำงานในระบบปฏิบัติการและแชร์หน่วยความจำกับโปรแกรมอื่น ๆ ที่อาจ 'โหลด' ในหน่วยความจำในเวลาเดียวกัน โปรแกรมเหล่านี้อาจเปลี่ยนแปลงหน่วยความจำในลักษณะที่ทำให้โปรแกรมทำงานผิดปกติ นี่เป็นปัญหาที่มีชื่อเสียงเกี่ยวกับตัวแปรประเภท 'ตัวชี้' เช่น โดยปกติข้อผิดพลาดดังกล่าวทำให้เกิดพฤติกรรมของระบบที่ผิดปกติและไม่ได้ผลการคำนวณที่ผิด
ในกรณีของคุณฉันคิดว่าปัญหาอาจจะ (และมักจะเป็น) ไม่ใช่สิ่งที่ฉันได้อธิบายไว้ข้างต้น ปัญหาอาจเป็นได้ว่า:
- โปรแกรมใช้ประเภทข้อมูลที่ไม่ถูกต้องในการคำนวณผลลัพธ์ข้อผิดพลาดนั้นจะปรากฏเฉพาะเมื่อมีการใช้ค่าพิเศษ
- โปรแกรมพบข้อผิดพลาดในการคำนวณ (เนื่องจากสภาพตรรกะ) แต่ไม่ได้จัดการกับข้อผิดพลาดและยังคงสร้างผลลัพธ์ (เช่นการผสมทศนิยมและเลขจำนวนเต็ม)
- กฎทางธุรกิจหรือเงื่อนไขเชิงตรรกะไม่ได้รับการเข้ารหัสอย่างถูกต้องข้อมูลที่ป้อนแสดงถึงเงื่อนไขนี้ แต่มีการใช้การคำนวณที่ไม่ถูกต้อง (เช่นลบจำนวนเงินจากจำนวนบัญชีก่อนตรวจสอบจำนวนเงินในบัญชีก่อน)
- ใช้สูตรที่ใช้กับช่วงบางช่วงเท่านั้น แต่ข้อมูลมีช่วงที่แตกต่างกัน (เช่นการคำนวณอัตราดอกเบี้ยตามช่วงของค่า)
เนื่องจากเหตุผลด้านบนและสาเหตุอื่น ๆ ที่ผู้ใช้ซอฟต์แวร์ใช้ทรัพยากรจำนวนมากในความพยายามที่จะสร้างซอฟต์แวร์ที่ถูกต้องอย่างไรก็ตามข้อผิดพลาดของซอฟต์แวร์ยังคงเกิดขึ้น แต่ข้อผิดพลาดนั้นเป็น 'ตรรกะ' และมีเหตุผล สำหรับบางคนที่ไม่มีการวิจัยที่ดี ดังนั้นในซอฟต์แวร์ทดสอบทั่วไปสามารถคาดการณ์ได้และไม่ให้ผลลัพธ์แบบสุ่ม เนื่องจากความซับซ้อนของบางโปรแกรมและปัจจัยอื่น ๆ แม้แต่โปรแกรมที่ผ่านการทดสอบก็สามารถผิดพลาดได้ แต่เมื่อมันเกิดขึ้นข้อผิดพลาดก็เป็นเหตุผลเชิงตรรกะ
ถ้าฉันกดเครื่องเซิร์ฟเวอร์หนึ่งในจำนวนที่คอมพิวเตอร์คำนวณจะกลายเป็นหมายเลขอื่นและคำนวณผิดหรือไม่
คำตอบคือไม่โดยทั่วไปซอฟต์แวร์ไม่ได้เปราะบางในกรณีนี้
สิ่งที่คุณสามารถทำได้คือแยกกรณีที่เกิดข้อผิดพลาดค้นหาความคล้ายคลึงกันระหว่างชุดข้อมูลเหล่านี้ทำให้เกิดข้อผิดพลาดและค้นหาความแตกต่างระหว่างชุดวิทยานิพนธ์และชุดอื่น ๆ ที่ให้ผลลัพธ์ที่ถูกต้อง คุณอาจสามารถระบุชุดของค่าเฉพาะที่ทำให้เกิดปัญหาได้ ตัวอย่างเช่นคุณอาจพบว่าทุกครั้งที่ตัวแปรมีค่าลบผลลัพธ์จะไม่ถูกต้อง
อัปเดตข้อมูลเกี่ยวกับข้อผิดพลาดของหน่วยความจำเสียหาย: โปรดดูหน่วยความจำเสียหาย