Il y a quelques semaines, j'ai commencé mon premier projet avec TDD. Jusqu'à maintenant, je n'ai lu qu'un livre à ce sujet.Comment développer des méthodes complexes avec TDD
Ma principale préoccupation: Comment écrire des tests pour des méthodes/classes complexes. J'ai écrit un cours qui calcule une distribution binomiale. Ainsi, une méthode de cette classe prend n, k, et p comme entrée, et calcule le resp. probabilité. (En fait, c'est un peu plus, c'est pourquoi je devais écrire moi-même, mais restons collés à cette description de la classe, pour faciliter l'argument.)
Ce que j'ai fait pour tester cette méthode est: copier tables avec différents n j'ai trouvé dans le web dans mon code, en choisissant au hasard une entrée dans cette table, nourri le resp. valeurs pour n, k et p dans ma fonction, et a regardé si le résultat était proche de la valeur dans la table. Je répète cela un certain nombre de fois pour chaque table.
Tout cela fonctionne bien maintenant, mais après avoir écrit le test, j'ai dû mettre en réserve pendant quelques heures pour vraiment coder la fonctionnalité. En lisant le livre, j'ai eu l'impression que je ne devrais pas coder plus de quelques minutes, jusqu'à ce que le test redevienne vert. Qu'est-ce que j'ai fait de mal ici? Bien sûr, j'ai cassé cette tâche dans beaucoup de méthodes, mais elles sont toutes privées.
Une question connexe: Était-ce une mauvaise idée de choisir aléatoirement des nombres de la table? En cas d'erreur, je vais afficher la graine aléatoire utilisée par cette série, afin que je puisse reproduire le bug.
"J'ai eu l'impression que je ne devrais pas coder plus de quelques minutes, jusqu'à ce que le test redevienne vert." Où - spécifiquement - avez-vous eu cette impression? S'il vous plaît fournir le devis ou la référence. C'est rarement vrai, et je suis curieux de savoir où vous avez lu/vu/entendu cela. –
Il était dans un livre allemand, "Testegetriebene Entwicklung mit JUnit & FIT", par Frank Westphal, 1ère édition. Par exemple. à la page 13, les deux premières phrases. – matthias
Et comme vous n'avez probablement pas accès au livre, j'essaie une traduction: "L'interactivité entre le développement piloté par les tests et la conception simple se traduit par une boucle de codage par minute. juste quelques minutes, sans fermer la boucle de retour au moyen de tests. " (Eh bien, j'aborde les limites de mon anglais ici, j'espère que cette traduction est correcte.) – matthias