(Immagino che questa sarebbe una buona domanda per l'intervista , ma nel mio caso è più pragmatica di così.)
Abbiamo un'applicazione ampia e complessa che modella un processo di reazione chimica estremamente lungo e sofisticato tra decine di componenti chimici. Siamo nella fase di progettazione dei test di accettazione per l'applicazione, ma siamo un po 'scoraggiati dal numero intrattabile di possibili percorsi da testare. Mi è venuto in mente che la nostra situazione è molto simile a quella che il team di sviluppo di Google Maps deve aver dovuto affrontare quando è arrivato il momento di testare l'algoritmo di pianificazione del percorso nella funzione "Ottieni indicazioni stradali". Ovviamente non sono stati in grado di testare (verificare e validare) ogni possibile percorso. Quindi, come hanno avuto la certezza che la loro applicazione avrebbe funzionato in ogni situazione?
E dal momento che non mi aspetto di scoprire come hanno fatto, lascia che ti chieda: come faresti a progettare una suite di test con un'adeguata copertura del codice, per assicurarti che una determinata applicazione sia solida, quando è letteralmente impossibile sondare ogni potenziale percorso attraverso il sistema?
Quello che sto cercando sono i principi che useresti per scomporre un problema intrattabile in pezzi più piccoli e trattabili, la cui somma fornisce una stima soddisfacente del tutto: "Non posso testare tutto, ma posso testarlo , questo e questo - e questo è abbastanza ". Non sto cercando un approccio "dimostrabilmente corretto", ma piuttosto uno che sia prudente , dati i vincoli di budget / tempo del mondo reale.
(Sto usando l'esempio di Google Maps come qualcosa di un foglio per sollecitare risposte il più specifiche possibile.)