Esistono variazioni basate su stili e lingue di codifica diversi. Tuttavia, indipendentemente dalla lingua che usi, la più grande variazione sei tu.
Robert Martin una volta disse:
"Man mano che i test diventano più specifici, il codice diventa più generico."
Questo mi ha fatto pensare. Test più specifici significano più codice di test. Codice di produzione più generico significa meno codice, quindi i rapporti test / codice dovrebbero aumentare man mano che il codice si evolve.
Ma aspetta, neanche questo va bene. In alcuni casi particolari, ad esempio quando definisci un certo algoritmo, potresti avere solo 6-10 righe di codice contenenti un paio di "if", un po 'e forse 2-3 ricorsioni. Posso dirti che quel codice avrà probabilmente più di 100 righe di codice di prova.
In un progetto reale, qualcosa di più grande di pochi algoritmi, il rapporto test / codice dovrebbe essere compreso tra 1: 1 e 2: 1. Se supera 2: 1, è un odore che tu abbia dei test che dovrebbero essere rifattorizzati o cancellati (o forse un codice che è difficile da testare). Dovresti sempre investire la stessa quantità di cura e refactoring nei tuoi test come nel tuo codice di produzione.
Ad ogni modo, la migliore risposta alla tua domanda è forse "Complessità ciclomatica" . Maggiore è la complessità ciclomatica del metodo, più esponenzialmente è il test che devi scrivere per coprire tutti i casi.