La semplice risposta è che dipende dal sistema. Se stai scrivendo un software incorporato per un cardiofrequenzimetro o strumenti di monitoraggio della sicurezza per un reattore nucleare, lo standard è molto più elevato rispetto a quando stai scrivendo una piattaforma di blog.
Questa è davvero una domanda per un buon tester di sistema (e io non lo sono) ma ci proverò.
La tua misura di base sarà la copertura del test: quanta parte dell'applicazione è stata effettivamente testata (sia dal test unitario che dal punto di vista funzionale).
È necessario valutare ogni potenziale caso d'uso (e i parametri per quel caso d'uso) per la probabilità che venga effettivamente utilizzato (quindi è possibile abbandonare i casi limite), la complessità (le cose più semplici hanno meno probabilità di contenere bug o piuttosto hanno meno probabilità di contenere per trovare bug), costo per testare (in termini di tempo) e potenziale impatto di un difetto se scoperto in quella zona (qui entra in gioco il reattore nucleare contro la piattaforma di blog).
Sulla base di tale valutazione, è necessario capire quale di questi verrà testato e in quanti dettagli. Una volta che hai un elenco come quello, il team (incluso un product manager / project manager / rappresentante utente) può passare attraverso tale elenco e stabilire le priorità in base ai vincoli che hai.
Una tecnica utile a cui pensare è che puoi anche variare i casi d'uso testati con ogni versione. Ad esempio, potresti avere un elenco di casi di test non critici e testarne metà con una versione e metà con la successiva (quindi alternata). In questo modo si aumenta la copertura totale del test che si ottiene per lo sforzo (anche se a rischio di introduzione di bug di regressione).
Ciò potrebbe estendersi anche ai test della piattaforma: se si supportano due back-end di database (o più browser), testare metà dell'app su uno, l'altra metà sull'altro e quindi scambiare la versione successiva.
(Penso che questo sia indicato come striping ma non citarmi su questo.)
E quindi l'ultima cosa a cui pensare non è ciò che testate, ma ciò che effettivamente risolvete quando vengono rilevati problemi. È comune dire "correggi tutti i bug", ma la realtà è che ci sono pressioni di tempo e non tutti i bug sono uguali. Ancora una volta, regolari scrub di bug con tutte le parti interessate sono il modo migliore per procedere. Ciò è particolarmente rilevante nei casi in cui una correzione di bug può essere particolarmente invadente in quanto il lavoro aggiuntivo nel test di test e regressione che genera può superare i benefici della correzione.