(Я думаю, це було б гарним питанням інтерв'ю , але в моєму випадку це більш прагматично, ніж це.)
У нас є велике і складне застосування, яке моделює надзвичайно довгий і складний процес хімічної реакції між десятками хімічних компонентів. Ми перебуваємо на стадії розробки Тестів на прийняття програми, але нас дещо переслідує непереборна кількість можливих шляхів для тестування. Мені прийшло в голову, що наша ситуація дуже схожа на те, з чим, напевно, зіткнулася команда розробників Google Maps, коли прийшов час перевірити алгоритм планування маршруту в їх функції «Отримати вказівки». Очевидно, вони не змогли перевірити (перевірити і підтвердити) кожен можливий маршрут. То як вони здобули впевненість у тому, що їх застосування буде працювати у будь-якій ситуації?
А оскільки я не сподіваюся дізнатися, як вони це зробили, дозвольте запитати вас: як би ви вирішили розробити тестовий набір з адекватним покриттям коду, щоб переконатись у тому, що дана програма є надійною - коли це буквально неможливо перевірити кожен потенційний шлях через систему?
Що я шукаю - це принципи, які ви б використали, щоб розбити нерозв'язну проблему на більш дрібні, простежувані фрагменти, сума яких дає задовільну оцінку всього: "Я не можу перевірити все, але можу перевірити це , це і це - і цього достатньо ». Я не шукаю підходу, який є "вірно правильним", а раціональнішого , враховуючи обмеження бюджету / часу в реальному світі.
(Я використовую приклад карт Google як щось із фольги, щоб вимагати відповіді, максимально конкретні.)