Faire un petit changement, le tester, puis «rincer et répéter», est-il une mauvaise habitude?


54

Je suis un programmeur avec plusieurs années d'expérience. J'ai réalisé que j'avais une certaine habitude. Je ne sais pas si c'est vraiment une mauvaise habitude ou non.

Je reçois une liste de tâches à effectuer pour une solution, même de petites tâches, par exemple,

  1. Changer les ressources de ce contrôle utilisateur
  2. Changer la taille d'un autre
  3. Ajouter du HTML et du codage sur un autre contrôle utilisateur

Toutes ces tâches sont petites. Je veux dire, cela peut être fait en 10 minutes, mais j’ai la mauvaise habitude d’apporter de petits changements et de les tester encore et encore dans un navigateur Web . Est-ce une bonne pratique?

Ou devrais-je les exécuter tous en même temps, puis les tester ensemble?

Si c'est vraiment une mauvaise habitude, alors comment puis-je la rectifier, car c'est comme perdre du temps à tester de petits changements à plusieurs reprises?



3
@gnat votre réponse la plus votée est également basée sur l'opinion - programmers.stackexchange.com/questions/154733/… Chaque réponse que j'ai lue donne sa propre opinion, des commentaires?
Mathématiques

2
Ce n'est pas ça. que diriez-vous de votre deuxième réponse la plus votée - programmers.stackexchange.com/questions/159964/… - n’est-ce pas aussi basé sur une opinion?
Mathématiques

7
L'approche ressemble à un développement piloté par les tests: vous créez un test, apportez les modifications nécessaires pour réussir le test, puis exécutez vos tests. Lorsque vous répétez ensuite cette opération pour un deuxième test, votre deuxième série de tests inclut le premier; vous seriez encore et encore à tester pour prouver que cela fonctionne toujours , mais c'est automatisé.
Kevin Hogg

5
Je dirais que le contraire de l'habitude, qui consiste à apporter de nombreux changements et à ne le tester qu'à ce moment-là, est la mauvaise habitude.
Chris B. Behrens

Réponses:


130
  • C'est une bonne pratique.
  • Vous suivez la méthode scientifique.
  • Si vous modifiez plusieurs éléments avant chaque test, leur test sera plus difficile et peut-être peu fiable, car les conditions préalables seront plus difficiles à préparer et les différents changements peuvent interagir les uns avec les autres d'une manière imprévue.
  • Le temps que vous sentez que vous "gaspillez" maintenant, vous retrouverez plus tard dans les étapes d'intégration, de test et de maintenance.
  • Marche à suivre.

9
D'après les informations dont je dispose, pour la programmation d'interface utilisateur, ce n'est pas seulement une bonne pratique, c'est la seule pratique acceptable. C'est pourquoi les éditeurs de logiciels ont créé autant d' What you see is what you getoutils pour les développeurs travaillant avec HTML, CSS, Widget, etc.
InformedA

38

Faire beaucoup de petits changements et tester chacun d'entre eux n'est pas une mauvaise chose. Cela vous permet de voir l'effet de chaque changement. Ainsi, lorsqu'un changement cause un problème, il est beaucoup plus facile de savoir quel changement a provoqué le problème, le plus récent!

Si vous avez une liste de tâches avec 10 éléments et que vous les faites tous en même temps, puis que vous testez la page, puis que vous remarquez que celle-ci est erronée, il peut être plus difficile de savoir quelle modification l'a brisée.

Bien sûr, il est possible de pousser cette approche à l'extrême. L'équilibre est la clé, et cela passe par une meilleure compréhension de ce que vous changez et de la manière dont les changements peuvent se toucher.


18

Votre question comporte deux parties:

  1. devrais-je les exécuter tous une fois, puis les tester ensemble?

    Je suppose que vous utilisez un VCS .
    Et pour suivre les tâches qui ont été effectuées, il est logique de répartir la liste des tâches en une liste de validations : une tâche, une validation .

    Cela facilite la gestion de différentes versions de la base de code actuelle; vous pouvez revenir à un état précédent, sélectionner les modifications que vous souhaitez entrer dans le coffre principal, etc.

    La réponse est claire:

    Non, n'effectuez les modifications qu'une à une - une tâche, une validation .

  2. mais j’ai eu la mauvaise habitude d’apporter de petites modifications et de les tester encore et encore dans un navigateur Web, s’agit-il d’une bonne pratique?

    Il est une bonne pratique de code de test / interface utilisateur quel que soit , mais il est absurde de le faire encore et encore dans le navigateur. Il existe des outils pour le faire automatiquement pour vous ( Selenium, PhantomJS / Casper, ZombieJS )

    La réponse pour ce cas est:

    Oui, il est recommandé de tester le logiciel plus d'une fois, mais utilisez l'automatisation.


