2016-11-01 2 views
1

Si un projet réussit les tests dans Ruby 2.0.0-p648 et Ruby 2.3.1, est-il logique de tester également avec des versions telles que 2.1.8 et 2.2.3?Est-il logique de tester avec des versions intermédiaires de Ruby?

Y a-t-il eu des fonctionnalités de langue qui ont fonctionné dans Ruby 2.0 et Ruby 2.3 mais qui ne fonctionnaient pas temporairement ou fonctionnaient différemment, par exemple dans Ruby 2.2?

Répondre

1

Vous devriez tester votre code pour les environnements dans lesquels vous souhaitez l'utiliser. La version en langage Ruby peut varier. Vous pourriez également envisager de tester contre JRuby et Rubinius si votre code est censé le supporter - par exemple. il est fourni comme un joyau public. Logiquement, les tests sur les versions les plus récentes et les plus récentes devraient couvrir la plupart des scénarios de défaillance en ce qui concerne les fonctionnalités de langage (bien que pas nécessairement tous les bogues de langue puisque de nouveaux peuvent être introduits). Pour autant que je sache, aucune fonction de Ruby n'a été délibérément ajoutée ou supprimée dans une version, et cette décision a été annulée dans une version ultérieure. Sauf: peut-être dans votre code de production, vous êtes en train de détecter l'existence d'une fonctionnalité et ensuite d'utiliser la fonctionnalité dans son intégralité - auquel cas une version intermédiaire de Ruby qui a la fonctionnalité mais pas dans son dernier état peut échouer.

Il peut y avoir d'autres mises en garde, et philosophiquement, lorsque vous commencez à tester vous voulez éviter trop de logique "cela devrait fonctionner parce que ...". en pensant. Le point de test est de démontrer que votre code n'échoue pas de la façon dont vous avez couvert (bien, il y a plus de profondeur que cela, mais la réponse serait beaucoup trop longue si elle plongeait dans les philosophies de test). Si vous voulez déclarer "fonctionne dans toutes les versions de Ruby MRI de 2.0.0 à 2.3.1", vous vous sentirez plus à l'aise de faire cette déclaration si vous l'avez réellement testé. En fait, lorsque je fais une telle déclaration dans un lieu public, je dirais simplement quelque chose de plus proche du fait brut - "testé dans les versions 2.0.0, 2.1.4 et 2.3.1".

Évidemment, il y a des rendements décroissants. Si vous n'avez aucun problème en 2.1.9, il est très peu probable que vous ayez un problème en 2.1.10 - à un certain moment, il vous en coûtera plus cher de vérifier chaque variation mineure, même juste pour voir les résultats du test, que le bénéfice de couverture supplémentaire.

La réponse habituelle à ce problème est de tester autant de variantes que votre environnement de test automatisé peut gérer et vous pouvez être dérangé pour installer et maintenir. Si vous utilisez plusieurs versions de Ruby en parallèle par votre fournisseur de services de test, p. vous utilisez Travis - alors il est relativement peu coûteux de tester plusieurs versions. Donc, vous pouvez aussi bien couvrir les variations de l'environnement que vous vous attendez à voir «dans la nature», comme vous pouvez le voir.