J'envisage d'écrire un pilote de bas niveau ou des composants / noyaux de système d'exploitation.
Les gens d' osdev.org semblent penser que les éléments importants ne sont pas significativement testables de cette façon, mais j'ai lu quelques discussions où les gens pensaient différemment. J'ai regardé autour de moi, mais je n'ai pas trouvé d'exemples réels de TDD sur des composants de bas niveau.
Est-ce quelque chose que les gens font réellement, ou simplement quelque chose dont les gens parlent en théorie parce qu'il n'y a pas une bonne façon de le faire dans la pratique?
Réponses:
Si vous interagissez avec ou contrôlez du matériel, il est difficile de le tester sans lui. Vous pouvez essayer d'émuler le matériel, mais c'est souvent plus difficile que d'écrire le pilote en premier lieu, donc vous finissez par ne pas savoir si le bogue est dans votre pilote ou votre émulateur.
la source
Personnellement, j'ai tendance à croire que l'on peut bénéficier de nombreux avantages du TDD (sans réellement adhérer au TDD), en:
TDD semble vous obliger à avoir une compréhension assez claire de la fonction que vous prévoyez d' implémenter ou des exigences que vous prévoyez de satisfaire en implémentant le code. Dans certaines situations, la compréhension du problème est tout simplement insuffisante. Cela aurait nécessité une solution Spike . Dans le cadre de cette solution Spike, TDD peut être appliqué car le problème a été réduit à un niveau gérable. Une fois que quelques pics ont été terminés, chacun couvrant certains aspects du problème d'origine, on peut commencer à travailler sur la solution complète, et appliquer TDD à ce stade pourrait être faisable en raison de la compréhension améliorée.
Édité:
Après avoir lu la page plus attentivement,
Ils disent clairement que la plupart des pièces sont testables et que certaines pièces nécessitent un type de test différent: le test de résistance .
la source
Je ne. Dans le code intégré de mon maître, j'écris simplement le code et je passe mon temps à réfléchir à ce qu'il fait (et ce qu'il ne fait pas). Je ne suis pas sûr que cela puisse être fait dans mon cas de toute façon, je me rapproche étrangement de la limite physique de la mémoire sans injecter de code de test.
Je pense que pour les systèmes suffisamment volumineux (c'est-à-dire disposant de Mo de mémoire, pas de Ko), cela peut être fait pour certains composants si vous avez suffisamment de temps et d'efforts. Tester le code de lecture des broches en se moquant des broches n'est ... euh ... pas très significatif. Si vous avez suffisamment séparé votre logique, vous pouvez tester la logique ailleurs.
FWIW, je n'achète pas TDD dans le cas général - cela fonctionne très bien pour les piles système qui sont assez grandes avec suffisamment de ressources avec un comportement déterministe suffisant, en dehors de cela, cela ne semble pas une pratique raisonnable.
la source