Joël question a été quelque chose comme cela. Supposons que vous vouliez définir un peu, quelque part, qui a entraîné une faible résolution de l'image à afficher plutôt que d'une image de haute résolution. Comment voulez-vous utiliser TDD à obtenir que cela fonctionne? Voulez-vous écrire un test qui s'est grattée l'écran pour indiquer que l'image était en basse résolution?
Bien sûr que non. Vous savez déjà que la bibliothèque JPEG fonctionne. Vous savez déjà que si vous l'appelez, avec les bons arguments, il affiche en basse résolution. Ce que vous avez besoin de tester, c'est que le peu que vous définissez se traduit dans les appels appropriés à la bibliothèque JPEG. Afin de vous moquer de la bibliothèque JPEG avec un module très simple contrôlé par votre test. Ensuite, vous définissez le bit, et demande l'affichage. La Moqué JPEG bibliothèque rappelez-vous comment il a été appelé, et le test à vérifier pour être sûr qu'elle a été appelée correctement.
OK, alors comment voulez-vous tester le fonctionnement interne de la bibliothèque JPEG? Je ne sais pas beaucoup sur les JPEG de rendu, mais je présume que c'est à propos de la compression, de décompression et de bitmaps. La Compression et la décompression sont juste des algorithmes. Les algorithmes de sorties prévisibles à partir des entrées. Si vous configurez une série très simples d'entrées et assurez-vous d'obtenir les sorties prévisibles. Vous configurez les entrées de sorte que le fonctionnement interne de l'JPEG algorithmes sont couverts. La même logique vaut pour les images. Vous n'avez pas à le faire sur l'écran. Simple petit bitmaps peuvent être rendus dans la mémoire tampon que les tests peuvent examiner. En simple, je veux dire SIMPLE. 3X3, 5X5, 8X8. Simple. Encore une fois, la structure de vos données d'entrée pour couvrir la majeure partie du code.
Rien de tout cela est la science de fusée. Aucun, si elle est parfaite. Mais une suite de 50 tests qui montre que 90% de votre logique est correcte peut faire une énorme différence lorsque vous souhaitez apporter des modifications.
Pouvez-vous jamais complètement éliminer le manuel de tests? Bien sûr que non. Mais vous pouvez de manière significative à l'atténuer. Vous pouvez réduire les tests manuels à quelques très stratégique tests plutôt que de milliers de douloureusement fastidieux plans de test.