Je suis un peu confus qui vaut mieux utiliser le test de débogage ou d'écrire un test d'unité? et est-ce général ou il y a des cas où déboguer mieux que le test unitaire? Ou devrais-je utiliser les deux? P>
merci p>
6 Réponses :
Si vous êtes capable de reproduire le bogue dans l'unité-test, utilisez un test d'unité. Il durera une fois que le bogue est résolu et "protéger" le code à l'avenir contre elle. P>
Si vous avez du mal à trouver le morceau de code fautif, le débogage est probablement une meilleure solution. Mais, au moment où vous savez où le problème - écrivez un test, assurez-vous qu'il échoue, puis corrigez le bogue. P>
Le débogage prend plus de temps et c'est une solution "une fois". Lorsque vous avez la possibilité de tester un appareil,
Le débogage vous aidera à diagnostiquer le code non de travail. P>
Les tests d'unité fournissent les éléments suivants: p>
Vos tests d'unité doivent être exécutés de manière répétée (le plus souvent dans le cadre de votre processus de construction). Si vous les brisez (le plus souvent en raison d'une erreur de programmation), puis em> il est temps de séparer le débogueur pour identifier les problèmes et corriger le code (ou peut-être modifier le test) en conséquence. p>
Le test unitaire est utilisé pour s'assurer que le code fonctionne comme prévu. Le débogage est utilisé lorsque vous devez trouver pourquoi le code ne fonctionne pas comme prévu. P>
+1, le test unitaire exécute simplement le système (en fait i de code de débogage lors d'une analyse de test). Il s'agit à peu près que vous avez tendance à causer moins de défauts avec des tests unitaires afin de pouvoir réparer moins de défauts.
Les tests d'unité de débogage et d'écriture sont deux choses différentes. En théorie, votre développement devrait être piloté par des tests d'unités couvrant les différents scénarios. Vous pouvez déboguer lorsque vous réalisez que quelque chose ne va pas avec votre code et essayez de voir les valeurs de différentes variables en exécution, etc., vous pouvez donc déboguer lorsque quelque chose ne va pas. P>
Une autre perspective: p>
Toujours faire des tests unitaires de tout ce que vous pouvez faire. L'idéal est tester chaque composant isolément, puis effectuez des tests d'intégration des composants collaborateurs. P>
De quoi vous parlez est une question différente: si quelque chose se brise, que devriez-vous faire, allez essayer d'écrire un test d'unité ou d'exécuter le débogueur. Ce ne sont pas vraiment les choix. Si quelque chose se casse et que vous pouvez voir le comportement dans un test unitaire, c'est idéal. Mais vous devez toujours trouver la raison du comportement. Maintenant, vos choix sont entre l'ajout de la journalisation et l'exécution du débogueur, et je vote avec les personnes qui disent utiliser la journalisation jusqu'à ce que vous ne puissiez pas. Le temps de débogueur ajoute une valeur à long terme au code. La journalisation fait. P>
Je pense que cette question peut être examinée de manière plus profonde que certaines des réponses suggérées ... Bien que cela puisse être mieux adapté à l'échange de pile de programmation. P>
D'abord quelques commentaires sur la manière dont le débogage et les tests unitaires interagissent p>
Lorsque quelque chose est suffisamment difficile à déboguer, une approche est de arrêter de débogage em> votre problème et de démarrer des tests de l'unité de tests liés en utilisant des types similaires d'entrée problématique. Vous voudrez peut-être essayer de simplifier l'entrée qui provoque d'abord des problèmes (en supposant que votre système soit déterminissitique!) P> li>
Semblable au point ci-dessus ci-dessus, vous pouvez retracer votre code problématique à travers le système et commencer une impulsion des choses plus bas dans la chaîne d'appel avec une entrée identique P> Li>
ul>
Les tests unitaires peuvent être considérés comme «débogage à l'avance» ou «débogage pessimiste», en supposant que vous allez avoir un bogue alors essayez de le déboguer immédiatement. Si vous le faites lorsque vous avez un problème réel à l'esprit, c'est plus comme deviner qu'il existe un bogue dans une section de code particulière et que vous pouvez l'obtenir en devinant à une entrée brute. P>
Un bon débit pour la résolution de défaute: le client se plaint de problème => Défaut ajouté à Bug Tracker => Dev débogues et reproduces => Dev écrit un test de l'unité qui reproduit => dev obstacles bug => Dev exécute tous les tests de l'unité pour vous assurer que Fix Disk 't briser quelque chose d'autre => (répéter pour quelques défauts) => Libération => Répéter