Simplifier mon travail, je veux migrer de Python 2.7.6 en Python 2.7.9 / 2.7.10. P>
Je dois justifier que mon python 2.7.10 ne brisera pas mon logiciel "Travailler" avec Python 2.7.6 P>
J'ai suivi les étapes décrivent dans portage Python 2 à Python 3 p>
Je ne peux pas être sûr à 100% que mon code ne se casse pas, mais comment puis-je être confiant? p>
Par exemple, devrais-je devoir regarder tous les bugs existe-t-il une meilleure stratégie? P>
La couverture de code 100% est une bonne solution, mais elle
3 Réponses :
C'est une mise à jour de python très mineure que la certitude presque ne brisera rien, même la migration de Sans les étapes mentionnées ci-dessus (Python 2 à Python 3, est une question différente). P>
Quant à le prouver, eh bien, pas de quantité de vérification statique et de lecture des notes de publication avec une aide, car tout ce qu'il vous dira, est-ce presque certainement compatible en retard (qui est la supposition initiale de toute façon). P >
Une approche possible serait de reproduire votre environnement de production avec Python 2.7.10 dans une machine virtuelle (Valgrind, etc. peut y aider) et vérifiez si tout fonctionne comme prévu. Aucun moyen de le faire fonctionner pour être 100% sûr. p>
La couverture croissante est une bonne idée. Par lui-même, même une couverture complète avec Python 2.7.6, ne vous dit pas si cela se brisera avec Python 2.7.10 ou non. P>
100% est bon, mais il peut être plus difficile d'obtenir une couverture de 50% + 100% de code à l'aide de méthodes modifiées entre 2.7.6 et 2.7.10 sont testées?
Ma réponse ne s'applique pas uniquement à Python, mais au développement de logiciels en général. P>
Tout d'abord, comme une personne déjà déclarée, Python 2.7.10 est "juste" En outre, avoir une couverture à 100% est techniquement pas toujours possible - 90-95% est généralement la voie à suivre. Et si cela ne suffit pas, vous pourriez essayer différents scénarios sur un environnement local comme suggéré par RTH. P>
Cependant, envisagez de passer à travers vos bibliothèques / modules importés et vérifiez s'ils supportent tous Python 2.7.10. Sinon, cela ne signifie pas que votre projet ne fonctionnera pas, mais cela pourrait arriver que si vous utilisez des bibliothèques C de faible niveau C, elles pourraient être prudentes, alors faites attention particulièrement. P>
En général, je vous suggère de passer par Les modifications a > et à travers les bibliothèques importées. L'ajout de couverture est toujours bon - pas seulement pour mettre à jour une nouvelle version - je rejoint donc d'autres utilisateurs en disant que vous devriez absolument augmenter votre couverture. P>
Comme indiqué dans le Dev-cycle Présentation: P>
Pour clarifier la terminologie, Python utilise une nomenclature major.minor.micro pour les versions prêtes à la production. Donc pour Python 3.1.2 Finale, c'est un version principale de 3, une version mineure de 1 et une version micro de 2. P>
- De nouvelles versions majeures sont exceptionnelles; ils ne viennent que lorsque des changements fortement incompatibles sont jugés nécessaires et sont planifiés très longtemps à l'avance; li>
- De nouvelles versions mineures sont des communiqués de fonctionnalités; Ils sont relâchés à peu près tous les 18 mois, de la branche actuelle en développement; Li>
- De nouvelles micro-versions sont des versions de bugfix; Ils sont relâchés à peu près tous les 6 mois, bien qu'ils puissent venir plus souvent si nécessaire; elles ou ils sont préparés dans les branches de maintenance li> ul> blockQuote>
Cela signifie que la mise à jour d'une version micro em> à une autre ne devrait rien (en théorie) ne rien briser. C'est la même chose pour les les versions mineures em>, qui ne doivent ajouter que des fonctionnalités qui sont compatibles en arrière. P>
Considérant à quel point le python est largement utilisé, vous pouvez être sûr que de nombreux tests sont faits pour que cela soit respecté.
Cependant, il n'y a aucune garantie, mais tout le point de les versions micro em> est la fonction de bugsing, ne pas introduire de nouveaux bugs. P>
Pourquoi ne le dirigez-vous pas et découvrez-vous?
Qui avez-vous besoin de convaincre? Pourquoi 2.7.6. est le statu quo?
Si vous n'avez pas de test, comment pouvez-vous être sûr qu'il n'a pas été brisé pour commencer?
Soyons honnêtes ici: il y a un seuil de taille d'application après quoi vous ne serez jamais sûr à 100% que Toute modification B> ne casse pas l'application. Mais la couverture de test croissante à 100% aidera beaucoup. À côté de ce @jonrsharpe a raison: vous devez l'exécuter et découvrir.
Je suis d'accord avec @peterwood; Si vous n'avez pas la couverture de test (que ce soit sur le nombre de lignes ou sur les fonctionnalités prises en charge) pour être sûr qu'il fonctionne sur 2,7.10, Comment savez-vous que cela fonctionne sur 2,7.6? I>
Bien sûr, cela dépend également de votre application. Par exemple, si vous écrivez un contrôleur pour dire une machine qui calcule une posologie de médicaments, vous devriez vraiment analyser la ligne de code par ligne à éviter, vous savez ... la mort accidentelle. : D BTW: Si vous pensez que c'est un problème abstrait: de telles erreurs ont eu lieu dans l'histoire de la programmation.
@ Tadeusza.kadłubowski Je travaille dans la médecine et je dois suivre les phases de validation. Le changement de python ou de bibliothèques doit passer par un long processus de test. Je dois convaincre mes dirigeants que les dépenses sont justifiées.
@freakish Nous prenons la grande boule de boue d'une autre équipe, qui ne se souciait pas de la qualité et de la testabilité. Mon travail avec mon équipe consiste à augmenter la qualité du code, alors je travaille dur pour augmenter la qualité du code. En raison d'un processus interne étrange est plus difficile. Je dois jongler entre de nouvelles fonctionnalités et améliorer la qualité du code et améliorer mon processus de Dev ops.
Les croyances @peterwood sont fortes, je ne comprends pas vraiment mes croyances de dirigeants. Peut-être que les gestionnaires se protègent avec ces croyances. Mon travail consiste à faire un meilleur logiciel.
Comment changer les versions de Python améliorera-t-elle votre produit ou votre processus? S'il y a un danger de casser le produit, je voudrais voir une raison vraiment justifiable de faire le changement.