Je suis assez nouveau dans l'approche TDD et mes premières expériences disent qu'écrire 1 ligne de code fonctionnel signifie écrire environ 2-3 lignes de code de test. Donc, au cas où je vais écrire 1000 LOC, la base de code entière, y compris les tests, sera quelque chose comme ~ 3500 LOC.
Est-ce considéré comme normal? Quel est le ratio dans le code que vous écrivez?
testing
unit-testing
tdd
metrics
Andrey Agibalov
la source
la source
Réponses:
1: 3 est normal avec TDD.
D'après mon expérience, et aussi d'autres citations dont je me souviens.
la source
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:
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.
la source
Le ratio va varier en fonction de la taille de vos méthodes. La taille de vos méthodes variera selon le style de programmation, le langage et le domaine problématique.
Si vos méthodes sont courtes, 3: 1 est raisonnable. Si vos méthodes sont longues, alors 3: 1 est sur le côté haut.
Donc, pour répondre à votre question, cela dépend. :-)
la source
Pour les applications logicielles critiques, le ratio habituel est d'un jour de test pour 10 LoC fonctionnels.
Et cela ne compte pas TDD qui n'est pas une question de test mais de spécification.
la source
La taille de mon code de test est environ la moitié de ce que le code «réel» est global. Faire autrement indique que vos tests sont trop complexes et / ou votre code est trop difficile à tester et / ou votre code est trop dense / complexe.
Ou vous testez simplement trop et perdez votre temps sur des rendements décroissants.
Voir aussi "quand les tests unitaires sont-ils inappropriés ou inutiles?"
la source
Mon ratio est d'environ 2-1 à 10-1 (code à tester). Assurez-vous que vos tests concernent la valeur / le comportement et non l'implémentation.
la source