Il existe des variantes basées sur différents styles de codage et langues. Cependant, quelle que soit la langue que vous utilisez, la plus grande variation est vous.
Robert Martin a dit un jour:
«À mesure que les tests deviennent plus spécifiques, le code devient plus générique.»
Cela m'a fait réfléchir. Des tests plus spécifiques signifient plus de code de test. Un code de production plus générique signifie moins de code, donc les ratios test / code devraient augmenter à mesure que le code évolue.
Mais attendez, ce n'est pas bon non plus. Dans certains cas particuliers, par exemple lorsque vous définissez un certain algorithme, vous pouvez avoir seulement 6-10 lignes de code contenant quelques "si", un moment et peut-être 2-3 récursions. Je peux vous dire que ce code aura probablement plus de 100 lignes de code de test.
Dans un vrai projet, quelque chose de plus grand que quelques algorithmes, le rapport test / code devrait être compris entre 1: 1 et 2: 1. Si elle dépasse 2: 1, c'est une odeur que vous avez des tests qui devraient être refactorisés ou supprimés (ou peut-être du code difficile à tester). Vous devez toujours investir la même quantité de soins et de refactorisation dans vos tests que dans votre code de production.
Quoi qu'il en soit, la meilleure réponse à votre question est peut-être "Complexité cyclomatique" . Plus la complexité cyclomatique de votre méthode est élevée, plus vous devez écrire de manière exponentielle pour qu'elle couvre tous les cas.