Trong công ty của tôi, chúng tôi làm việc thành công với các thực hành nhanh - nhưng không sử dụng các lần lặp. Lý do chính là chúng ta không thể tìm ra cách sạch để phù hợp với QA trong một chu kỳ lặp.
Chúng tôi hiểu QA là một chút xác minh cho một bản dựng nhất định (ứng viên phát hành) trước khi bản dựng này được triển khai cho khách hàng. Vấn đề là tránh một cam kết độc hại làm hỏng toàn bộ bản phát hành. Vì bạn không bao giờ biết đó là cái gì, QA phải đợi cho đến khi tất cả các tính năng / cam kết cho bản phát hành được xây dựng. (Không có từ cuối nổi tiếng "Đó chỉ là một thay đổi nhỏ" được cho phép.)
Nếu QA tìm thấy lỗi trong một ứng cử viên phát hành, các nhà phát triển sẽ sửa các lỗi này trong nhánh phát hành tương ứng (và hợp nhất nó vào thân cây). Khi tất cả các lỗi đã được sửa, bản dựng mới được triển khai để QA kiểm tra lại. Chỉ khi không tìm thấy lỗi trong một ứng cử viên phát hành nhất định, nó sẽ được cung cấp cho khách hàng để xác minh.
Điều này thường mất khoảng hai đến ba ứng cử viên, khoảng một tuần, mỗi lần phát hành. Thời gian để viết các bản sửa lỗi thường thấp hơn nhiều so với các nỗ lực thử nghiệm. Vì vậy, để giữ cho các nhà phát triển bận rộn, họ làm việc trên phiên bản N + 1 trong khi QA hoạt động trên N.
Không sử dụng các lần lặp, điều này không có vấn đề gì vì chúng ta có thể chồng chéo công việc cho các bản phát hành N và N + 1. Tuy nhiên, từ những gì tôi hiểu, điều này không tương thích với các cách tiếp cận dựa trên phép lặp như Scrum hoặc XP. Họ yêu cầu một lần lặp để có thể giải phóng được vào cuối với tất cả nỗ lực thử nghiệm được kết hợp trong lần lặp.
Tôi thấy rằng điều này nhất thiết dẫn đến một trong những kết quả không mong muốn sau:
(A) Các nhà phát triển không hoạt động khi kết thúc vì QA cần thời gian để xác minh một ứng cử viên phát hành và công việc sửa lỗi không hoàn toàn khiến các nhà phát triển bận rộn.
(B) QA bắt đầu hoạt động trước khi ứng viên phát hành đầu tiên sẵn sàng. Đây là những gì chủ yếu được khuyến nghị trên Stack Exchange. Nhưng đó không phải là những gì công ty tôi hiểu là QA vì không có ứng cử viên phát hành cụ thể nào được thử nghiệm. Và "thay đổi nhỏ" phá vỡ mọi thứ vẫn có thể được giới thiệu mà không được chú ý.
(C) Lỗi được chuyển sang lần lặp tiếp theo. Điều này cũng được khuyến nghị trên Stack Exchange. Tôi không nghĩ đó là một giải pháp. Về cơ bản, điều đó có nghĩa là chúng tôi sẽ không bao giờ nhận được bản dựng đã được xác minh bởi vì bất cứ khi nào sửa lỗi được thực hiện, các xác nhận mới, chưa được xác minh cũng được thêm vào cùng một nhánh.
Có cách nào thoát khỏi tình trạng khó xử này?