- NYT เปลี่ยนยูทิลิตีสำหรับการทดสอบจาก Enzyme ที่ใช้อยู่เดิมไปเป็น React Testing Library ระหว่างการ อัปเกรดจาก React 16 เป็น React 18
- ใช้ Enzyme มาตั้งแต่ปี 2016 แต่เมื่อแพลตฟอร์ม React แนะนำ React Testing Library จึงจำเป็นต้องย้าย
- Enzyme สร้างตัวแทนแบบสตริงของ DOM tree ขณะที่ React Testing Library สร้าง DOM tree จริงและเรนเดอร์เป็นส่วนหนึ่งของ DOM ทั้งหมด
- เนื่องจากต้องย้ายไฟล์หลายร้อยไฟล์ สิ่งสำคัญคือการ รักษาทราฟฟิกของไซต์ และ ป้องกันการหยุดชะงักของบริการ
กลยุทธ์การย้ายระบบ 3 แบบ
- แนวทาง Bulldozer
- วิธีแก้ไขไฟล์ทั้งหมดครั้งใหญ่ในคราวเดียว
- มีความเสี่ยงเรื่องโค้ดชนกันสูง และทำงานร่วมกันได้ยาก
- แนวทาง Consensus
- วิธีทำงานร่วมกันที่วิศวกรแต่ละคนมี ownership ของแต่ละไฟล์และดำเนินการเอง
- เหมาะกับโปรเจกต์ใหม่หรือโปรเจกต์ที่มีความสำคัญสูง
- แนวทาง Piecemeal
- ค่อย ๆ ปรับแก้เป็นรายไฟล์อย่างมีกลยุทธ์
- อัปเดตอย่างสม่ำเสมอทุกวันเพื่อสร้าง momentum แบบค่อยเป็นค่อยไป
สิ่งที่ The New York Times เลือก: แนวทาง Piecemeal
- เริ่มแก้จากไฟล์ที่ง่ายที่สุดก่อน → ไฟล์ที่ต้องแก้เพียงหนึ่งหรือสองบรรทัด
- โฟกัสที่วิธีค้นหา DOM element ใน React Testing Library และวิธีทดสอบสิ่งเหล่านั้น
- เมื่อแก้ส่วนเริ่มต้นเสร็จแล้ว ก็สามารถค่อย ๆ ขยายไปยังเทสต์ที่ซับซ้อนขึ้นได้
- ยิ่งทำไป รูปแบบที่สม่ำเสมอก็ยิ่งชัดเจนขึ้น ทำให้งานแก้ไขง่ายขึ้น
- วิศวกรเข้ามามีส่วนร่วมได้ง่าย จึงช่วยเสริมการทำงานร่วมกัน
ผลลัพธ์และความสำเร็จของการย้ายระบบ
- แนวทาง Piecemeal แม้ใช้เวลานาน แต่ทำให้เกิด ความเสถียร และ ความคืบหน้าอย่างต่อเนื่อง
- เกิดรูปแบบที่สม่ำเสมอใน codebase ทำให้จัดการเทสต์ที่ซับซ้อนได้ง่ายขึ้น
- สร้างสภาพแวดล้อมที่เอื้อให้วิศวกรคนอื่นเข้ามามีส่วนร่วมและช่วยกันพัฒนาได้ง่าย
- ระหว่างการย้ายระบบสามารถ ลดบั๊กให้น้อยที่สุด และ ป้องกันไม่ให้ฟังก์ชันการทำงานหยุดชะงัก
- ความสำเร็จของการย้ายช่วยให้จัดการ technical debt และรักษาสมดุลกับการพัฒนาอย่างต่อเนื่องได้
บทสรุป
- ใช้แนวทาง Piecemeal เพื่อเปลี่ยน codebase ไปสู่ React Testing Library ได้สำเร็จ
- การค่อย ๆ ปรับแก้ช่วยเสริมการทำงานร่วมกันและรักษาคุณภาพโค้ด
- แม้เป็นเทสต์ที่ซับซ้อนก็จัดการได้ง่ายขึ้นด้วยรูปแบบที่สม่ำเสมอ
- การวางแผนอย่างมีกลยุทธ์และการรักษาสมดุลกับการแก้ technical debt ทำให้การย้ายระบบเสร็จสิ้นอย่างมั่นคง
ยังไม่มีความคิดเห็น