Nous avons un site multilingue dans lequel un bug a été découvert il y a quelques jours. Il affichait d'autres données linguistiques dans une autre langue et le mélange de données comme la langue anglaise était également sélectionné, mais il affichait également des données d'autres langues dans la page et vice-versa. Il le fait rarement mais est présent sur le site Web. Parcourir le code n'aide pas non plus, car cela ne se produit pas toujours.
Une suggestion pour trouver le problème en temps opportun? Je demande des stratégies ici.
web-development
testing
bug
maz3tt
la source
la source
Réponses:
La première étape consiste à essayer de caractériser ce qui peut provoquer ce type de problème. Comme cela est lié à la sélection de la langue appropriée pour les sections du code, commencez par considérer les éléments suivants:
Maintenant, une fois que vous avez caractérisé les possibilités de ce qui peut mal tourner, il est temps de vous assurer que vous disposez des données dont vous avez besoin pour essayer de découvrir ce qui a mal tourné.
Enfin, une fois que vous avez réduit le problème au point où vous savez comment le reproduire et ce qui en est la cause, écrivez le plus petit test automatisé possible pour forcer le problème dans le code. Si vous avez limité le problème à une classe ou à une paire de classes qui ne fonctionnent pas correctement, reproduisez-le à ce niveau. Vous ne devriez pas avoir à générer 100 threads pour le faire, faites simplement le plus petit test qui peut provoquer le problème à 100% du temps.
Vous pouvez maintenant le réparer et être raisonnablement sûr qu'il ne reviendra pas vous mordre à nouveau.
la source
Le bug n'est pas irréproductible. Vous n'avez tout simplement pas encore découvert comment le reproduire.
Aucun bogue n'est aléatoire, à moins que vous ne lançiez une exception basée sur la valeur de retour d'une instruction Random ().
Je sais que cela peut sembler sémantique, mais c'est rassurant mentalement de se le dire.
Il est très difficile et frustrant de savoir comment reprocher un bug qui ne se produit qu'en raison de conditions de course complexes ou autres.
Quant à savoir comment le trouver, j'activerais / ajouterais une journalisation à l'application dans des endroits qui pourraient vous donner plus d'informations.
Dites ensuite aux personnes qui voient le bogue (qu'il s'agisse de développeurs, d'AQ, d'utilisateurs finaux) de signaler dès qu'ils le voient l'heure à laquelle il s'est produit, puis consultez vos journaux. Demandez-leur d'autres informations ainsi que le bug ne peut se produire qu'en raison de l'interaction de plusieurs systèmes différents ou en raison d'une condition de concurrence
J'espère que vous pourrez trouver une piste.
la source
Vous pouvez essayer de trouver des endroits dans votre code où vous pouvez reconnaître que le problème est survenu (paramètres incohérents dans une méthode par exemple), ajouter les vérifications à votre code et les laisser ajouter des informations supplémentaires au journal de débogage (comme une trace de pile, des objets ajouté à la session, etc.)
En faisant cela avec un peu de chance, vous pouvez capturer des informations sur les événements et déduire votre chemin vers le problème.
la source
L'automatisation devrait aider, si ce sont les mêmes étapes pour reproduire qui échouent parfois, automatiser cela et le mettre en boucle. Exécutez 50 000 fois et il est très probable que cela se produise.
la source
essayez de trouver des modèles pour identifier les conditions qui provoquent ce problème. Cela devrait vous diriger vers les sections de votre code qui échouent (ou se comportent de manière incohérente).
la source
Pouvez-vous détecter le moment où le problème se produit? Si oui, pouvez-vous vider de manière fiable des informations sur l'état du système à ce stade?
Si la réponse à ces deux questions est oui, instrumentez votre code pour enregistrer autant d'informations que possible lorsque l'erreur se produit réellement, puis attendez.
Ce n'est pas un remplacement de ce que d'autres ont suggéré (vous devrez toujours expliquer comment le code peut entrer dans l'état que vous voyez), mais tant que vous ne pouvez pas reproduire le bogue à volonté, c'est une bonne idée de ne pas perdre les occasions où cela apparaît.
la source