คำตอบของฉันซึ่งอาจจะค่อนข้างแปลกในตอนแรกคือ: คุณไม่หาเวลาในการทดสอบเพราะคุณคิดว่าการทดสอบจะต้องทำกับผลข้างเคียงของรหัส และด้วยผลข้างเคียงฉันหมายถึงศัพท์วิทยาศาสตร์คอมพิวเตอร์ :
ฟังก์ชั่น (... ) ถูกกล่าวว่ามีผลข้างเคียงถ้านอกเหนือจากการคืนค่าแล้วมันยัง (... ) มีปฏิสัมพันธ์ที่สังเกตได้กับ (... ) โลกภายนอก
ฉันนำเสนอคำพูดเพื่อเน้นส่วน "การโต้ตอบกับโลกภายนอก": คุณต้องการให้การทดสอบเกิดขึ้นบน UI เนื่องจากมันถูกพิมพ์บนหน้าจอ ("[เพื่อเริ่มการทดสอบ] เป็นไปไม่ได้จริง ๆ เพราะคุณจำเป็นต้องใช้งานได้จริง UI เพื่อบันทึกหรือสร้างการทดสอบอัตโนมัติจาก ")
คำตอบอื่น ๆ บอกให้คุณทำการ "ทดสอบการยอมรับ" นี้โดยอัตโนมัติเพื่อให้สามารถเกิดขึ้นได้อย่างรวดเร็ว สิ่งนี้ถูกต้อง แต่ไม่ได้แก้ไขปัญหาเดิมของคุณอย่างครบถ้วน: จะเกิดอะไรขึ้นถ้ามีเวลาไม่เพียงพอที่จะเขียนการทดสอบการยอมรับเหล่านั้น
คุณต้องปล่อยให้มุมมองของการทดสอบเมื่อโค้ดมีปฏิสัมพันธ์กับโลกภายนอกนั่นคือมันได้พิมพ์อะไรบางอย่างออกมาและคาดว่าจะมีข้อมูลเข้ามาปัญหาที่เกิดจากผลข้างเคียงคือพวกมันไม่สามารถต้านทานได้ สิ่งนี้เกิดขึ้นกับฉันในขณะที่กำลังอ่านบทสัมภาษณ์กับ Guido van Rossum ซึ่งเขากล่าวว่าคำสั่งที่ปิดคอมพิวเตอร์สามารถพิสูจน์ได้ว่าทำงานได้โดยการดำเนินการ
วิธีแก้ปัญหาที่ "ความไม่สามารถป้องกันได้" คือการเข้าใจว่าถ้าคุณพิสูจน์ได้ครั้งหนึ่งว่าคำสั่งใช้งานได้คุณสามารถใช้มันได้ทุกที่และพึ่งพามันเพื่อทำงานของมัน แยกออกเป็นฟังก์ชันและทดสอบทุกอย่างทุกอย่างอื่น
การนำตัวอย่างนั้นเข้ามาใกล้คำถามของคุณมากขึ้นฟังก์ชั่นนี้น่าจะเป็นทั้งไลบรารีหรือกรอบงานและแทนที่จะปิดคอมพิวเตอร์มันพิมพ์อะไรบางอย่างออกมา: ส่วนต่อประสานผู้ใช้ ให้สายที่เป็นใบ้และมั่นคงที่สุดเท่าที่จะทำได้เพราะเมื่อคุณเข้าสู่ส่วนของแอปพลิเคชันของคุณคุณจะสามารถทดสอบผ่านการทดสอบการยอมรับที่มีราคาแพงเท่านั้นเช่นการสังเกตจากภายนอก
เกี่ยวกับ UI ในฐานะ "อาณาเขตต่างประเทศ" เป็นมุมมองที่ถูกต้องเนื่องจากคุณไม่จำเป็นต้องทดสอบตรรกะของห้องสมุดที่คุณไม่ได้จัดเตรียมไว้ให้ คาดว่าจะเคยทดสอบการโทรเช่น MyWidget.draw()
คุณคาดหวังอะไรถึงระดับพิกเซลเดียว
นี่ไม่ได้เป็นการบอกว่าการทดสอบการยอมรับนั้นไม่มีความสำคัญหรือสามารถข้ามได้ มันอยู่ที่นั่นโดยอัตโนมัติและตามที่คำตอบอื่น ๆ แนะนำมีประโยชน์มหาศาล แต่ถ้าคุณต้องการหาเวลาในการทดสอบและโค้ดใน sprint เดียวกันให้พยายามรักษาโค้ดของคุณโดยไม่มีผลข้างเคียง