Je développe un programme utilisant une bibliothèque faite par un autre programmeur (il travaille dans la même entreprise). Récemment, j'ai découvert une fuite dans la bibliothèque, qui se produit sous certaines conditions de réseau après quelques heures de course à pied. J'ai déposé un bogue avec une description des conditions pour que cette fuite se produise. Ce développeur a répondu que "cela ne suffit pas", "Il n'est pas de sa responsabilité de reproduire des bugs" et je dois créer un test d'unité pour reproduire ce bogue, sinon il ne fait rien.
Est-ce qu'il a raison est probablement une question qui ne peut pas vraiment être répondu sans connaître votre entreprise. Cependant, il n'est certainement pas très utile.
Je voudrais soulever le bug avec lui (que vous avez fait), si cela provoque un problème avec votre projet, je l'élever en tant que bloqueur avec votre chef de projet et que vous précisiez très clairement que vous avez soulevé le bogue avec approprié personne, mais cela va avoir une incidence sur votre projet s'il n'est pas corrigé rapidement.
Je voudrais également parler au développeur et expliquera pourquoi il est infaisable de créer des tests unitaires, mais que vous seriez heureux de lui montrer sur votre machine (en supposant que cela soit réalisable?).
Il est à 100% de droit que vous devez fournir suffisamment d'informations pour rendre le bug reproductible - sinon il n'y a aucune chance de savoir si une solution qu'il fournit sera vraiment fonctionner.
Mais - il est imho à 100% de sorte que cela doit être sous la forme d'un test d'unité. Si vous pouvez décrire un scénario de test de manière à ce qu'il puisse reproduire l'échec (au moins avec une probabilité élevée dans une durée raisonnable, ou par des tests manuels), vous avez une preuve que le problème existe - ce qui devrait définir votre collègue. dans la responsabilité de le réparer. Bien sûr, si vous êtes capable de créer un scénario qui reproduit le bogue plus rapidement, cela serait utile pour lui. Idéalement, on créerait un test automatisé de cela, et cela dépend de votre organisation qui en a la responsabilité de cela.
Les deux côtés devraient mettre des efforts.
Le développeur de bibliothèque doit mettre des efforts supplémentaires, même sans tests unitaires, car certains problèmes ne peuvent être reproduits avec des tests unitaires. Parfois, c'est du matériel, il s'agit parfois d'une séquence spécifique de correcte Actions du reste du programme qui rend la bibliothèque produisant de mauvais résultats.
Vous devriez mettre des efforts supplémentaires, car après tout cela, je ne suis pas un bogue dans la bibliothèque, mais le résultat de incorrects Actions du reste du programme (par exemple, le tas corrompu peut rendre n'importe quelle bibliothèque se comporter étrangement). Il est donc logique de réduire autant que possible code non-bibliothèque impliqué dans la reproduction de bugs. Et vous le ferez probablement plus rapidement et plus propre qu'une personne inconnue avec le code de votre application.
Si l'auteur de la bibliothèque est incapable de reproduire le bogue en fonction de votre rapport, alors il est déraisonnable de s'attendre à ce qu'il passe beaucoup de temps dessus, sans parler de le réparer.
Mais vous avez également une durée limitée de temps de travail sur un produit périphérique à votre intérêt. Malheureusement, cela peut signifier que le bogue continue d'exister et qu'aucun travail n'est effectué pour le résoudre.
Heureusement, ce n'est pas nécessairement une catastrophe - tandis que dans un monde idéal, tous les logiciels seraient libres de bugs, ce qui n'est pas le cas, et nous devons donc donner la priorité à la priorité sur la base des problèmes que cela nous causent.
Cela signifie qu'il est en effet de votre responsabilité de développer un cas de test reproductible si vous le souhaitez réparer. Vous ne vous soucierez peut-être pas si cela est corrigé et, dans ce cas, vous avez tout fait de tout ce qui peut et devrait être attendu de vous. Vous voudrez peut-être que cela soit réparé, mais pas assez pour consacrer du temps à le rendre reproductible à ce moment-là. C'est parfaitement acceptable.
Signaler un bug au mieux de vos capacités dans le temps que vous devez faire face, c'est simplement une bonne citoyenneté, vous n'avez pas besoin d'aller au-delà de cela à moins que cela soit nécessaire pour votre programme. Et vous ne voudrez peut-être pas le faire, même là-bas, il peut y avoir une autre bibliothèque que vous pourriez utiliser, sinon il peut être possible de rouler le vôtre dans une période raisonnable. Fondamentalement, c'est à vous de décider quoi et quel type d'effort cela vaut pour vous.
Je serais enclin à laisser les chiens endormis se coucher pour l'instant - vous avez soulevé la question et cela lui est attribué. Vraisemblablement, il existe des processus en place pour suivre les bugs exceptionnels et les poursuivre en hausse?
Si vous souhaitez progresser activement cela plus loin, je suggérerais de parler à votre responsable de voir s'il existe des outils de test disponibles pour reproduire de manière fiable la question.
Du côté du développeur - il serait sérieusement inerte de ne rien faire étant donné que vous avez fourni les informations requises. Il peut toutefois être possible qu'ils disposent d'une charge de travail massive, donc ne peut donc pas consacrer le temps requis pour suivre le problème.
Souvent, ce que j'ai rencontré dans des situations similaires, c'est une hypothèse que tous les bugs devraient être réparés et que c'est admirable, c'est certainement un grand objectif d'avoir (laisse la faire face à ce que nous n'avons jamais décidé d'écrire des bugs!) Il est finalement irréaliste dans Tout projet de taille décente pour corriger un bug juste parce que c'est un bug (si vous pouvez le trouver!) C'est pourquoi nous avons la gestion de projet et les méthodologies de codage, des modèles et des pratiques, etc.
Donc, une chose que je dirais dans la défense du propriétaire de la bibliothèque (et que j'ai eu le cas lorsque j'ai travaillé sur de grands projets) est que le temps de développement coûte de l'argent et est une ressource finie de sorte que la décision de la manière dont un rapport est traité. , qui enquête, quels tests sont produits/nécessaires et finalement si (et si oui, lorsque) une solution est mise en place repose uniquement sur l'impact des entreprises. Quel est l'impact du redémarrage de votre processus de course à long terme une fois de temps en temps s'il échoue et que vous pouvez l'automatiser facilement (et peut-être que vous ne devriez peut-être pas être déjà comme une mesure de programmation défensive?) Est-ce juste l'heure ou y y a-t-il de plus? ?
Regardez également de leur point de vue, un rapport de bogue d'un utilisateur d'un problème imprévisible dans un peu de code qui se produit très rarement, uniquement en conjonction avec leur code, éventuellement uniquement sur une machine et uniquement sous un ensemble de timing inhabituel. Les conditions n'auront tout simplement pas une forte justification d'une grande partie de Dev Time pour trouver et réparer - si c'est même possible. Mais si c'est une analyse de rentabilisation suffisante pour cet utilisateur de vouloir/besoin de prendre le temps d'enquêter plus approfondi et de fournir un cas de test/une application de test fiable ou une description de problème radicalement plus détaillée que leur initiale, il pourrait s'agir d'un autre ballon. .
C'est peut-être une question de communication que le propriétaire de la bibliothèque n'a pas envisagé de la mettre de cette façon et si vous avez une analyse de rentabilisation forte (telle que votre code est coûteux pour l'entreprise, a une exigence de conformité légale, un trou de sécurité ou certains Autre effet de frappe majeur) alors il est temps de commencer à la gestion et laissez-les combattre.