- ฉันกำลังพูดถึงการทดสอบหน่วยในความหมาย TDD (ไม่ใช่ "การรวม" โดยอัตโนมัติหรือสิ่งที่คุณต้องการเรียกว่าการทดสอบ)
- รหัสดั้งเดิมในรหัส (C ++) โดยไม่มีการทดสอบ (ดู: Michael Feathers ' ทำงานอย่างมีประสิทธิภาพด้วยรหัสดั้งเดิม )
- แต่ยังเป็นรหัสดั้งเดิมใน: รหัสที่ทีมของเราทำงานด้วยกันมา 10-5 ปีที่ผ่านมาดังนั้นเราจึงมักจะมีความคิดที่ดีเกี่ยวกับสถานที่ที่จะนำสิ่งต่าง ๆ มาเปลี่ยนอะไรบางอย่าง
- เรามีการทดสอบหน่วยในสถานที่ (ผ่าน Boost.Test) สำหรับบางโมดูลที่มาในภายหลังหรือเป็นแบบ "ธรรมชาติ" สำหรับการทดสอบหน่วย (เช่นคอนเทนเนอร์เฉพาะแอปทั่วไปสตริงสิ่งผู้ช่วยเครือข่าย ฯลฯ )
- เรายังไม่มีการทดสอบการยอมรับอัตโนมัติที่เหมาะสม
ตอนนี้เมื่อเร็ว ๆ นี้ฉันมี "ความสุข" ที่จะใช้คุณสมบัติใหม่ 3 อย่างที่ผู้ใช้งานต้องเผชิญ
แต่ละคนใช้เวลาประมาณ 1-2 ชั่วโมงในการเร่งความเร็วด้วยส่วนรหัสที่ฉันต้องการเปลี่ยน 1-2 ชั่วโมงชั่วโมงในการใช้รหัส (เล็กน้อย) ที่ฉันต้องเปลี่ยนและอีก 1-2 ชั่วโมงเพื่อให้แน่ใจว่าแอป วิ่งอย่างถูกต้องในภายหลังและมันก็ควรจะทำ
ตอนนี้ฉันเพิ่มรหัสเล็กน้อย (ฉันคิดว่าวิธีหนึ่งและสองสามบรรทัดสำหรับแต่ละคุณสมบัติ)
แฟออกรหัสนี้ (ผ่านวิธีการใด ๆ ที่แนะนำในWEwLC ) เพื่อให้การทดสอบหน่วยจะได้ทำให้ความรู้สึก (และไม่ได้รับการพูดซ้ำซากเสร็จสมบูรณ์) จะได้อย่างง่ายดายนำอีก 2-4 ชั่วโมงถ้าไม่มาก สิ่งนี้จะเพิ่มเวลา 50% -100% ให้กับแต่ละคุณสมบัติโดยไม่ได้รับประโยชน์ทันทีเช่น
- ฉันไม่ต้องการทดสอบหน่วยเพื่อทำความเข้าใจอะไรเกี่ยวกับรหัส
- การทดสอบด้วยตนเองมีปริมาณงานเท่ากันเนื่องจากฉันยังคงต้องทดสอบว่ามีการรวมรหัสในส่วนที่เหลือของแอปอย่างถูกต้องหรือไม่
ได้รับถ้า "ใครบางคน" เข้ามาและแตะรหัสนั้นในทางทฤษฎีเขาอาจได้รับประโยชน์จากการทดสอบหน่วยนั้น (ในทางทฤษฎีเท่านั้นเนื่องจากเกาะของรหัสที่ทดสอบนั้นจะอาศัยอยู่ในมหาสมุทรของรหัสที่ยังไม่ผ่านการทดสอบ)
ดังนั้น "เวลานี้" ฉันเลือกที่จะไม่ทำงานหนักในการเพิ่มการทดสอบหน่วย: การเปลี่ยนรหัสเพื่อให้ได้สิ่งที่อยู่ภายใต้การทดสอบจะมีความซับซ้อนมากกว่าการเปลี่ยนแปลงรหัสเพื่อให้ได้รับคุณลักษณะอย่างถูกต้อง (และหมดจด)
นี่เป็นสิ่งที่ปกติสำหรับรหัสมรดกคู่หรือไม่ ฉันขี้เกียจ / เราตั้งความสำคัญผิดเป็นทีมหรือไม่? หรือว่าฉันระมัดระวังการทดสอบเฉพาะสิ่งที่ค่าใช้จ่ายไม่สูงเกินไป?