ฉันได้ทำงานกับฐานรหัสที่มีขนาดใหญ่มากซึ่งในขั้นต้นไม่มีการทดสอบหน่วย โดยทำตามแนวทางปฏิบัติสองสามข้อในขณะนี้เรา (หลังจากผ่านไปหลายปี) มีฐานรหัสส่วนใหญ่ที่ครอบคลุมโดยการทดสอบ
รหัสใหม่ทั้งหมดจะต้องมีการทดสอบหน่วย
รหัสที่เปลี่ยนแปลงทั้งหมดจะต้องมีการทดสอบหน่วยเพิ่มเข้าไป
วิธีที่เราเพิ่มการทดสอบอย่างปลอดภัยไปยังโค้ดเก่าโดยไม่ทำลายมันคือการใช้วิธีการพื้นฐานต่อไปนี้:
เลือกรหัสขนาดเล็กที่คุณต้องการเปลี่ยนการทำงานของ
- ลองสร้างการทดสอบการรวมระบบเพื่อล้อมรอบรหัส เนื่องจากความซับซ้อนของการทดสอบในระดับนี้การทดสอบเหล่านี้จะสร้างการทดสอบ "ควัน" เพื่อรับความผิดพลาดที่สำคัญเท่านั้น
แนะนำอินเทอร์เฟซที่คุณต้องการเพื่อให้สามารถทดสอบรหัสที่คุณกำลังเปลี่ยนแปลง ใช้เทคนิคการเปลี่ยนโครงสร้างซึ่งประกอบด้วยลำดับของการเปลี่ยนแปลงเล็กน้อยซึ่งคุณมีความมั่นใจสูงถูกต้อง ลองใช้การสนับสนุนเครื่องมือหากเป็นไปได้ ตัวอย่างเช่นคุณอาจทำเช่นนี้โดยการย้าย / แยกวิธีการที่คุณเปลี่ยนไปยังวัตถุของตัวเอง ตรวจสอบการเปลี่ยนแปลงของคุณเป็นประจำเพื่อให้คุณสามารถย้อนกลับ ตรวจสอบอย่างสม่ำเสมอถึงวิธีที่คุณทำการเปลี่ยนแปลงโดยไปที่ประวัติการควบคุมการแก้ไข
พยายามทำให้น้อยที่สุดเกี่ยวกับการเปลี่ยนแปลงที่จำเป็นเพื่อแบ่งการพึ่งพาที่ป้องกันไม่ให้คุณเพิ่มการทดสอบ
- เขียนการทดสอบไปจนถึงเท่าที่เป็นไปได้ครอบคลุมการทำงานของรหัสที่คุณจะเปลี่ยน เช็คอินเป็นประจำและตรวจสอบการเปลี่ยนแปลงทั้งหมด
- ทดสอบการเขียนสำหรับการเปลี่ยนแปลงการทำงาน / ฟังก์ชันการทำงานใหม่
- ใช้งานฟังก์ชั่น (นี่เป็นวัฏจักร TDD ปกติของคุณ)
- ตรวจสอบให้แน่ใจว่าได้ทำการปรับปรุงพื้นที่ที่คุณครอบคลุมโดยการทดสอบ (แดง - เขียว - refactor)
เราพบว่ายิ่งเราทำสิ่งนี้มากเท่าไหร่ก็ยิ่งได้รับมากเท่านั้น ทุกครั้งที่คุณกลับไปที่ฐานของรหัสมันจะดีกว่านิดหน่อย
เราได้เห็นจำนวนแมลงที่ลดลงอย่างมากผ่านเครื่องทดสอบ QA ของเรา ด้วยการลดฟังก์ชันการทำงานที่แทบจะไม่เคยได้ยินดังนั้นฉันคิดว่ามันคุ้มค่ากับความพยายามของเรา