ในกลุ่มผลิตภัณฑ์ของเราเราตั้งเป้าหมายรหัสครอบคลุม 50-70% จากการทดสอบหน่วยและ 90% + ความครอบคลุมจากการทดสอบหน่วยและการทดสอบอัตโนมัติรวมกัน เวลาโดยทั่วไปในการเขียนการทดสอบหน่วยจะใช้เวลาประมาณ 1 วันสำหรับทุกฟีเจอร์ที่ใช้เวลาในการเขียนโค้ดลง 3-4 วัน แต่นั่นอาจแตกต่างกันไปตามปัจจัยหลายอย่าง
การครอบคลุมโค้ด 99% นั้นยอดเยี่ยม การทดสอบหน่วยดีมาก แต่ครอบคลุมรหัส 99% จากการทดสอบหน่วยเพียงอย่างเดียว ฉันพบว่ายากที่จะเชื่อว่าคุณจะได้รับความครอบคลุมมากจากการทดสอบหน่วยเพียงอย่างเดียว
สำหรับกรณีที่คุณใช้เวลา 3 วันในการเขียนการทดสอบสำหรับชั้นเรียนที่ใช้เวลา 1 วันในการดำเนินการ คุณไม่ได้อธิบายอย่างละเอียดถึงสาเหตุที่ใช้เวลานานขนาดนี้หรือแบ่งปันรหัสใด ๆ จากการเก็งกำไรฉันคาดเดาว่าคุณไม่ได้เขียนการทดสอบหน่วยที่แท้จริงสำหรับชั้นเรียนของคุณ แต่เป็นการเขียนการทดสอบอัตโนมัติจริง ๆ และมันก็ไม่มีอะไรผิดปกติกับสิ่งนั้น - ตราบใดที่คุณรับรู้ความแตกต่างระหว่างการทดสอบสองประเภทที่แตกต่างกัน
แต่คุณบอกว่าการเขียนทดสอบสามวันนั้นมีไว้สำหรับชั้นเรียนเดียวเท่านั้น บางทีคลาสเองนั้นไม่ได้ออกแบบมาสำหรับการทดสอบหน่วย คลาสใช้ UI ได้หรือไม่? เครือข่าย? ไฟล์ I / O? ถ้าเป็นเช่นนั้นคุณอาจเขียนโค้ดเพิ่มเติมเพื่อทดสอบรันไทม์ Java มากกว่าตรรกะทางธุรกิจของคุณที่โต้ตอบกับรันไทม์
TDD ทำให้คุณคิดในแง่ของส่วนต่อประสานและส่วนต่อประสาน คลาสเดี่ยวนั้นที่ใช้ UI, ระบบเครือข่ายและไฟล์ / io สำหรับฟีเจอร์เดียวอาจแบ่งได้ดีกว่าหลายคลาส - คลาสสำหรับเครือข่าย, สำหรับไฟล์ / io และ UI แบ่งเป็นการออกแบบตัวควบคุมโมเดล จากนั้นคุณสามารถใช้การทดสอบที่เหมาะสมสำหรับแต่ละรายการด้วยวัตถุจำลองอย่างง่ายสำหรับการอ้างอิง แน่นอนว่าทั้งหมดนี้ใช้เวลามากขึ้น ดังนั้นแทนที่จะใช้รหัส 1 วันและ 3 วันในการเขียนการออกแบบประเภทนี้อาจต้องใช้การเข้ารหัส 3 วันและการทดสอบการเขียน 1 วัน แต่รหัสจะสามารถบำรุงรักษาได้ดีกว่าและสามารถนำกลับมาใช้ใหม่ได้