Esistono variazioni basate su diversi stili e linguaggi di codifica. Tuttavia, indipendentemente dalla lingua che usi, la più grande variazione sei tu.
Robert Martin ha detto una volta:
“As the tests get more specific, the code gets more generic.”
Questo mi ha fatto pensare. Test più specifici significano più codice di test. Un codice di produzione più generico significa meno codice, quindi i rapporti test / codice dovrebbero aumentare man mano che il codice si evolve.
Ma aspetta, non va bene neanche questo. In alcuni casi particolari, ad esempio quando definisci un determinato algoritmo, puoi avere solo 6-10 righe di codice contenenti un paio di "se", un po 'e forse 2-3 ricorsioni. Posso dirti che il codice avrà probabilmente più di 100 righe di codice di test.
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 refactored o cancellati (o magari un codice che è difficile da testare). Dovresti sempre investire la stessa quantità di assistenza e refactoring nei test come nel tuo codice di produzione.
In ogni caso, la migliore risposta alla tua domanda potrebbe essere "Cyclomatic Complexity" . Maggiore è la complessità ciclomatica del tuo metodo, il test esponenzialmente più devi scrivere per coprire tutti i casi.