2
+1, mais je ne suis pas d'accord avec l'utilisation de l'automatisation. Lorsque je développe une nouvelle fonctionnalité, je teste à la fois manuellement et avec automatisation. Les tests manuels me permettent d’être très certains que les choses se comportent comme je l’attendais. Il est possible d'écrire un test automatisé de manière incorrecte, de le regarder passer et de penser que tout va bien, puis de tester manuellement et de vérifier que quelque chose ne va pas.
Kevin - Réintégrer Monica

Une tâche sur laquelle un commit a le potentiel de faire du journal VCS un désordre incompréhensible pour diverses définitions de "tâche unique"
whatsisname

dépend de la granularité avec laquelle vous définissez la tâche;) ou si vous le souhaitez: un "ticket" une validation / branche. Utiliser git rend cela facile
Thomas Junk

1
Pour approfondir ce que Kevin a dit, je pense que si vous ajoutez une nouvelle fonctionnalité front-end, vous devez toujours la vérifier manuellement (je n'ai pas encore trouvé d'équivalent à TTD pour le travail front-end), mais vous souhaitez également votre automatisation. suite pour vous aider à ne pas briser les fonctionnalités existantes.
Scragar

@cragar oui. L'automatisation est pour le test de régression.
Thomas

6

Pour toute habitude qu'a un développeur, il y a 2 questions principales:

  1. Comment cela influence-t-il la qualité du code que vous créez?
  2. Comment cela influence-t-il votre productivité?

Si la réponse à ces deux questions est "Ça rend mieux", enfilez l'habitude, enseignez-le aux autres!
Si la réponse à l'une est "Mieux" et l'autre "Pire" - c'est un style et vous devez en être conscient. Ce n'est pas toujours applicable, et vous devrez peut-être faire un effort pour le supprimer de temps en temps.
Si la réponse à ces deux questions est "négative", vous avez un problème grave.

Bien sûr, pour les 2 premiers cas, vous devriez également penser à «L’effet positif peut-il être automatisé ou institutionnalisé?». Peut-être vaut-il mieux écrire un test que d'essayer différents navigateurs à chaque fois? (Remarque, je sais que ce n'est pas si facile de tester une bonne mise en page dans le développement web, je ne dis pas que c'est toujours possible ou vaut le temps).

Dans ce cas particulier, il me semble que la qualité est améliorée, la productivité peut être diminuée. Pour les petits changements, c'est probablement un peu mauvais (surtout si les changements sont liés entre eux), pour les plus grands, c'est un peu bon. Tant que vous testez également le résultat final (évitez "chaque module a été testé et fonctionne, donc tout fonctionne également, inutile de le tester!").

Par conséquent - à moins que 90% de votre journée de travail n’apporte de très petits changements - c’est une habitude parfaite. Si votre journée de travail est comme ça, alors vous voudrez peut-être revoir votre style de travail (ou votre lieu de travail).


4

Cela dépend du domaine. Pour la mise en page d'une page Web, cela fonctionnera bien et vous pourrez obtenir un retour immédiat (vous pouvez même le faire directement dans le navigateur!). De même, cela fonctionnerait bien pour tout ce qui ne nécessite pas longtemps d'initialisation. Ceci est préférable car cela réduit votre charge de travail mental et réduit le risque d'erreurs.

Cependant, pour les très gros projets où vous devez compiler le code et où le temps requis est non négligeable (plusieurs minutes), cela peut entraîner beaucoup de temps mort, vous devez donc souvent recourir à:

  • "paralléliser" votre flux de travail (par exemple, travailler sur plusieurs versions simultanément), ou
  • faire autant de choses que possible en une fois, ou
  • créez une petite pièce indépendante sur laquelle vous pourrez travailler et l'intégrer ultérieurement.

(Il y a probablement d'autres moyens aussi.)


+1 pour le faire directement dans le navigateur. Je ferai souvent des modifications CSS directement dans le navigateur comme un prototype du vrai travail que je suis sur le point de faire.
RubberDuck

0

Comme d’autres l’ont dit, ce n’est certainement pas une mauvaise habitude. Je préfère généralement ne faire que quelques modifications à la fois. La seule exception est si j'ai une longue liste de modifications qui n'affectent pas toutes les autres (par exemple, modifications de styles mineurs ou de copie, modifications sur différentes pages, etc.). Si vous modifiez des dispositions, limitez-vous à la modification une par une afin de pouvoir vérifier que tous les navigateurs pris en charge sont intégralement compatibles avant de passer au prochain numéro.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.