ทีมพัฒนาของเราใช้กลยุทธ์GitFlow branching และมันยอดเยี่ยมมาก!
เมื่อเร็ว ๆ นี้เราได้คัดเลือกผู้ทดสอบสองรายเพื่อปรับปรุงคุณภาพซอฟต์แวร์ของเรา แนวคิดคือผู้ทดสอบทุกคนควรทดสอบ / QA
ในอดีตนักพัฒนาจะทำงานกับฟีเจอร์ในสาขาฟีเจอร์ที่แยกจากกันและรวมกลับไปที่develop
สาขาเมื่อเสร็จสิ้น นักพัฒนาจะทดสอบงานของเขาเองในfeature
สาขานั้น ๆ ตอนนี้สำหรับผู้ทดสอบเราเริ่มถามคำถามนี้
ผู้ทดสอบควรทดสอบคุณสมบัติใหม่ในสาขาใด
เห็นได้ชัดว่ามีสองทางเลือก:
- ในแต่ละสาขาคุณลักษณะ
- ใน
develop
สาขา
การทดสอบในสาขาการพัฒนา
ในขั้นต้นเราเชื่อว่านี่เป็นวิธีที่แน่นอนเพราะ:
- คุณลักษณะนี้ได้รับการทดสอบกับคุณลักษณะอื่น ๆ ทั้งหมดที่รวมเข้ากับ
develop
สาขาตั้งแต่เริ่มการพัฒนา - ความขัดแย้งใด ๆ สามารถตรวจพบได้เร็วกว่าในภายหลัง
- ทำให้งานของผู้ทดสอบง่ายขึ้นเขาจัดการกับสาขาเดียว (
develop
) ตลอดเวลา เขาไม่จำเป็นต้องถามนักพัฒนาว่าสาขาใดสำหรับฟีเจอร์ใด (สาขาฟีเจอร์เป็นสาขาส่วนบุคคลที่จัดการโดยนักพัฒนาที่เกี่ยวข้องโดยเฉพาะและอิสระ)
ปัญหาที่ใหญ่ที่สุดคือ:
develop
สาขาปนเปื้อนมีข้อบกพร่องเมื่อผู้ทดสอบพบข้อบกพร่องหรือข้อขัดแย้งเขาจะรายงานกลับไปยังผู้พัฒนาซึ่งเป็นผู้แก้ไขปัญหาในสาขาการพัฒนา (สาขาคุณลักษณะถูกละทิ้งเมื่อรวมเข้าด้วยกัน) และอาจต้องมีการแก้ไขเพิ่มเติมในภายหลัง การคอมมิชชันหรือการรวมในภายหลังหลาย ๆ ครั้ง (หากมีการสร้างสาขาใหม่จาก
develop
สาขาอีกครั้งเพื่อแก้ไขจุดบกพร่อง) ทำให้การย้อนคุณสมบัติออกจากdevelop
สาขาทำได้ยากมากหากทำได้ มีคุณสมบัติหลายอย่างที่รวมเข้าด้วยกันและได้รับการแก้ไขในdevelop
สาขาในเวลาที่ต่างกัน สิ่งนี้ทำให้เกิดปัญหาใหญ่เมื่อเราต้องการสร้างรุ่นที่มีคุณลักษณะบางอย่างในdevelop
สาขา
การทดสอบในสาขาคุณลักษณะ
ดังนั้นเราจึงคิดอีกครั้งและตัดสินใจว่าเราควรทดสอบฟีเจอร์ในสาขาฟีเจอร์ ก่อนที่เราจะทดสอบเราจะรวมการเปลี่ยนแปลงจากdevelop
สาขาไปยังสาขาคุณลักษณะ (ตามลำดับdevelop
สาขา) ดีจัง:
- คุณยังคงทดสอบคุณลักษณะนี้กับคุณลักษณะอื่น ๆ ในกระแสหลัก
- การพัฒนาเพิ่มเติม (เช่นการแก้ไขข้อบกพร่องการแก้ไขความขัดแย้ง) จะไม่ก่อให้เกิดมลพิษต่อ
develop
สาขา - คุณสามารถตัดสินใจที่จะไม่ปล่อยคุณลักษณะนี้ได้อย่างง่ายดายจนกว่าจะได้รับการทดสอบและอนุมัติอย่างสมบูรณ์
อย่างไรก็ตามมีข้อบกพร่องบางประการ
- ผู้ทดสอบต้องทำการรวมโค้ดและหากมีข้อขัดแย้งใด ๆ (เป็นไปได้มาก) เขาต้องขอความช่วยเหลือจากนักพัฒนา ผู้ทดสอบของเราเชี่ยวชาญในการทดสอบและไม่สามารถเขียนโค้ดได้
- คุณสมบัติสามารถทดสอบได้โดยไม่มีคุณสมบัติใหม่อื่น เช่นคุณลักษณะ A และ B ทั้งสองอยู่ระหว่างการทดสอบในเวลาเดียวกันคุณลักษณะทั้งสองไม่ได้รับการยอมรับซึ่งกันและกันเนื่องจากคุณลักษณะทั้งสองไม่ได้รวมเข้ากับ
develop
สาขา ซึ่งหมายความว่าคุณจะต้องทดสอบกับdevelop
สาขาอีกครั้งเมื่อคุณลักษณะทั้งสองรวมเข้ากับสาขาการพัฒนาแล้ว และคุณต้องอย่าลืมทดสอบสิ่งนี้ในอนาคต - หากคุณลักษณะ A และ B ได้รับการทดสอบและได้รับการรับรอง แต่เมื่อมีการระบุข้อขัดแย้งนักพัฒนาทั้งสองสำหรับคุณลักษณะทั้งสองเชื่อว่าไม่ใช่ความผิด / งานของตนเองเนื่องจากสาขาคุณลักษณะของเขาผ่านการทดสอบแล้ว มีค่าใช้จ่ายเพิ่มเติมในการสื่อสารและบางครั้งใครก็ตามที่แก้ไขความขัดแย้งก็ผิดหวัง
ด้านบนเป็นเรื่องราวของเรา ด้วยทรัพยากรที่ จำกัด ฉันต้องการหลีกเลี่ยงการทดสอบทุกอย่างทุกที่ เรายังคงมองหาวิธีที่ดีกว่าในการรับมือกับปัญหานี้ ฉันชอบที่จะได้ยินว่าทีมอื่นจัดการกับสถานการณ์แบบนี้อย่างไร