Trong công việc chúng tôi có một hệ thống khá phức tạp. Hãy gọi hệ thống này, System_A. Nhóm QA của chúng tôi đã tạo một hệ thống khác, gọi hệ thống này là System_B để kiểm tra System_A.
Cách System_B được sử dụng như sau. Chúng tôi tạo đầu vào (sử dụng chính System_B), IN, xử lý các đầu vào đó trở lại thông qua System_B và tạo đầu ra, O_B. Vì vậy, quá trình như sau:
System_B(IN) -> O_B
.
Sau đó, chúng tôi cũng làm tương tự cho System_A để tạo đầu ra của riêng mình, O_A:
System_A(IN) -> O_A
.
Bất cứ lúc nào, người ta cho rằng O_B là đầu ra dự kiến và O_A là đầu ra thực tế được quan sát. Ngụ ý rằng O_B là nguồn "vàng" (sự thật). Tuy nhiên, chúng tôi đã chạy vào một sự kết hợp của các vấn đề.
- O_A sai, O_B đúng
- O_A đúng, O_B đúng
- O_A sai, O_B sai
- O_A đúng, O_B sai
Ai xác định điều gì đúng nếu O_B được cho là luôn luôn đúng (hoặc dự kiến)? Chà, hóa ra O_B đôi khi (hoặc thường) sai khi kiểm tra và phân tích con người. Mọi thứ sẽ vượt qua QA bằng cách sử dụng quy trình này và người dùng thực sự sẽ phàn nàn và chúng tôi quay lại phát hiện ra rằng O_B đã sai.
Câu hỏi đặt ra là: có phải là một thực tiễn tồi khi tạo ra một "hệ thống thử nghiệm" để kiểm tra hệ thống thực không?
- Còn dốc trơn trượt thì sao? Sau đó, chúng ta không thể tranh luận rằng chúng ta cần một hệ thống khác để kiểm tra "hệ thống kiểm tra"?
- Chi phí chắc chắn là rất lớn, vì các nhà phát triển hiện cần học ít nhất 2 cơ sở mã, với độ phức tạp của System_B có thể lớn hơn System_A. Làm thế nào chúng ta sẽ định lượng mức độ tốt hay xấu của System_B đối với tổ chức?
- Một trong những lý do "hấp dẫn" ban đầu để tạo System_B là "tự động hóa" thử nghiệm. Bây giờ chúng tôi rất tự hào rằng chúng tôi hoàn toàn tự động (vì System_B tạo đầu vào để tự khởi động quá trình sử dụng chính nó để tạo đầu ra). Nhưng tôi nghĩ rằng chúng tôi đã làm hại nhiều hơn và giới thiệu sự phức tạp hơn, theo một cách không thể chấp nhận được. Là công việc của QA được hoàn toàn tự động? Là lý do đó đủ để biện minh để tạo ra một hệ thống song song?
- Mối quan tâm thực sự của tôi là điều này, mặc dù tất cả chúng ta đều biết System_B là sai (khá thường xuyên). Nếu System_B rất giỏi trong việc xử lý đầu vào và đầu ra của nó là nguồn vàng, tại sao không thay thế System_A bằng System_B? Do đó, không ai trong công việc có thể cung cấp một phản ứng thỏa đáng.
Bất kỳ hướng dẫn về vấn đề này được đánh giá cao.