ประสบการณ์ของฉันกับการเปลี่ยนแปลง
เป็นเวลาหลายปีที่ฉันอยู่ภายใต้การเข้าใจผิดที่ฉันไม่มีเวลาพอที่จะเขียนการทดสอบหน่วยสำหรับโค้ดของฉัน เมื่อฉันเขียนข้อสอบพวกเขาป่องๆสิ่งที่หนักซึ่งกระตุ้นให้ฉันคิดว่าฉันควรจะเขียนบททดสอบเมื่อฉันรู้ว่าพวกเขาต้องการเท่านั้น
เมื่อเร็ว ๆ นี้ฉันได้รับการสนับสนุนให้ใช้การพัฒนาระบบขับเคลื่อนทดสอบและฉันพบว่าเป็นการเปิดเผยที่สมบูรณ์ ตอนนี้ผมเชื่อมั่นว่าผมไม่ได้มีเวลาที่ไม่ได้ที่จะเขียนการทดสอบหน่วย
จากประสบการณ์ของผมโดยการพัฒนากับการทดสอบในใจคุณท้ายด้วยอินเตอร์เฟซที่สะอาดชั้นเรียนเพ่งความสนใจมากขึ้นและโมดูลและโดยทั่วไปมากขึ้นSOLIDรหัสทดสอบ
ทุกครั้งที่ฉันทำงานกับรหัสดั้งเดิมที่ไม่มีการทดสอบหน่วยและต้องทำการทดสอบด้วยตนเองฉันคิดอยู่เสมอว่า "นี่จะเร็วกว่านี้มากถ้ารหัสนี้มีการทดสอบหน่วยอยู่แล้ว" ทุกครั้งที่ฉันต้องลองและเพิ่มฟังก์ชั่นการทดสอบหน่วยในการเขียนโค้ดด้วยการมีเพศสัมพันธ์สูงฉันคิดอยู่เสมอว่า
เปรียบเทียบและเปรียบเทียบสถานีทดลองสองแห่งที่ฉันสนับสนุน หนึ่งได้รับรอบในขณะที่และมีรหัสมรดกในขณะที่อื่น ๆ ค่อนข้างใหม่
เมื่อเพิ่มฟังก์ชันการทำงานลงในแล็บเก่ามักจะเป็นกรณีของการลงไปที่ห้องแล็บและใช้เวลาหลายชั่วโมงในการทำงานผ่านผลกระทบของฟังก์ชันที่พวกเขาต้องการและฉันจะเพิ่มฟังก์ชันการทำงานนั้นได้อย่างไร รหัสไม่ได้ถูกตั้งค่าให้ใช้การทดสอบแบบออฟไลน์ดังนั้นทุกอย่างจะต้องได้รับการพัฒนาออนไลน์ หากฉันพยายามพัฒนาแบบออฟไลน์ฉันจะจบลงด้วยวัตถุจำลองมากกว่าที่จะสมเหตุสมผล
ในห้องแล็บที่ใหม่กว่าฉันมักจะสามารถเพิ่มฟังก์ชั่นการใช้งานโดยการพัฒนาแบบออฟไลน์ที่โต๊ะทำงานของฉันเยาะเย้ยเฉพาะสิ่งที่จำเป็นต้องใช้ในทันทีและจากนั้นใช้เวลาสั้น ๆ ในห้องแล็บ -ไลน์.
คำแนะนำของฉัน
ดูเหมือนว่าคุณจะเริ่มต้นได้ดีทุกครั้งที่คุณต้องการเปลี่ยนแปลงขั้นตอนการพัฒนาของคุณคุณต้องทำให้แน่ใจว่าทุกคนมีส่วนร่วมในการตัดสินใจและนึกคิดว่าคนส่วนใหญ่ซื้อมา จากคำถามของคุณดูเหมือนว่าคุณมีสิทธิ์นี้ หากผู้คนไม่มีความกระตือรือร้นในความคิดมันจะต้องล้มเหลวหรือทำให้เกิดน้ำใจ
หากคุณไม่สามารถนำเสนอกรณีศึกษาทางธุรกิจที่น่าสนใจได้ฉันจะไม่แนะนำการใช้งานการทดสอบหน่วยและข้อกำหนดเฉพาะสำหรับระบบทั้งหมดของคุณ ดังที่ฉันได้กล่าวถึงข้างต้นหากระบบไม่ได้ออกแบบมาโดยคำนึงถึงการทดสอบเป็นเรื่องยากมากที่จะเขียนการทดสอบอัตโนมัติสำหรับมัน
ฉันขอแนะนำให้เริ่มต้นเล็ก ๆ และใช้กฎลูกเสือ :
ออกจากที่ตั้งแคมป์สะอาดกว่าที่คุณพบ
หากในขณะที่คุณกำลังใช้งานบางอย่างกับ codebase นี้คุณสามารถระบุการทดสอบเฉพาะที่จำเป็นในการทดสอบพฤติกรรมที่มีอยู่และการเปลี่ยนจากพฤติกรรมเดิมไปเป็นใหม่จากนั้นคุณได้บันทึกการเปลี่ยนแปลงของข้อมูลจำเพาะและเริ่มทำการทดสอบหน่วยสำหรับ ระบบของคุณ
โมดูลที่คุณไม่ได้สัมผัสจะไม่ได้รับการทดสอบหน่วย แต่ถ้าคุณไม่ได้สัมผัสพวกเขาอาจเป็นเพราะพวกเขามีการทดสอบอย่างละเอียดในการใช้งานและไม่จำเป็นต้องมีการเปลี่ยนแปลงหรือพวกเขาไม่เคยใช้
สิ่งที่คุณต้องการหลีกเลี่ยงคือการสูญเสียการทดสอบการเขียนนักพัฒนาที่ไม่จำเป็น ( YAGNIทำงานได้ดีเช่นเดียวกับรหัสทดสอบสำหรับรหัสการผลิต * 8 ') ไม่เคยถูกนำมาใช้อีกครั้ง คิดว่าการทดสอบนั้นไร้ประโยชน์
สรุป
เริ่มต้นเล็ก ๆ สร้างความเชื่อมั่นในการทดสอบเพิ่มขึ้นและได้รับคุณค่าทางธุรกิจจากการพัฒนาแบบทดสอบเมื่อใดและที่ไหนที่จะเป็นประโยชน์ต่อทีมของคุณมากที่สุด