(Me imagino que esta sería una buena pregunta para la entrevista , pero en mi caso es más pragmática que eso).
Tenemos una aplicación grande y compleja que modela un proceso de reacción química extremadamente largo y sofisticado entre docenas de componentes químicos. Estamos en la etapa de diseño de las Pruebas de aceptación para la aplicación, pero estamos algo intimidados por la cantidad insoluble de posibles rutas para probar. Se me ocurrió que nuestra situación es muy parecida a la que el equipo de desarrollo de Google Maps debió enfrentar cuando llegó el momento de probar el algoritmo de planificación de ruta en su función "Obtener indicaciones". Obviamente no pudieron probar (verificar y validar) todas las rutas posibles. Entonces, ¿cómo obtuvieron la confianza de que su aplicación funcionaría en cada situación?
Y como no espero descubrir cómo lo hicieron, déjame preguntarte: ¿cómo harías para diseñar un conjunto de pruebas con una cobertura de código adecuada, para asegurarte de que una aplicación determinada es sólida, cuando es literalmente imposible? para sondear cada ruta potencial a través del sistema?
Lo que estoy buscando son los principios que usaría para dividir un problema intratable en piezas más pequeñas y manejables, cuya suma proporciona una estimación satisfactoria del conjunto: "No puedo probar todo, pero puedo probar esto , esto y esto, y eso es suficiente ". No estoy buscando un enfoque que sea "demostrablemente correcto", sino uno que sea prudente , dadas las limitaciones de presupuesto / tiempo del mundo real.
(Estoy usando el ejemplo de Google Maps como una especie de papel de aluminio para solicitar respuestas que sean lo más específicas posible).