Nous écrire des tests pour vérifier l'exactitude d'un programme de comportement.
Vérification de l'exactitude d'un programme de comportement en inspectant le contenu de la production des déclarations à l'aide de vos yeux est un manuel, ou plus précisément, un visuel processus.
On pourrait dire que l'
l'inspection visuelle des œuvres, je vérifie que le code fait ce qu'il doit à
faire, pour ces scénarios, et une fois que je peux voir, c'est correct, nous sommes bons pour
aller.
Maintenant, tout d'abord, c'est formidable que vous êtes intéressé à savoir si ou non le code fonctionne correctement. C'est une bonne chose. Vous êtes en avance de la courbe! Malheureusement, il y a des problèmes avec cette approche.
Le premier problème avec l'inspection visuelle, c'est que vous êtes un mauvais soudage accident à l'extérieur de ne jamais être en mesure de vérifier votre code de la justesse de nouveau.
Le deuxième problème est que la paire d'yeux utilisée est étroitement couplé avec le cerveau de la propriétaire de la yeux. Si l'auteur du code détient également les yeux utilisé dans l'inspection visuelle du processus, le processus de vérification de l'exactitude a une dépendance sur les connaissances sur le programme intériorisée dans le visuel de l'inspecteur du cerveau.
Il est difficile pour une nouvelle paire d'yeux à venir et de vérifier l'exactitude du code, simplement parce qu'ils ne sont pas associés avec le cerveau de l'original codeur. Le propriétaire de la deuxième paire d'yeux auront à converser avec l'auteur original du code, afin de bien comprendre le code en question. Conversation comme un moyen de partage de la connaissance est notoirement peu fiables. Un point qui est discutable si le Codeur est pas disponible pour la nouvelle paire d'yeux. En l'occurrence la nouvelle paire de yeux a lire le code d'origine.
En lisant d'autres personnes de code qui n'est pas couvert par les tests unitaires est plus difficile que la lecture de code qui est associé à des tests unitaires. Au mieux, en lisant d'autres peuples code est le travail délicat, au pire c'est le plus turgescents tâche dans l'ingénierie du logiciel. Il ya une raison que les employeurs, lors de la publication des offres d'emploi, de stress qu'un projet est un nouveau (ou nouvelle marque). L'écriture de code à partir de zéro est plus simple que de modifier le code existant et, de ce fait, le poste à pourvoir apparaître plus attrayant pour les employés.
Avec les tests unitaires nous diviser le code en fonction de ses composantes. Pour chaque composante, nous avons ensuite défini notre stand indiquant comment le programme doit se comporter. Chaque unité de test raconte une histoire de la façon dont cette partie du programme doit agir dans un scénario spécifique. Chaque unité de test est comme une clause dans un contrat qui décrit ce qui doit arriver du code de client du point de vue.
Ensuite, cela signifie qu'une nouvelle paire de yeux a deux brins de vivre et précise de la documentation sur le code en question.
Ils ont d'abord le code lui-même, la mise en œuvre, la façon dont le code a été fait; deuxièmement, ils ont toutes les connaissances que l'original codeur décrit dans une série de déclarations officielles qui racontent l'histoire de la façon dont ce code est censé se comporter.
Les tests unitaires de capture et de décrire formellement les connaissances que l'auteur original possédait quand ils ont mis la classe. Fournir une description de la façon dont cette classe se comporte lorsqu'il est utilisé par un client.
Vous avez raison de s'interroger sur l'utilité de faire cela parce qu'il est possible d'écrire des tests unitaires qui sont inutiles, ne couvrent pas tout le code en question, devenue obsolète ou hors de date et ainsi de suite. Comment nous assurer que les tests unitaires non seulement imite, mais améliore le processus de compétent, consciencieux auteur inspecter visuellement leur code de sortie instructions au moment de l'exécution? Écrire le test de l'unité d'abord, puis d'écrire le code pour faire ce test. Lorsque vous avez terminé, laissez les ordinateurs exécutent les tests, ils sont rapides, ils sont grands à faire des tâches répétitives, ils sont parfaitement adaptés pour le travail.
Assurer la qualité des tests en examinant chaque fois que vous touchez désactiver le code de test et exécuter les tests pour chaque construction. Si un test échoue, le corriger immédiatement.
Nous automatiser le processus de l'exécution de tests, de sorte qu'ils sont à exécuter à chaque fois que nous faisons un build du projet. Nous avons également automatiser la génération de rapports de couverture de code que les détails quel est le pourcentage de code qui est couvert et exercé par des tests. Nous nous efforçons d'atteindre des pourcentages élevés. Certaines sociétés de prévenir les changements de code de contrôle pour le contrôle de code source si elles n'ont pas suffisamment de tests unitaires écrits pour décrire les changements dans le comportement du code. Généralement, une deuxième paire d'yeux examinera les changements de code en conjonction avec l'auteur de la modification. L'examinateur va passer par les changements s'assurer que les changements compréhensible et suffisamment couverts par des tests. De sorte que le processus d'examen est manuel, mais lorsque les tests (tests unitaires et d'intégration et, éventuellement, user acceptance tests) passer ce manuel processus d'examen, deviennent partie intégrante du processus de construction automatique. Ces actions sont exécutées chaque fois qu'une modification est activée dans. Un continu-l'intégration de serveur s'acquitte de cette tâche en tant que partie du processus de construction.
Les Tests qui sont automatiquement exploiter, de maintenir l'intégrité du code du comportement et aider à prévenir de futures modifications de la base de code de casser le code.
Enfin, fournir des tests permet d'être agressive re-facteur de code parce que vous pouvez faire de gros code des améliorations en toute sécurité en sachant que vos modifications ne cassent pas les tests existants.
Il y a une mise en garde de Développement Piloté par les tests , et c'est que vous devez écrire du code en vue de la rendre testable. Cela comprend le codage des interfaces et des cours à l'aide de techniques telles que l'Injection de Dépendance pour instancier la collaboration des objets. Découvrez le travail de Kent Beck qui décrit TDD très bien. Regarder le codage des interfaces et de l'étude et de la conception des modèles