การทดสอบพร้อมให้การสนับสนุนและรับประกันการโปรแกรมป้องกัน
การตั้งโปรแกรมการป้องกันป้องกันความสมบูรณ์ของระบบที่รันไทม์
การทดสอบเป็นเครื่องมือวินิจฉัย (ส่วนใหญ่คงที่) ที่รันไทม์การทดสอบของคุณจะไม่ปรากฏให้เห็น มันเหมือนกับนั่งร้านที่ใช้ทำกำแพงอิฐสูงหรือโดมหิน คุณไม่ได้ทิ้งชิ้นส่วนที่สำคัญออกจากโครงสร้างเพราะคุณมีโครงยกที่ยึดไว้ในระหว่างการก่อสร้าง คุณมีนั่งร้านยกมันขึ้นในระหว่างการก่อสร้างเพื่ออำนวยความสะดวกในการวางชิ้นส่วนที่สำคัญทั้งหมด
แก้ไข: การเปรียบเทียบ
สิ่งที่เกี่ยวกับการเปรียบเทียบความคิดเห็นในรหัส?
ความคิดเห็นมีวัตถุประสงค์ แต่อาจซ้ำซ้อนหรือเป็นอันตรายได้ ตัวอย่างเช่นหากคุณใส่ความรู้ที่แท้จริงเกี่ยวกับรหัสลงในความคิดเห็นจากนั้นเปลี่ยนรหัสความคิดเห็นจะไม่เกี่ยวข้องที่ดีที่สุดและเป็นอันตรายที่สุด
ดังนั้นสมมติว่าคุณใส่ความรู้พื้นฐานของโค้ดในการทดสอบเช่น MethodA ไม่สามารถใช้ค่า Null และอาร์กิวเมนต์ของ MethodB ต้องเป็น> 0
เช่นนั้น จากนั้นรหัสจะเปลี่ยน Null ไม่เป็นไรสำหรับ A ในขณะนี้และ B สามารถรับค่าขนาดเล็กเป็น -10 ขณะนี้การทดสอบที่มีอยู่ผิดปกติ แต่จะผ่านต่อไป
ใช่คุณควรอัปเดตการทดสอบในเวลาเดียวกันกับที่คุณอัปเดตรหัส คุณควรอัพเดต (หรือลบ) ความคิดเห็นในเวลาเดียวกันกับที่คุณอัพเดตโค้ด แต่เราทุกคนรู้ว่าสิ่งเหล่านี้ไม่เคยเกิดขึ้นและทำผิดพลาด
การทดสอบจะตรวจสอบพฤติกรรมของระบบ พฤติกรรมที่แท้จริงนั้นเป็นสิ่งที่แท้จริงต่อระบบนั้นเองไม่ใช่เพื่อการทดสอบ
สิ่งที่อาจจะผิดไป?
เป้าหมายที่เกี่ยวข้องกับการทดสอบคือการคิดทุกอย่างที่ผิดพลาดเขียนการทดสอบเพื่อตรวจสอบพฤติกรรมที่ถูกต้องจากนั้นจึงสร้างรหัสรันไทม์เพื่อให้ผ่านการทดสอบทั้งหมด
ซึ่งหมายความว่าการเขียนโปรแกรมการป้องกันเป็นจุด
TDD ไดรฟ์เขียนโปรแกรมป้องกันหากการทดสอบที่ครอบคลุม
การทดสอบเพิ่มเติมการขับขี่โปรแกรมการป้องกันที่มากขึ้น
เมื่อพบข้อบกพร่องอย่างหลีกเลี่ยงไม่การทดสอบเพิ่มเติมจะถูกเขียนขึ้นเพื่อจำลองแบบเงื่อนไขที่แสดงข้อผิดพลาด จากนั้นรหัสจะได้รับการแก้ไขโดยมีรหัสเพื่อให้การทดสอบเหล่านั้นผ่านและการทดสอบใหม่ยังคงอยู่ในชุดการทดสอบ
ชุดทดสอบที่ดีจะผ่านการโต้แย้งทั้งดีและไม่ดีไปยังฟังก์ชัน / วิธีและคาดหวังผลลัพธ์ที่สอดคล้องกัน ในทางกลับกันหมายความว่าองค์ประกอบที่ทดสอบจะใช้การตรวจสอบสภาพก่อนกำหนด (การตั้งโปรแกรมป้องกัน) เพื่อยืนยันข้อโต้แย้งที่ส่งผ่านไป
พูดโดยทั่วไป ...
ตัวอย่างเช่นถ้าอาร์กิวเมนต์ null ของโพรซีเดอร์เฉพาะนั้นไม่ถูกต้องการทดสอบอย่างน้อยหนึ่งครั้งจะผ่านโมฆะและจะต้องมีข้อยกเว้น / ข้อผิดพลาดบางอย่าง
อย่างน้อยหนึ่งการทดสอบอื่น ๆ จะผ่านการโต้แย้งที่ถูกต้องแน่นอน - หรือวนซ้ำผ่านอาร์เรย์ขนาดใหญ่และผ่านการขัดแย้งที่ถูกต้องมากมายและยืนยันว่าสถานะผลลัพธ์นั้นเหมาะสม
หากการทดสอบไม่ผ่านอาร์กิวเมนต์โมฆะนั้นและถูกตบด้วยข้อยกเว้นที่คาดไว้ (และข้อยกเว้นนั้นเกิดขึ้นเนื่องจากรหัสตรวจสอบสถานะที่ถูกส่งผ่านไปอย่างไม่เหมาะสม) ดังนั้นค่า null อาจสิ้นสุดลงที่กำหนดให้กับคุณสมบัติของคลาสหรือฝัง ในคอลเลกชันบางชนิดที่มันไม่ควรจะเป็น
ซึ่งอาจทำให้เกิดพฤติกรรมที่ไม่คาดคิดในบางส่วนที่แตกต่างกันอย่างสิ้นเชิงของระบบที่เช่นชั้นที่ได้รับการส่งผ่านไปในสถานที่ห่างไกลทางภูมิศาสตร์บางอย่างหลังจากที่ซอฟแวร์ที่มีการจัดส่ง และนั่นคือสิ่งที่เรากำลังพยายามหลีกเลี่ยงใช่ไหม?
มันอาจจะแย่กว่านั้นอีก อินสแตนซ์ของคลาสที่มีสถานะที่ไม่ถูกต้องสามารถทำให้เป็นอนุกรมและจัดเก็บได้เพียงเพื่อทำให้เกิดความล้มเหลวเมื่อสร้างขึ้นใหม่เพื่อใช้ในภายหลัง Geez ฉันไม่รู้บางทีมันอาจเป็นระบบควบคุมกลไกบางชนิดที่ไม่สามารถรีสตาร์ทได้หลังจากปิดเครื่องเนื่องจากไม่สามารถกำจัดสถานะการกำหนดค่าถาวรของตนเองได้ หรือเช่นชั้นอาจจะต่อเนื่องและส่งผ่านไปยังระบบที่แตกต่างกันอย่างสิ้นเชิงบางส่วนที่สร้างขึ้นโดยหน่วยงานอื่นบางส่วนและว่าระบบอาจผิดพลาด
โดยเฉพาะอย่างยิ่งหากโปรแกรมเมอร์ของระบบอื่นนั้นไม่ได้รับรหัสป้องกัน