ทำไม TDD ถึงทำงาน [ปิด]
วันนี้การพัฒนาที่ขับเคลื่อนด้วยการทดสอบ (TDD)มีขนาดใหญ่ ฉันมักจะเห็นว่าแนะนำเป็นวิธีแก้ปัญหาที่หลากหลายในโปรแกรมเมอร์ SE และสถานที่อื่น ๆ ฉันสงสัยว่าทำไมมันถึงได้ผล จากมุมมองทางวิศวกรรมมันทำให้ฉันไขปริศนาด้วยเหตุผลสองประการ: วิธีการ "เขียนการทดสอบ + การปรับปรุงซ้ำจนผ่าน" มีลักษณะต่อต้านวิศวกรรมอย่างไม่น่าเชื่อ หากวิศวกรโยธาใช้วิธีการก่อสร้างสะพานหรือนักออกแบบรถยนต์สำหรับรถยนต์ของพวกเขาพวกเขาจะปรับเปลี่ยนสะพานหรือรถยนต์ในราคาที่สูงมากและผลที่ได้จะเป็นปัญหาที่ปะปนกับสถาปัตยกรรมที่ไม่คิด . แนวทาง "refactor จนถึงผ่าน" มักถูกนำมาใช้เป็นคำสั่งให้ลืมการออกแบบสถาปัตยกรรมและทำสิ่งที่จำเป็นเพื่อให้สอดคล้องกับการทดสอบ; กล่าวอีกนัยหนึ่งการทดสอบแทนผู้ใช้กำหนดข้อกำหนด ในสถานการณ์เช่นนี้เราจะรับประกัน "ความสามารถ" ที่ดีในผลลัพธ์ได้อย่างไรเช่นผลลัพธ์สุดท้ายที่ไม่เพียง แต่ถูกต้อง แต่ยังขยายได้แข็งแกร่งใช้งานง่ายเชื่อถือได้ปลอดภัยปลอดภัย ฯลฯ นี่คือสิ่งที่สถาปัตยกรรมมักจะทำ การทดสอบไม่สามารถรับประกันได้ว่าระบบทำงานได้; มันสามารถแสดงให้เห็นว่ามันไม่ได้ กล่าวอีกนัยหนึ่งการทดสอบอาจแสดงให้คุณเห็นว่าระบบมีข้อบกพร่องหากการทดสอบล้มเหลว แต่ระบบที่ผ่านการทดสอบทั้งหมดนั้นไม่ปลอดภัยกว่าระบบที่ล้มเหลว การครอบคลุมการทดสอบคุณภาพการทดสอบและปัจจัยอื่น ๆ มีความสำคัญที่นี่ ความรู้สึกปลอดภัยที่ผิด ๆ ที่ผลลัพธ์ "สีเขียวทั้งหมด" ก่อให้เกิดกับคนจำนวนมากได้รับการรายงานในอุตสาหกรรมโยธาและการบินและอวกาศว่าเป็นอันตรายอย่างยิ่งเพราะมันอาจถูก interepreted เป็น "ระบบไม่ดี" เมื่อมันหมายถึง "ระบบดี เป็นกลยุทธ์การทดสอบของเรา " บ่อยครั้งที่กลยุทธ์การทดสอบไม่ได้รับการตรวจสอบ หรือใครเป็นคนทดสอบการทดสอบ? โดยสรุปฉันกังวลเกี่ยวกับบิต "ที่ขับเคลื่อน" …