มันยากและไม่สมจริงในการรักษาข้อมูลจำลองขนาดใหญ่ มันยิ่งยากขึ้นเมื่อโครงสร้างฐานข้อมูลผ่านการเปลี่ยนแปลง
เท็จ
การทดสอบหน่วยไม่ต้องการข้อมูลจำลองขนาดใหญ่ มันต้องการข้อมูลจำลองที่เพียงพอเพื่อทดสอบสถานการณ์และไม่มีอะไรเพิ่มเติม
นอกจากนี้โปรแกรมเมอร์ที่ขี้เกียจอย่างแท้จริงขอให้ผู้เชี่ยวชาญในประเด็นการสร้างสเปรดชีตที่เรียบง่ายของกรณีทดสอบต่างๆ เพียงแค่สเปรดชีตที่เรียบง่าย
จากนั้นโปรแกรมเมอร์ที่ขี้เกียจเขียนสคริปต์ง่าย ๆ เพื่อแปลงแถวสเปรดชีตเป็นกรณีทดสอบหน่วย มันค่อนข้างง่ายจริงๆ
เมื่อผลิตภัณฑ์พัฒนาขึ้นสเปรดชีตกรณีทดสอบจะได้รับการอัปเดตและสร้างการทดสอบหน่วยใหม่ ทำมันตลอดเวลา มันได้ผลจริงๆ
แม้จะมี MVVM และความสามารถในการทดสอบ GUI แต่ก็ต้องใช้รหัสจำนวนมากเพื่อจำลองสถานการณ์ GUI
อะไร? "ทบทวน"?
จุดประสงค์ของ TDD คือการออกแบบสิ่งต่าง ๆ เพื่อความสามารถในการทดสอบ (Test Drive Development) หาก GUI นั้นซับซ้อนคุณต้องออกแบบใหม่เพื่อให้ง่ายขึ้นและสามารถทดสอบได้มากขึ้น เรียบง่ายยังหมายถึงเร็วกว่าบำรุงรักษาได้และมีความยืดหยุ่นมากขึ้น แต่ส่วนใหญ่ที่เรียบง่ายจะหมายถึงทดสอบได้มากขึ้น
ฉันมีประสบการณ์ที่ TDD ทำงานได้ดีถ้าคุณ จำกัด ให้ตรรกะทางธุรกิจที่เรียบง่าย อย่างไรก็ตามตรรกะทางธุรกิจที่ซับซ้อนนั้นยากที่จะทดสอบเนื่องจากจำนวนชุดการทดสอบ (พื้นที่ทดสอบ) มีขนาดใหญ่มาก
นั่นเป็นเรื่องจริง
อย่างไรก็ตามการขอให้ผู้เชี่ยวชาญในประเด็นเรื่องจัดทำกรณีทดสอบหลักในรูปแบบที่เรียบง่าย
สเปรดชีตอาจมีขนาดค่อนข้างใหญ่ แต่ก็ไม่เป็นไรเพราะฉันใช้สคริปต์ Python ง่าย ๆ ในการเปลี่ยนสเปรดชีตเป็นกรณีทดสอบ
และ. ฉันต้องเขียนกรณีทดสอบด้วยตนเองเพราะสเปรดชีตไม่สมบูรณ์
อย่างไรก็ตาม เมื่อผู้ใช้รายงานว่า "บั๊ก" ฉันเพียงแค่ถามว่ากรณีทดสอบใดในสเปรดชีตผิด
ในขณะนั้นผู้เชี่ยวชาญเรื่องจะแก้ไขสเปรดชีตหรือพวกเขาจะเพิ่มตัวอย่างเพื่ออธิบายสิ่งที่ควรจะเกิดขึ้น รายงานข้อผิดพลาดสามารถระบุได้อย่างชัดเจนว่าเป็นปัญหาของกรณีทดสอบ แน่นอนจากประสบการณ์ของฉันการกำหนดข้อผิดพลาดเป็นกรณีทดสอบที่แตกทำให้การอภิปรายง่ายขึ้นมาก
แทนที่จะฟังผู้เชี่ยวชาญพยายามอธิบายกระบวนการทางธุรกิจที่ซับซ้อนเป็นพิเศษผู้เชี่ยวชาญต้องสร้างตัวอย่างที่เป็นรูปธรรมของกระบวนการ
TDD ต้องการให้ข้อกำหนดนั้นถูกต้อง 100% ในกรณีเช่นนี้อาจคาดได้ว่าความต้องการที่ขัดแย้งกันนั้นจะเกิดขึ้นระหว่างการสร้างการทดสอบ แต่ปัญหาคือว่านี่ไม่ใช่กรณีในสถานการณ์ที่ซับซ้อน
ไม่ได้ใช้ TDD อย่างแน่นอนว่าข้อกำหนดนั้นถูกต้อง 100% บางคนอ้างว่า TDD สามารถทนต่อข้อกำหนดที่ไม่สมบูรณ์และเปลี่ยนแปลงได้ซึ่งวิธีการที่ไม่ใช่ TDD ไม่สามารถทำงานกับข้อกำหนดที่ไม่สมบูรณ์ได้
หากคุณไม่ได้ใช้ TDD ความขัดแย้งจะพบได้ในช่วงดำเนินการ
หากคุณใช้ TDD จะพบข้อขัดแย้งก่อนหน้านี้เมื่อรหัสผ่านการทดสอบบางอย่างและล้มเหลวในการทดสอบอื่น ๆ อันที่จริง TDD ให้หลักฐานการขัดแย้งก่อนหน้านี้ในกระบวนการนานก่อนการใช้งาน (และข้อโต้แย้งในระหว่างการทดสอบการยอมรับของผู้ใช้)
คุณมีรหัสที่ผ่านการทดสอบและล้มเหลวอื่น ๆ คุณดูเฉพาะการทดสอบเหล่านั้นและคุณจะพบความขัดแย้ง มันใช้งานได้จริงในทางปฏิบัติจริง ๆ เพราะตอนนี้ผู้ใช้ต้องเถียงกันเกี่ยวกับความขัดแย้งและสร้างตัวอย่างที่เป็นรูปธรรมของพฤติกรรมที่ต้องการ