ทำให้เป็นไปไม่ได้ที่จะปล่อยสิ่งใดโดยไม่แก้ไขการทดสอบ
- สร้างบิลด์ล้มเหลวหากการทดสอบใด ๆ ล้มเหลว
- การบิลด์ล้มเหลวหากการทดสอบใด ๆ ถูกเพิกเฉย
- การสร้างล้มเหลวหากความครอบคลุมการทดสอบต่ำกว่าระดับที่กำหนด (เพื่อให้ผู้คนไม่สามารถลบการทดสอบเพื่อแก้ไขได้)
- ใช้เซิร์ฟเวอร์ CI เพื่อทำบิลด์ของคุณและอนุญาตเฉพาะบิลด์จากการปล่อยบิลด์ของเซิร์ฟเวอร์เพื่อเลื่อนระดับเป็น UAT / staging / production / อะไรก็ตาม
ความจริงของเรื่องคือถ้าสร้างของคุณเสียนานกว่าประมาณ 15 นาทีในช่วงเวลา (และที่มีการทดสอบล้มเหลว) แล้วคุณไม่ได้ทำรวมอย่างต่อเนื่อง
"ตัวเลือกนิวเคลียร์" คือการให้เซิร์ฟเวอร์ควบคุมแหล่งข้อมูลของคุณปฏิเสธ / กระทำการตรวจสอบจากผู้ใช้คนอื่น ๆ นอกเหนือจากผู้ที่ทำลายการสร้าง เห็นได้ชัดว่าผู้ดูแลระบบจะต้องสามารถแทนที่สิ่งนี้ได้ชั่วคราวหากบุคคลดังกล่าวไปพักผ่อน - แต่ถ้าทุกคนรู้ว่าทีมทั้งหมดถูกเขี่ยจนทำการทดสอบพวกเขาจะแก้ปัญหาได้อย่างรวดเร็ว
นโยบายที่ดี (ซึ่งจะดียิ่งขึ้นเมื่อมันเป็นแบบอัตโนมัติ) คือการเปลี่ยนแหล่งที่มาให้เป็นค่าคอมมิชชันล่าสุดที่รู้จักหลังจากการสร้างล้มเหลว 15 นาที กล่าวอีกนัยหนึ่งถ้าคุณไม่สามารถแก้ไขได้หรือไม่รู้ว่าอะไรเป็นสาเหตุให้บิลด์หรือทดสอบหยุดทำงานให้ย้อนกลับและทำงานในพื้นที่จนกว่าจะได้รับการแก้ไขไม่เคยทำให้นักพัฒนารายอื่นบิดนิ้วโป้งในขณะที่คุณบด ปัญหาที่พวกเขาไม่สนใจ
PS ถ้าคุณอยู่แล้วมีจำนวนมากของการทดสอบล้มเหลวคุณสามารถใช้ "เกณฑ์ต่อท้าย" ใน CI ตั้งขึ้นเพื่อให้การสร้างเพียงล้มเหลวถ้ามีมากขึ้นความล้มเหลวในการทดสอบกว่าครั้งที่แล้ว สิ่งนี้พร้อมกับกฎความครอบคลุมจะบังคับให้นักพัฒนาปรับปรุงสถานการณ์การทดสอบในที่สุดหากพวกเขาต้องการทำงานต่อไป
PPS ฉันรู้ว่าสิ่งนี้อาจดูโหดเหี้ยมสำหรับบางคน แต่ทั้งหมดนี้เป็นวัฒนธรรมของคุณ หากคุณไปถึงจุดที่ผู้คนไม่ปล่อยให้สิ่งก่อสร้างพังหรือการทดสอบล้มเหลว (ทีมของฉันแทบจะไม่ทำเลยถึงแม้ว่าฉันจะต้องเตือนพวกเขาเป็นครั้งคราว) คุณก็ไม่จำเป็นต้องทำตามกฎที่เข้มงวดที่สุดต่อไป แม้ว่า IMO คุณควรสร้างการทดสอบหน่วยที่ล้มเหลว การทดสอบบูรณาการ / เบราว์เซอร์อาจล้มเหลวในบางครั้ง