(Tôi tưởng tượng đây sẽ là một câu hỏi phỏng vấn hay , nhưng trong trường hợp của tôi, nó thực dụng hơn thế.)
Chúng tôi có một ứng dụng lớn và phức tạp , mô hình hóa một quá trình phản ứng hóa học cực kỳ dài và phức tạp giữa hàng chục thành phần hóa học. Chúng tôi đang ở giai đoạn thiết kế Kiểm tra chấp nhận cho ứng dụng, nhưng chúng tôi hơi bị nản chí bởi số lượng đường dẫn có thể kiểm tra được. Tôi nhận thấy rằng tình huống của chúng tôi rất giống với những gì nhóm phát triển Google Maps phải đối mặt khi đến lúc kiểm tra thuật toán lập kế hoạch tuyến đường trong tính năng "Nhận chỉ đường" của họ. Rõ ràng là họ không thể kiểm tra (xác minh và xác nhận) mọi tuyến đường có thể. Vậy làm thế nào mà họ có được sự tự tin rằng ứng dụng của họ sẽ hoạt động trong mọi tình huống?
Và vì tôi không mong đợi tìm hiểu họ đã làm như thế nào , hãy để tôi hỏi bạn: Làm thế nào bạn sẽ thiết kế một bộ thử nghiệm với độ bao phủ mã đầy đủ, để thỏa mãn bản thân rằng một ứng dụng nhất định là mạnh mẽ - khi nó thực sự là không thể để thăm dò mọi con đường tiềm năng thông qua hệ thống?
Những gì tôi đang tìm kiếm là những nguyên tắc mà bạn sẽ sử dụng để phá vỡ một vấn đề khó giải quyết thành những phần nhỏ hơn, dễ điều khiển, tổng hợp đưa ra ước tính thỏa đáng cho toàn bộ: "Tôi không thể kiểm tra mọi thứ, nhưng tôi có thể kiểm tra điều này , cái này và cái này - và thế là đủ. " Tôi không tìm kiếm một cách tiếp cận "có thể chứng minh chính xác", mà là một cách tiếp cận thận trọng , với những hạn chế về ngân sách / thời gian trong thế giới thực.
(Tôi đang sử dụng ví dụ về bản đồ của Google như một thứ gì đó để thu hút các câu trả lời cụ thể nhất có thể.)