Tôi đã làm việc trên một hệ thống giao dịch tài chính lớn cho một ngân hàng chăm sóc lương hưu và đầu tư. Sau 15 năm thay đổi tính năng, chi phí kiểm tra hồi quy thủ công đã tăng lên 200 nghìn đô la mỗi lần phát hành. (10 triệu LỘC, 10 triệu đô la giao dịch mỗi ngày). Hệ thống này cũng giao tiếp với 19 hệ thống khác xung quanh công ty di chuyển rất nhiều dữ liệu xung quanh. Hệ thống này đã được triển khai trong Java.
Tuy nhiên, những gì chúng tôi quan sát được là chúng tôi càng sử dụng lại nhiều hơn, chi phí kiểm tra hồi quy càng tăng. (Lý do là bạn cần "kiểm tra mã bạn chạm" - và mã được sử dụng / chia sẻ lại ảnh hưởng đến nhiều địa điểm khi chạm vào. Vì vậy, mặc dù 'DRY - Không lặp lại chính mình' - tức là không sao chép và dán mã - chúng tôi nhận thấy sự khuyến khích tài chính để sao chép và dán mã. Điều này nhằm giảm chi phí kiểm tra hồi quy, vì chúng tôi không muốn sửa đổi mã có thể được chia sẻ, vì điều đó sẽ gây ra tác động kiểm tra hồi quy lớn.)
Câu hỏi của tôi là có một nguyên tắc kỹ thuật phần mềm mô tả mối quan hệ giữa chi phí kiểm tra tái sử dụng và hồi quy?
Lý do tôi hỏi câu hỏi này là có thể cho rằng có một lợi ích chi phí trong việc phân tách hệ thống thành các phần nhỏ hơn để được kiểm tra.
Giả định:
'Kiểm tra hồi quy' có nghĩa là 'kiểm tra chấp nhận' - tức là một nhóm khác dành thời gian để viết mới và sử dụng lại các kiểm tra cũ đối với hệ thống thay mặt cho doanh nghiệp, bao gồm thiết lập môi trường và dữ liệu.
Tôi biết phản ứng giật đầu gối với chi phí kiểm tra hồi quy lớn là 'kiểm tra tự động hơn'. Đây là một nguyên tắc tốt. Trong môi trường này có một vài thách thức.
(a) Kiểm tra tự động ít hữu ích hơn trong các ranh giới hệ thống, trừ khi hệ thống đó có phạm vi kiểm tra tự động cao. (Phạm vi thách thức ảnh hưởng).
(b) Rất khó để có được động lực về thời gian của lập trình viên hoặc đầu tư vốn vào phạm vi kiểm tra tự động cao khi hệ thống của bạn đã lớn và phức tạp.
(c) Chi phí duy trì kiểm tra tự động được ẩn trong một dự án và do đó chúng dễ dàng bị loại bỏ ở cấp dự án.
(d) Đây chỉ là thực tế văn hóa làm việc trong ngân hàng.
(e) Tôi đang làm việc để giải quyết vấn đề này theo một cách khác (phân tách).